Parameter Part

Das führende Byte im „Parameter Part“ stellt den Parameter Code dar. Über diesen definiert sich der weitere Aufbau, sowie die erwartete Antwort.

Parameter Code Description
0xF0 open S7 connection
0x00 SSL (german: „SZL“) diagnostics
0x04 read
0x05 write
0x1A request download
0x1B download block
0x1C end download
0x1D start upload
0x1E upload
0x1F end upload
0x28 insert block

Open S7 Connection

Request:
Nach erfolgreichem Wechsel in den Peer-State signalisiet die Client-Seite die Kommunikation über das S7 Protokoll. Dabei ist folgender Aufbau des Parameterteils zu finden:

Byte Description
0 0xF0 (open S7 connection)
1 unknown
2 unknown
3 unknown
4 unknown
5 unknown
6 offered PDU length

Response:
Als Response erwartet der Client eine Nachricht vom PDU Typ 3 mit Fehlercode 0x0000 (no error), sowie dem zuvor versendeten Parameterteil.

SSL (SZL) Diagnostics

Request:
SSL steht für „System State List“ (SZL = „Systemzustandsliste“). Eine (wenn auch unvollständige) Liste kann man aus den entsprechenden Dokumentationen (System- und Standardfunktionen für S7-300/400 Band 1/2 Referenzhandbuch) oder (WinAC MP for MP370 User Manual) von Siemens entnehmen.
Direkt nach der Verständigung zum S7 Protokoll, erfolgt von der Client-Seite eine Anfrage zur SZL-ID 0x0131 mit SZL-Index 0x003 („B&B-Leistungsparameter“):

Byte Description
0 0x00 (ssl diagnostics)
1 0x01 (unknown)
2 0x12 (unknown)
3 0x04 (number of bytes following)
4 0x11 (unknown)
5 0x44 (PG function; request ssl content)
6 0x01 (PG subfunction; request ssl content)
7 0x00 (unknown)

Welche SZL angefodert wird, ist im dazugehörigen „Data Part“ enthalten.

Response:
Als Response erwartet der Client eine Nachricht vom PDU Typ 7 mit folgendem 12 Byte Parameter Part:

Byte Description
0 0x00 (ssl diagnostics)
1 0x01 (unknown)
2 0x12 (unknown)
3 0x08 (number of bytes following)
4 0x12 (unknown; maybe 0x11 + 1)
5 0x84 (function; response to 0x44)
6 0x01 (subfunction)
7 0x01 (unknown)
8 0x00 (unknown)
9 0x00 (unknown)
10-11 0x0000 (parameter error code)

Die Informationen aus der angeforderten SZL sind im Datenteil enthalten. Der Aufbau dieser Daten ist teilweise in der Siemens Dokumentation unter den entsprechenden SZL Anfragen enthalten. Leider ist gerade zu den B&B-Leisungsparametern (SZL-ID 0x0131, INDEX 0x0003) keine solche Beschreibung zu finden. Es ist jedoch möglich, ein mitgelauschtes Byte Array zu schicken, mit welchem dem Client mitgeteilt wird, dass keine Diagnosedaten vorhanden sind.

Read

Request:
Mittels eines Read Requests ist es dem Client möglich, Variablenbelegungen aus einem Datenbaustein auszulesen. Direkt nach dem Read Code folgt die Anzahl, sowie eine Liste der angeforderten Variablen. Ein Element der Liste besteht aus 12 Bytes (siehe unten).

Byte Description
0 0x04 (read)
1 number of data requests
2 0x12 (unknown) first data request
3 0x0A (10 bytes following) first data request
4 0x10 (unknown) first data request
5 data type first data request
6-7 length first data request
8-9 DB number first data request
10 area code first data request
11-13 start address in bits first data request
14 0x12 (unknown) second data request
15 0x0A (10 bytes following) second data request
16 0x10 (unknown) second data request
17 data type second data request
18-19 length second data request
20-21 DB number second data request
22 area code second data request
23-25 start address in bits second data request
26-37 third data request
…-… following requests

Read Requests haben keinen Datenteil.

Response:
Als gültige Antwort erwartet der Client vom Server ein PDU vom Typ 3 mit Fehlercode 0x0000 (no error). Der Parameteranteil ist zwei Byte groß und besteht aus dem Parameter Read Code sowie der Anzahl der angeforderten Variablen. Die eigentlichen Variablenbelegungen sind im Datenteil enthalten.

Write

Request:
Der Parameterteil eines Write Requests ist genauso aufgebaut wie der eines Read Requests. Lediglich der Parameter Code (zweites Byte) ist keine 0x04 (Read) sondern eine 0x05 (Write).

Die eigentlichen zu übertragenden Variablenbelegungen sind im Datenteil enthalten.

Response:
Als Antwort wird ein PDU vom Typ 3 mit Fehlercode 0x0000 (no error) erwartet. Der Parameterteil ist zwei Byte groß und besteht aus dem Parameter Write Code sowie der Anzahl der angeforderten Variablen.

Der Datenteil enthält die Statuscodes zu jeder Variablen.