Multi-Module in GSD-Datein erstellen und Hex-Kodierung der Datentypen

Flummy33

Level-1
Beiträge
9
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo :) ,

möchte in einer original GSD ein Multi-Modul erstellen.
Nach dem Beispiel
Module = "CP5611-Slave" 2xByte,1xDWord,1xByte,1xByte,\
2xByte,1xDWord,1xByte,1xByte,\
4xByte,4xByte
EndModule

Mit Benennung der Submodule. :confused:
z.B. SPS-Steuer(Bytes), Diagnose(Bytes), Seriennummer(DWord)

Suche ebenfals die Bezeichener für Char, dWord.
Habe aus anderen GSD-Datein ermittelt das:
0x3n (n=0-F in Hex anzahl der Einheiten+1)
0x3n Byte E/A [0x1n Input; 0x2n Output];
0x7n Word E/A [0x5n input; 0x6n Output];

Suche noch nach den anderen Kodierungen.
Hätte sie jemand vieleicht.
Danke in voraus :) .
 
Das gleiche möchte ich auch.

Ich habe mir deshalb folgende Beispiele aus den Specs von den GSD Dateien gesucht:

Code:
;Output module byte-organized
Module = "1 Byte DO " 0x20
EndModule
;Input/output module byte-organized
Module = "1 Byte DI/DO " 0x30
EndModule
Module = "2 Byte DI/DO " 0x31
EndModule
Obiger Code weckte in mir die Vermutung:

0x1X = Input; 0x2X = Output; 0x3X = I/O

Und das X die Anzahl der Bytes angibt in der Form: Byteanzahl = X + 1

Wenn ich mir dann jedoch folgendes Beispiel ansehe, werden meine Vermutungen hinfällig - da lediglich das Letzte zu passen scheint:

Code:
;Module selection 1
Module= "selection 1 20Byte I/O PPO type1" 0xF3,0xF3,0xF1
EndModule
;Modul selection 2
Module= "selection 2 16Byte I/O PPO type2" 0xF3,0xF3
EndModule
;Modul selection 3
Module= "selection 3 2Byte I, 7Byte O" 0x11,0x26
EndModule
Das Letzte Module entspricht wieder dem obigen Schema, nicht jedoch die anderen beiden. Ich suche dringend eine Doku wie sich diese Hex-Werte berechnen, ich brauch das für eine Softwareapplikation im Rahmen einer Diplomarbeit.

Vielen Dank
Defa
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Des Rätsels Lösung

Ich habe in den tiefen der Uni-Bibo Dokumetation zum Thema entdeckt:

Code:
HEX  Parameter-Art      Datenformat              Parameterlänge
0x1X Digitaler Eingang, Konsitenz: Byteweise; X+1 Bytes
0x2X Digitaler Ausgang, Konsitenz: Byteweise; X+1 Bytes
0x3X Digitaler I/O,     Konsitenz: Byteweise; X+1 Bytes

0x5X Analoger Eingang, Konsitenz Wortweise (2 Byte); X+1 Wörter 
0x6X Analoger Ausgang, Konsitenz Wortweise (2 Byte); X+1 Wörter 
0x7X Analoger I/O,     Konsitenz Wortweise (2 Byte); X+1 Wörter 

0x9X Digitaler Eingang, Konsitenz: Gesamtlänge (Bytes); X+1 Bytes
0xAX Digitaler Ausgang, Konsitenz: Gesamtlänge (Bytes); X+1 Bytes
0xBX Digitaler I/O,     Konsitenz: Gesamtlänge (Bytes); X+1 Bytes

0XDX Analoger Eingang, Konsitenz: Gesamtlänge (Wörter); X+1 Wörter
0xEX Analoger Ausgang, Konsitenz: Gesamtlänge (Wörter); X+1 Wörter
0xFX Analoger I/O,     Konsitenz: Gesamtlänge (Wörter); X+1 Wörter
Damit erklärt sich auch obiges Beispiel:

Code:
;Module selection 1
Module= "selection 1 20Byte I/O PPO type1" 0xF3,0xF3,0xF1
EndModule
Laut Text soll das Modul 20Byte I/O sein

damit ergibt sich:

0xF3 = 8 Byte Analog I/O +
0xF3 = 8 Byte Analog I/O +
0xF1 = 4 Byte Analog I/O

