{"id":465,"date":"2015-03-11T16:00:19","date_gmt":"2015-03-11T15:00:19","guid":{"rendered":"http:\/\/norman\/wordpress\/?page_id=465"},"modified":"2015-03-12T09:41:05","modified_gmt":"2015-03-12T08:41:05","slug":"parameter-part","status":"publish","type":"page","link":"http:\/\/bj-ig.de\/service\/verfuegbare-dokumentationen\/s7-kommunikation\/aufbau-eines-data-tpdus\/parameter-part\/","title":{"rendered":"Parameter Part"},"content":{"rendered":"

Parameter Part<\/h1>\n

Das f\u00fchrende Byte im „Parameter Part“ stellt den Parameter Code dar. \u00dcber diesen definiert sich der weitere Aufbau, sowie die erwartete Antwort.<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Parameter Code<\/b><\/td>\n<\/td>\nDescription<\/b><\/td>\n<\/tr>\n
0xF0<\/td>\n<\/td>\nopen S7 connection<\/a><\/td>\n<\/tr>\n
0x00<\/td>\n<\/td>\nSSL (german: „SZL“) diagnostics<\/a><\/td>\n<\/tr>\n
0x04<\/td>\n<\/td>\nread<\/a><\/td>\n<\/tr>\n
0x05<\/td>\n<\/td>\nwrite<\/a><\/td>\n<\/tr>\n
0x1A<\/td>\n<\/td>\nrequest download<\/td>\n<\/tr>\n
0x1B<\/td>\n<\/td>\ndownload block<\/td>\n<\/tr>\n
0x1C<\/td>\n<\/td>\nend download<\/td>\n<\/tr>\n
0x1D<\/td>\n<\/td>\nstart upload<\/td>\n<\/tr>\n
0x1E<\/td>\n<\/td>\nupload<\/td>\n<\/tr>\n
0x1F<\/td>\n<\/td>\nend upload<\/td>\n<\/tr>\n
0x28<\/td>\n<\/td>\ninsert block<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Open S7 Connection<\/h3>\n

Request:<\/b>
\nNach erfolgreichem Wechsel in den Peer-State signalisiet die Client-Seite die Kommunikation \u00fcber das S7 Protokoll. Dabei ist folgender Aufbau des Parameterteils zu finden:<\/p>\n\n\n\n\n\n\n\n\n\n\n
Byte<\/b><\/td>\n<\/td>\nDescription<\/b><\/td>\n<\/tr>\n
0<\/td>\n<\/td>\n0xF0 (open S7 connection)<\/td>\n<\/tr>\n
1<\/td>\n<\/td>\nunknown<\/td>\n<\/tr>\n
2<\/td>\n<\/td>\nunknown<\/td>\n<\/tr>\n
3<\/td>\n<\/td>\nunknown<\/td>\n<\/tr>\n
4<\/td>\n<\/td>\nunknown<\/td>\n<\/tr>\n
5<\/td>\n<\/td>\nunknown<\/td>\n<\/tr>\n
6<\/td>\n<\/td>\noffered PDU length<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Response:<\/b>
\nAls Response erwartet der Client eine Nachricht vom PDU Typ 3<\/a> mit Fehlercode<\/a> 0x0000 (no error), sowie dem zuvor versendeten Parameterteil.<\/p>\n

SSL (SZL) Diagnostics<\/h3>\n

Request:<\/b>
\nSSL steht f\u00fcr „System State List“ (SZL = „S<\/b>ystemz<\/b>ustandsl<\/b>iste“). Eine (wenn auch unvollst\u00e4ndige) Liste kann man aus den entsprechenden Dokumentationen
(System- und Standardfunktionen f\u00fcr S7-300\/400 Band 1\/2 Referenzhandbuch)<\/a> oder (WinAC MP for MP370 User Manual)<\/a> von Siemens entnehmen.
\nDirekt nach der Verst\u00e4ndigung zum S7 Protokoll, erfolgt von der Client-Seite eine Anfrage zur SZL-ID 0x0131 mit SZL-Index 0x003 („B&B-Leistungsparameter“):<\/p>\n\n\n\n\n\n\n\n\n\n\n\n
Byte<\/b><\/td>\n<\/td>\nDescription<\/b><\/td>\n<\/tr>\n
0<\/td>\n<\/td>\n0x00 (ssl diagnostics)<\/td>\n<\/tr>\n
1<\/td>\n<\/td>\n0x01 (unknown)<\/td>\n<\/tr>\n
2<\/td>\n<\/td>\n0x12 (unknown)<\/td>\n<\/tr>\n
3<\/td>\n<\/td>\n0x04 (number of bytes following)<\/td>\n<\/tr>\n
4<\/td>\n<\/td>\n0x11 (unknown)<\/td>\n<\/tr>\n
5<\/td>\n<\/td>\n0x44 (PG function; request ssl content)<\/td>\n<\/tr>\n
6<\/td>\n<\/td>\n0x01 (PG subfunction; request ssl content)<\/td>\n<\/tr>\n
7<\/td>\n<\/td>\n0x00 (unknown)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Welche SZL angefodert wird, ist im dazugeh\u00f6rigen „Data Part“ enthalten.<\/p>\n

Response:<\/b>
\nAls Response erwartet der Client eine Nachricht vom PDU Typ 7<\/a> mit folgendem 12 Byte Parameter Part:<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Byte<\/b><\/td>\n<\/td>\nDescription<\/b><\/td>\n<\/tr>\n
0<\/td>\n<\/td>\n0x00 (ssl diagnostics)<\/td>\n<\/tr>\n
1<\/td>\n<\/td>\n0x01 (unknown)<\/td>\n<\/tr>\n
2<\/td>\n<\/td>\n0x12 (unknown)<\/td>\n<\/tr>\n
3<\/td>\n<\/td>\n0x08 (number of bytes following)<\/td>\n<\/tr>\n
4<\/td>\n<\/td>\n0x12 (unknown; maybe 0x11 + 1)<\/td>\n<\/tr>\n
5<\/td>\n<\/td>\n0x84 (function; response to 0x44)<\/td>\n<\/tr>\n
6<\/td>\n<\/td>\n0x01 (subfunction)<\/td>\n<\/tr>\n
7<\/td>\n<\/td>\n0x01 (unknown)<\/td>\n<\/tr>\n
8<\/td>\n<\/td>\n0x00 (unknown)<\/td>\n<\/tr>\n
9<\/td>\n<\/td>\n0x00 (unknown)<\/td>\n<\/tr>\n
10-11<\/td>\n<\/td>\n0x0000 (parameter error code<\/a>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

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\u00f6glich, ein mitgelauschtes Byte Array<\/a> zu schicken, mit welchem dem Client mitgeteilt wird, dass keine Diagnosedaten vorhanden sind.<\/p>\n

Read<\/h3>\n

Request:<\/b>
\nMittels eines Read Requests ist es dem Client m\u00f6glich, 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).<\/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Byte<\/b><\/td>\n<\/td>\nDescription<\/b><\/td>\n<\/tr>\n
0<\/td>\n<\/td>\n0x04 (read)<\/td>\n<\/td>\n<\/tr>\n
1<\/td>\n<\/td>\nnumber of data requests<\/td>\n<\/td>\n<\/tr>\n
2<\/td>\n<\/td>\n0x12 (unknown)<\/td>\nfirst data request<\/td>\n<\/tr>\n
3<\/td>\n<\/td>\n0x0A (10 bytes following)<\/td>\nfirst data request<\/td>\n<\/tr>\n
4<\/td>\n<\/td>\n0x10 (unknown)<\/td>\nfirst data request<\/td>\n<\/tr>\n
5<\/td>\n<\/td>\ndata type<\/a><\/td>\nfirst data request<\/td>\n<\/tr>\n
6-7<\/td>\n<\/td>\nlength<\/td>\nfirst data request<\/td>\n<\/tr>\n
8-9<\/td>\n<\/td>\nDB number<\/td>\nfirst data request<\/td>\n<\/tr>\n
10<\/td>\n<\/td>\narea code<\/a><\/td>\nfirst data request<\/td>\n<\/tr>\n
11-13<\/td>\n<\/td>\nstart address in bits<\/td>\nfirst data request<\/td>\n<\/tr>\n
14<\/td>\n<\/td>\n0x12 (unknown)<\/td>\nsecond data request<\/td>\n<\/tr>\n
15<\/td>\n<\/td>\n0x0A (10 bytes following)<\/td>\nsecond data request<\/td>\n<\/tr>\n
16<\/td>\n<\/td>\n0x10 (unknown)<\/td>\nsecond data request<\/td>\n<\/tr>\n
17<\/td>\n<\/td>\ndata type<\/a><\/td>\nsecond data request<\/td>\n<\/tr>\n
18-19<\/td>\n<\/td>\nlength<\/td>\nsecond data request<\/td>\n<\/tr>\n
20-21<\/td>\n<\/td>\nDB number<\/td>\nsecond data request<\/td>\n<\/tr>\n
22<\/td>\n<\/td>\narea code<\/a><\/td>\nsecond data request<\/td>\n<\/tr>\n
23-25<\/td>\n<\/td>\nstart address in bits<\/td>\nsecond data request<\/td>\n<\/tr>\n
26-37<\/td>\n<\/td>\n…<\/td>\nthird data request<\/td>\n<\/tr>\n
…-…<\/td>\n<\/td>\n…<\/td>\nfollowing requests<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Read Requests haben keinen Datenteil.<\/p>\n

Response:<\/b>
\nAls g\u00fcltige Antwort erwartet der Client vom Server ein PDU vom Typ 3<\/a> mit Fehlercode<\/a> 0x0000 (no error). Der Parameteranteil ist zwei Byte gro\u00df und besteht aus dem Parameter Read Code sowie der Anzahl der angeforderten Variablen. Die eigentlichen Variablenbelegungen sind im Datenteil enthalten.<\/p>\n

Write<\/h3>\n

Request:<\/b>
\nDer 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).<\/p>\n

Die eigentlichen zu \u00fcbertragenden Variablenbelegungen sind im Datenteil enthalten.<\/p>\n

Response:<\/b>
\nAls Antwort wird ein PDU vom
Typ 3<\/a> mit Fehlercode<\/a> 0x0000 (no error) erwartet. Der Parameterteil ist zwei Byte gro\u00df und besteht aus dem Parameter Write Code sowie der Anzahl der angeforderten Variablen.<\/p>\n

Der Datenteil enth\u00e4lt die Statuscodes<\/a> zu jeder Variablen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Parameter Part Das f\u00fchrende Byte im „Parameter Part“ stellt den Parameter Code dar. \u00dcber 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 […]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":186,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"index-grey.php","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/pages\/465"}],"collection":[{"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/comments?post=465"}],"version-history":[{"count":9,"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/pages\/465\/revisions"}],"predecessor-version":[{"id":524,"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/pages\/465\/revisions\/524"}],"up":[{"embeddable":true,"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/pages\/186"}],"wp:attachment":[{"href":"http:\/\/bj-ig.de\/wp-json\/wp\/v2\/media?parent=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}