Nachrichtenstruktur
Der SECS-Treiber kommuniziert mit dem Gerät über binär codierte SEMI E5-Nachrichten. Um die E5-Nachrichten in WinCC OA verwendbar zu machen, werden die SECS-II E5-Nachrichten in JSON-Strings umgewandelt.
Daher müssen String-DPE verwendet werden, um Anfragen zu stellen und zu antworten. Die allgemeine Struktur der Nachrichten wird durch den E5-Standard definiert. Jede Nachricht muss einen Header haben, der Informationen über die Geräte-ID, die Datenlänge usw. enthält. Weitere Informationen finden Sie im E5- und E37-Standard.
JSON-Nachrichtenstruktur
Die Struktur enthält zwei Hauptteile: den Header und den Body. Der Body wird nur für E5-Nachrichten benötigt, die Daten senden/empfangen müssen.
Header
Der Header ist immer ein JSON-Objekt Typ mit folgenden Attributen:
JSON Objekt Name | Typ | Verpflichtend | Beschreibung |
---|---|---|---|
“function” | Number | x | Beschreibt die E5 Funktionsnummer. |
“stream” | Number | x | Beschriebt zu welchem E5 Stream die Funktion gehört. |
“reply” | Boolean | x | Beschreibt, ob die Anfrage eine Antwort erwartet oder nicht. |
"requestId" | Number | Kann gewählt werden, um die Anfrage der Antwort innerhalb der JSON-Struktur zuordnen zu können. | |
“sessionId” | Number | Nur benötigt, wenn eine Anfrage vom Gerät beantwortet werden muss. Die ID kann aus dem Header der Anfrage ausgelesen werden | |
“systemBytes” | Number | Nur benötigt, wenn eine Anfrage vom Gerät beantwortet werden muss. Diese eindeutige ID kann aus dem Header der Anfrage ausgelesen werden |
Body
Der Body kann entweder ein JSON-Objekt oder ein JSON-Array (Liste) sein. Die Struktur des Bodys wird durch die E5-Nachrichtendefinition vorgegeben. Body-Objekte, welche die Daten enthalten, umfassen die folgenden JSON-Key-Value-Paare:
JSON Objekt Name | Typ | Verpflichtend | Beschreibung |
---|---|---|---|
“format” | String | x | Beschreibt das Format des „value“ desselben JSON-Daten Objekts |
“value” | Format spezifisch | x | Enthält den Wert des JSON-Daten Objekts |
Das Format kann einer der folgenden Datentypen sein:
Abkürzung | Beschreibung |
---|---|
B | Binary |
BL | Boolean |
A | ASCII |
JIS | JIS-8 |
V | 2 byte character |
I8 | 8 byte integer (signed) |
I1 | 1 byte integer (signed) |
I2 | 2 byte integer (signed) |
I4 | 4 byte integer (signed) |
F8 | 8 byte floating point |
F4 | 4 byte floating point |
U8 | 8 byte integer (unsigned) |
U1 | 1 byte integer (unsigned) |
U2 | 2 byte integer (unsigned) |
U4 | 4 byte integer (unsigned) |
Die V (2-Byte-Zeichen) listet Codierungen im SEMI E5-Standard, Kapitel 9.4.2 Tabelle 2 auf. Nicht alle Codierungen werden von WinCC OA unterstützt. Die folgenden werden unterstützt:
- ISO 10646 UCS-2
- UTF-8
- ISO 8859-1
- TIS 620
- Shift JIS
- Japanese EUC-JP
- Korean EUC-KR
- Simplified Chinese EUC-CN
- Traditional Chinese Big5
Nicht unterstützte Formate werden als Byte Array im JSON-Objekt übergeben und können somit vom Nutzer validiert werden.
JSON-Beispiel
Dies ist ein Beispiel für eine S1F3R-Nachricht, die vom Host an das Gerät gesendet wird, um die „Selected Equipment Status Request“ zu erhalten.
{
"header": {
"function": 3,
"reply": true,
"stream": 1
},
"body": [{
"format": "U4",
"value": 250
}]
}
{
"header": {
"function": 4,
"reply": false,
"stream": 1
},
"body": [{
"format": "A",
"value": "2024111214454153"
}]
}