= 2 * 8 Byte Analog I/O + 1 * 4 Byte Analog I/O = 20 Byte

bye
defa
 
Zuletzt bearbeitet:
Leider hat meine Doku scheinbar doch noch Lücken. So finde ich in "Real-Life"-GSD Dateien auch folgende Hex Werte:

Code:
0x4X; 0x8X und 0xCX

Diese Werte sind jedoch in meine Quelle nicht dokumentiert - weiss jemand was sie bedeuten?

bye
defa
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Helfen vielleicht diese Angaben.

Helfen vielleicht diese Angaben.
Habe sie aus der siem8095.gsd


; BYTE MODULES (spezielle Kennungsformate)
; input * byte constcy * byte data * 1..64 byte

Module = " 1byte DI/constcy 1byte " 0x40,0x00
EndModule
Module = " 2byte DI/constcy 1byte " 0x40,0x01
EndModule
Module = " 4byte DI/constcy 1byte " 0x40,0x03
EndModule
Module = " 8byte DI/constcy 1byte " 0x40,0x07
EndModule
Module = "16byte DI/constcy 1byte " 0x40,0x0F
EndModule
Module = "32byte DI/constcy 1byte " 0x40,0x1F
EndModule
Module = "64byte DI/constcy 1byte " 0x40,0x3F
EndModule

; input * complete constcy * byte data * 1..64 byte

Module = " 1byte DI/constcy complete" 0x40,0x80
EndModule
Module = " 2byte DI/constcy complete" 0x40,0x81
EndModule
Module = " 4byte DI/constcy complete" 0x40,0x83
EndModule
Module = " 8byte DI/constcy complete" 0x40,0x87
EndModule
Module = "16byte DI/constcy complete" 0x40,0x8F
EndModule
Module = "32byte DI/constcy complete" 0x40,0x9F
EndModule
Module = "64byte DI/constcy complete" 0x40,0xBF
EndModule

; input * word constcy * word data * 1..64 byte

Module = " 1word AI/constcy 1word " 0x40,0x40
EndModule
Module = " 2word AI/constcy 1word " 0x40,0x41
EndModule
Module = " 4word AI/constcy 1word " 0x40,0x43
EndModule
Module = " 8word AI/constcy 1word " 0x40,0x47
EndModule
Module = "16word AI/constcy 1word " 0x40,0x4F
EndModule
Module = "32word AI/constcy 1word " 0x40,0x5F
EndModule
Module = "64word AI/constcy 1word " 0x40,0x7F
EndModule

; input * complete constcy * word data * 1..64 byte

Module = " 1word AI/constcy complete" 0x40,0xC0
EndModule
Module = " 2word AI/constcy complete" 0x40,0xC1
EndModule
Module = " 4word AI/constcy complete" 0x40,0xC3
EndModule
Module = " 8word AI/constcy complete" 0x40,0xC7
EndModule
Module = "16word AI/constcy complete" 0x40,0xCf
EndModule
Module = "32word AI/constcy complete" 0x40,0xDF
EndModule
Module = "64word AI/constcy complete" 0x40,0xFF
EndModule


Ende Teil 1
 
Helfen vielleicht diese Angaben.

; output * byte constcy * byte data * 1..64 byte

Module = " 1byte DO/constcy 1byte " 0x80,0x00
EndModule
Module = " 2byte DO/constcy 1byte " 0x80,0x01
EndModule
Module = " 4byte DO/constcy 1byte " 0x80,0x03
EndModule
Module = " 8byte DO/constcy 1byte " 0x80,0x07
EndModule
Module = "16byte DO/constcy 1byte " 0x80,0x0F
EndModule
Module = "32byte DO/constcy 1byte " 0x80,0x1F
EndModule
Module = "64byte DO/constcy 1byte " 0x80,0x3F
EndModule

; output * complete constcy * byte data * 1..64 byte

Module = " 1byte DO/constcy complete" 0x80,0x80
EndModule
Module = " 2byte DO/constcy complete" 0x80,0x81
EndModule
Module = " 4byte DO/constcy complete" 0x80,0x83
EndModule
Module = " 8byte DO/constcy complete" 0x80,0x87
EndModule
Module = "16byte DO/constcy complete" 0x80,0x8F
EndModule
Module = "32byte DO/constcy complete" 0x80,0x9F
EndModule
Module = "64byte DO/constcy complete" 0x80,0xBF
EndModule

; output * word constcy * word data * 1..64 byte

Module = " 1word AO/constcy 1word " 0x80,0x40
EndModule
Module = " 2word AO/constcy 1word " 0x80,0x41
EndModule
Module = " 4word AO/constcy 1word " 0x80,0x43
EndModule
Module = " 8word AO/constcy 1word " 0x80,0x47
EndModule
Module = "16word AO/constcy 1word " 0x80,0x4F
EndModule
Module = "32word AO/constcy 1word " 0x80,0x5F
EndModule
Module = "64word AO/constcy 1word " 0x80,0x7F
EndModule

; output * complete constcy * word data * 1..64 byte

Module = " 1word AO/constcy complete" 0x80,0xC0
EndModule
Module = " 2word AO/constcy complete" 0x80,0xC1
EndModule
Module = " 4word AO/constcy complete" 0x80,0xC3
EndModule
Module = " 8word AO/constcy complete" 0x80,0xC7
EndModule
Module = "16word AO/constcy complete" 0x80,0xCf
EndModule
Module = "32word AO/constcy complete" 0x80,0xDF
EndModule
Module = "64word AO/constcy complete" 0x80,0xFF
EndModule
 
Habe eine Vermutung

0xC0 Input/Output
z.B.

0xC0, Out-Block, In-Block (Beliebige Kennung :confused: )
[0xC0, 0x5F, 0x5F]
wenn 0x5F = 16 Word Out dann => 32 Word In / 32 Word out

würde nach der siem089d.gsd passen. :rolleyes:

Weitere Vorschläge.

Gruß Flummy33
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss mich hier mal mit hereinhängen ...

@Flummy33:
Hat deine selbstgebaute GSD-Datei den Sinn, dass du den CP5611 in der HW-Konfig bezüglich des von dir geplanten Dantenaustausches besser beschreiben kannst ?
Steht dann bei dir in der HW-Konfig für dein Gerät der Übertragungsbereich im Klartext und nicht:
DP-Kennung:47 , Bezeichnung:Universalmodul , Länge:16 Byte
usw.
usw. ...?

Wenn ja, dann würde ich deine GSD-Datei gerne einmal im Auszug sehen. Das Thema interessiert mich nämlich auch ...
 
Module in der GSD

@Larry :s1: ;

Der Sinn des Ganzen liegt in der Schnittstellen Beschreibung.
Ich möchte in dem ich das Modul XYZ in die Adresstabelle des Teilnehmers ziehe gleich die komplette Schnittstelle mit allen Beschreibungen erhalten.
(Leider nur bedingt erfolgreich)
In der Definition des Moduls als 0 Modul
##########################################
Module = "TT2200" 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x35
EndModule
;
##########################################
In der Bezeichnungsspalte kommt dann immer der Eintrag TT2200.
Hätte aber gerne für jeden Block einen eigene drin.
Da ziel ist es 1-n WIG-Schweißgeräte über einen Sub-Master zu Steuern.
Einsatz eine "CP_5614_A2" Master-Slave Karte.
Die Slave- Schnittstelle wird über "PC-Station Einstellen" in GSD Vorm geladen und die gleiche erhält der Haupt-Master.
Der H-Master soll da nur noch Station Ready & Start mitteilen und Fertig & IO/NIO so wie die Errors erhalten.
Die Programmwahl und die Ist- Aufzeichnung macht der Sub-Master.
Was ich noch nicht ausprobiert habe ist
################################################
Module = "STB" 0x10, "Status-M" 0x10, "Hand" 0x10, "PNR_01" 0x10, "U-Soll" 0x50, "A-Soll" 0x50, "Reserve" 0x15,
"Error" 0x20, "Status-S" 0x10, "Hand" 0x10, "Reserve" 0x10, "U-Ist" 0x60, "A-Ist" 0x60, "Rest" 0x25
EndModule
;
################################################
Traue mich noch nicht will ich noch suche wie man die GSD Dateien bei bedarf aus dem Simatic NCM wieder entfernt.

Gruß Flummy33
 
Hallo,
hört sich so ähnlich an, wie das, was ich mir auch wünschen würde.
Ich übertrage 2 Strings und 1 Statuswort an einen PC mit CP5611.
Die Strings haben die Länge von 40 Zeichen und 24 Zeichen. Das sieht in der HW-Konfig mit den schon beschriebene Möglichkeiten Sch... aus.
Daher mein Interesse an deinem Beitrag und dessen Fortführung ...
 
Hallo Flummy33,
für mich hatte gestern die Notwendigkeit bestanden selber eine GSD-Datei zu erstellen. Hat geklappt - auch Dank deiner vorangehenden Beiträge. Wenn du dich da selber auch versuchen willst und noch Vorbehalte hast, so sei dir gesagt :
Du kriegst deine selbst erstellte GSD-Datei vielleicht nicht wieder raus aus der HW-Konfig, aber wenn du den Namen nicht änderst, dann kannst du immer weiter daran herumbasteln. Durch neues Importieren wird immer der alte Stand ersetzt - war jedenfalls bei mir so ...
Vielleicht ein Anreiz für dich.

Allerdings muss ich zum jetzigen Zeitpunkt einschränken, dass ich zwar eine funktionierende GSD-Datei erstellt habe, aber toll aussehen tut die noch nicht - wird aber vielleicht noch. Ich bleibe da dran ...
 
GSD Specs

Hallo Flummy33,

ein paar GSD-Specs lassen sich auch Googlen - ich denke zwar nicht das dass so immens im Interesse des Profibus Konsortiums ist - aber Google benutzen ist ja nicht verboten.

Code:
http://www.google.de/search?hl=de&q=GSD+Specification+site%3Aru
Wenn Du unter obigen Link bei Google suchst ist der erste Hit Dein Freund.
Solltest Du zufällig drauf klicken, könnte es passieren das Du dort die gewünschte Spezifikation findest.

Leider geht daraus auch keine Eindeutige Beschreibung der gesuchten Syntax hervor.

Mir persönlich geht es darum GSD-Dateien parsen zu können, um eine Software Frontend zum konfigurieren eines Profibus Monitors zu basteln.

bye
defa
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Profibus Monitors

@ defa

Für einen Monitor biete es sich an die Schnittstelle als ARRAY zu definieren und sich die Bereiche im Scout als Alias-Variablen zu definieren.
Danach die Variablen über die OPC-Schnittstelle mit Exel-VBA oder einem Anderem Program ansprechen.

* Aber OPC ist ein anderes Thema. *
Auch sehr interesant da es möglich ist LS-Zyklen von ~10ms zu erreichen.
(Sonst nur über Dll's erreichbar.)
 
Hallo Flummy33,
ich muss mich nochmals bedanken.
Dein Beitrag bezüglich der Kennungen 0x40,0x80 usw. hat mir geholfen mein kleines Problem mit der GSD-Datei zu lösen. Das war Klasse. Nun sieht das Ding so aus, wie ich mir das gedacht habe ...

Deine Vermutungen die o.g. Kennungen betreffend waren zutreffend. Man muss das nur erstmal richtig einsortieren ...:-D
 
Des Rätsels endgültige Lösung.

Moin!

Ich habe jetzt endgültig eine Quelle gefunden aus der die genaue Syntax hervorgeht. Prof. Felser hat es in seiner sehr empfehlenswerten Online-Doku natürlich erläutert - ich habe das bisher nur übersehen.

http://profibus.felser.ch/index.html?definition_der_konfiguration.htm

Dort wird sowohl das "kompakte Format", was ich obenstehend schon beschrieben habe, als auch das "spezielle Format" was wir bisher nicht interpretieren (oder nur orakeln) konnten.

@Flummy33: meinen Bus-Monitor hab ich in Hardware, es geht also nicht um ein blosses Überwachen von Variablen via OPC. Ich schneide komplette Profibus-DP Pakete mit und möchte aus denen Daten rekonstruieren, hierfür muss ich den Aufbau meiner Anlage kennen - welchen der User in einer Software abbilden muss - diese Software schreibe ich gerade - deswegen mein Wissensdurst.

bye
defa

Etwas kompakter gibts das auch hier: http://www.profibus.felser.ch/DecodierungstabelleV23.pdf
 
Zuletzt bearbeitet:
Zurück
Oben