# Frage zu SZL: ID: 0x0131 Index: 3



## Thomas_v2.1 (29 Mai 2009)

Hallo,
es gibt hier ja einige Spezis die sich detaillierter mit der SZL einer S7 auskennen.
Was fragt die SZL-ID 0x0131 mit dem Index 3 ab?

Zur gleichen ID mit dem Index 1 habe ich eine Info gefunden:



> pdu_lokal die maximale Länge der Datenblöcke der eigenen CPU (SZL_ID W#16#0131, INDEX 1, Variable pdu)


WinCCflexible stellt diese Anfragen beim Starten der Runtime, und ich wüsste gerne was ich da korrekterweise drauf antworten soll.

Gruß
Thomas


----------



## Rainer Hönle (30 Mai 2009)

Mit 0x0131 Index 3 werden die Leistungsparameter für die Kommunikation im Bereich Bedienen und Beöbachten abgefragt. Ich würde hier einfach schauen, was eine CPU xxx zurückliefert und dieses Ergebnis verwenden.


----------



## Thomas_v2.1 (30 Mai 2009)

Rainer Hönle schrieb:


> Mit 0x0131 Index 3 werden die Leistungsparameter für die Kommunikation im Bereich Bedienen und Beöbachten abgefragt. Ich würde hier einfach schauen, was eine CPU xxx zurückliefert und dieses Ergebnis verwenden.



Hab ich mir auch schon überlegt, aber ich wollte vermeiden dass ich Daten angebe die ich letztendlich garnicht liefern kann. Ich denke da z.B. an Alarmgenerierung von der SPS (ALARM_x).


----------



## Rainer Hönle (30 Mai 2009)

Thomas_v2.1 schrieb:


> Hab ich mir auch schon überlegt, aber ich wollte vermeiden dass ich Daten angebe die ich letztendlich garnicht liefern kann. Ich denke da z.B. an Alarmgenerierung von der SPS (ALARM_x).


Diese SZL betrifft zum großen Teil das zyklische Senden von Variablen und hat nichts mit den Alarmen zu tun. Diese Funktion in WinCC flexible einfach abschalten, dann tauchen die Probleme nicht auf.


----------



## Thomas_v2.1 (4 Juni 2009)

Rainer Hönle schrieb:


> Diese Funktion in WinCC flexible einfach abschalten, dann tauchen die Probleme nicht auf.



Lässt sich leider nicht abschalten, das macht der einfach so je nach Variablenkonfiguration.

So ein paar SZL-Daten habe ich noch in libnodave gefunden (simProperties.c, ibhsim5.c). Aber das sieht mir auch nach abgehört aus, zumindest ist nichts kommentiert (die blocklist.h fehlt leider im Projekt).


----------



## Rainer Hönle (4 Juni 2009)

Meinst Du jetzt SZL-ID 0x0131 oder SZL-ID 0x0132?


----------



## Thomas_v2.1 (4 Juni 2009)

Rainer Hönle schrieb:


> Meinst Du jetzt SZL-ID 0x0131 oder SZL-ID 0x0132?



Oh, vertippt. 0x0131 wie in der Überschrift angegeben.


----------



## thwe (9 Juni 2009)

Hallo Thomas,

ich habe hier genau das selbe Problem wie Du.
Laut http://www.automatyka.siemens.pl/docs/docs_as/WinAC_MP_s7wacmpb.pdf verbirgt sich unter
SZL-ID: 0x0131 "Communications performace parameters of the communications type specified"
und unter
SubID: 0x003 "Operator interface parameters".
Auf der deutschen Siemensseite war irgendwas die Rede von "B&B-Leistungsparametern" (B&B soll hier nicht etwa "Brunner und Brunner" heißen sondern, ganz klar, "Beobachten und Bedienen"... ...).

Hier mal die Anfrage von WinCC und meine Glaskugeldeutung:

```
ISO-TCP-Header: 0x03 0x00 0x00 0x21 
ISO-TCP-Body: 0x02 0xF0 0x80 0x32 0x07 0x00 0x00 0x00 0x01 0x00 0x08 0x00 0x08 0x00 0x01 0x12 0x04 0x11 0x44 0x01 0x00 0xFF 0x09 0x00 0x04 0x01 0x31 0x00 0x03

TPDU-Header-Lenght:2
TPDU-Type:DT Data
PDU-Type:7
Sequence Number: 0x0001
Parameter Length: 0x0008
Data Length: 0x0008
Error Code: 0x0000
Parameter: 0x00 0x01 0x12 0x04 0x11 0x44 0x01 0x00 
Parameter Code: SZLDiagnose
Data: 0xFF 0x09 0x00 0x04 0x01 0x31 0x00 0x03 
Data Command: 0xFF09
Data Length: 0x0004
Data Info: 0x01 0x31 0x00 0x03
```
Was der Parameterteil darstellt ist mir leider größtenteils unbekannt. Ist der bei Dir gleich?

Zur Zeit antworte ich darauf mit Fehlercode 0xD406 "diagnosis: info not available.", was aber auch nicht so das Wahre zu sein scheint.

Evtl. hilft Dir das ja ein wenig. Falls Du eine Lösung dazu gefunden hast, oder eine Idee hast, was der Parameterteil bedeuten könnte, würde ich mich freuen.

Beste Grüße,
auch ein Thomas


----------



## Rainer Hönle (9 Juni 2009)

thwe schrieb:


> Zur Zeit antworte ich darauf mit Fehlercode 0xD406 "diagnosis: info not available.", was aber auch nicht so das Wahre zu sein scheint.


Ich würde hier eher eine der Fehlermeldungen 
D401: Unzulässige SZL-ID 
D402: Unzulässiger INDEX
zurückgeben.


----------



## thwe (9 Juni 2009)

Danke für den Tip!

Leider führen auch diese Fehlercodes nicht zum gewünschten Ergebnis. Aber evtl. liege ich hier auch ein wenig daneben.
Hier mal mein Vorgehen:
WinCC fragt:

```
ISO-TCP-Header: 0x03 0x00 0x00 0x21 
ISO-TCP-Body: 0x02 0xF0 0x80 0x32 0x07 0x00 0x00 0x00 0x01 0x00 0x08 0x00 0x08 0x00 0x01 0x12 0x04 0x11 0x44 0x01 0x00 0xFF 0x09 0x00 0x04 0x01 0x31 0x00 0x03 
TPDU-Header-Lenght:2
TPDU-Type:DT Data
PDU-Type:7
Sequence Number:0x0001
Parameter Length:0x0008
Data Length:0x0008
Parameter:0x00 0x01 0x12 0x04 0x11 0x44 0x01 0x00 
Parameter Code: SZLDiagnose
Data:0xFF 0x09 0x00 0x04 0x01 0x31 0x00 0x03 
Data Command:0xFF09
Data Length:0x0004
Data Info:0x01 0x31 0x00 0x03
```
Meine Antwort (vieles geraten...):

```
ISO-TCP-Header: 0x03 0x00 0x00 0x21
ISO-TCP-Body: 0x02 0xF0 0x80 0x32 0x07 0x00 0x00 0x00 0x01 0x00 0x0C 0x00 0x04 0x00 0x01 0x12 0x08 0x12 0x84 0x01 0x00 0x00 0x00 0xD4 0x06 0x0A 0x00 0x00 0x00
TPDU-Header-Lenght:2
TPDU-Type:DT Data
PDU-Type:7
Sequence Number: 0x0001
Parameter Length: 0x000C
Data Length: 0x0004
Parameter: 0x00 0x01 0x12 0x08 0x12 0x84 0x01 0x00 0x00 0x00 0xD4 0x06
Parameter Code: SZLDiagnose
Parameter Error: 0xD4 0x06
Data: 0x0A 0x00 0x00 0x00
```
Folgende Reaktion:
WinCC fragt mich insgesamt 52 mal nach 0x0131 0x0003 wobei ich immer nach obigem Schema antworte und fragt danach nach DB-Daten und alles ist gut. Datentransfer läuft prima und WinCC zeigt alles korrekt an.

Nutze ich anstelle von 0xD406 die beiden anderen Fehlercodes, werde ich wechselweise nach 0x0131 0x0003 und 0x8131 0x0003 gefragt. Das ganze insgesamt auch 52 mal mit anschließendem erfolgreichen Datenaustausch.


Also nachdem die Verbindung aufgebaut ist und WinCC 52 mal ignoriert wurde scheint alles zu klappen. Schön wäre nur, das Richtige bei der SZL Diagnose zu antworten ("... gibt es nicht") und evtl. einen eigenen Nachrichten-String auf dem Meldebildschirm auszugeben. Ist das Ansprechen des Meldebildschirms mit eigenen Meldungen überhaupt machbar?

Beste Grüße,
der andere Thomas


----------



## Rainer Hönle (9 Juni 2009)

Welche SZLs wurden denn davor angefragt? Und wie wurden diese beantwortet? Wieso verwendest du nicht einfach die Werte einer relaen SPS? Oder bereitet dies Probleme?


----------



## thwe (9 Juni 2009)

Davor kam nur der Verbindungsaufbau und keine weiteren SZLs.

Falls ich eine SPS anfrage bekomme ich:

```
0x03 0x00 0x00 0x51
0x02 0xF0 0x80
0x32 0x07 0x00 0x00 0x00 0x01 0x00 0x0C 0x00 0x34
0x00 0x01 0x12 0x08 0x12 0x84 0x01 0x05 0x00 0x00 0x00 0x00
0xFF 0x09 0x00 0x30
0x01 0x31 0x00 0x03 0x00 0x28 0x00 0x01 0x00 0x03 0xFF 0xFF 0x83 0x01 0x01 0xE0 0x00 0x10 0x00 0x01 0x03 0x84 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
```
Dabei kann ich im Datateil meine SZL-ID + Index erkennen, evtl. gefolgt von einer Längenangabe (0x00 0x28 ). Danach ein 0x00 0x01 für ??? und danach die evtl. 40 Byte Daten. Da ich hier nicht besonders schlau drauß geworden bin, hab ich das mal an das WinCC weiter geleitet.

Darauf die WinCC Antwort:

```
0x03 0x00 0x00 0x27
0x02 0xF0 0x80
0x32 0x07 0x00 0x00 0x00 0x01 0x00 0x08 0x00 0x0E
0x00 0x01 0x12 0x04 0x11 0x44 0x02 0x00
0xFF 0x09 //Character-Type
0x00 0x0A //Length
0x06 0x00 0x48 0x6D 0x69 0x52 0x74 0x6D 0x20 0x20 //Data
```
In der letzten Zeile kann ich ein "HmiRtm__" erkennen, sicherlich für Human Machine Interface Runtime...

Und nun?


----------



## Rainer Hönle (9 Juni 2009)

thwe schrieb:


> Danach ein 0x00 0x01 für ???


Anzahl der gelieferten Datensätze, hier gleich 1. Als Hintergrundinfo kann ich hier die Siemens-Doku zu den SZLs empfehlen.



thwe schrieb:


> Und nun?


Schick doch einfach die Antwort der SPS auf die WinCC-Anfrage an WinCC zurück. Dann läuft es sicher weiter. Beim Ende von WinCC kommt sicher noch eine ähnliche Anfrage. Diese dann auch noch gleich mitbehandeln bzw. die Antwort entsprechend weiterleiten.


----------



## Thomas_v2.1 (9 Juni 2009)

Also in linbodave ist eine fertige Antwort zu dieser SZL und Index zu finden. In der Datei simProperties.c gib es ein array SZL_305_3, 0x0131 ist dez. 305, darum hatte ich das nicht auf Anhieb gefunden.

Diese scheint WinCCflexible zumindest nach der ersten Anfrage zufriedenzustellen.

@thwe
Du schreibst immer von WinCC, ich konnte diese Anfragen nur bei WinCCflexible festellen. Meinst du WinCC? Welche Version?
Btw: Woran bastelst du denn da schönes? ;-)


----------



## thwe (10 Juni 2009)

Thomas_v2.1 schrieb:


> Also in linbodave ist eine fertige Antwort zu dieser SZL und Index zu finden. In der Datei simProperties.c gib es ein array SZL_305_3, 0x0131 ist dez. 305, darum hatte ich das nicht auf Anhieb gefunden.


Ah, prima! Werd ich gleich mal einbauen, testen und feedback geben.



Thomas_v2.1 schrieb:


> @thwe
> Du schreibst immer von WinCC, ich konnte diese Anfragen nur bei WinCCflexible festellen. Meinst du WinCC? Welche Version?


Jaja, ich mein natürlich WinCCflexible. Tschuldigung für die Verwirrung.


Thomas_v2.1 schrieb:


> Btw: Woran bastelst du denn da schönes? ;-)



Also, wir haben hier eine Automatisierungssystem entwickelt, das sich sehr "echtzeitig" verhält und mit dem sich sehr komplexe Arbeiten schnell und effizient erledigen lassen. Zum Einsatz kommt eine eigene EZ-Spezialsprache für Steuerung "T4gl" (http://www.bj-ig.de/t4gl.html).
Idee ist es nun, eine Server-Seite hinzuzufügen, damit sich unser System SPS-artig verhält (zumindest das S7-Protokoll versteht und sprechen kann) und sich auch über WinCCflexible visualisieren (und später evtl. auch bedienen) lässt. Zur Zeit wird die ganze Visualisierung noch mit Qt erledigt, was jedoch (unverständlicherweise!) nicht für jederman so intuitiv bei der Erstellung ist. 
Aber wir wollen von unseren Sonderlocken wegkommen und da WinCCflexible fast omnipresent ist, ist eine Kommunikation-Schnittstelle wohl der richtige Weg.

 Damit kann man mit T4gl eine sehr geniale Sprache verwenden (und brauch sich nicht mit STEP7 foltern) und hat nach außen trotzdem eine Datenbausteinstruktur, die man auch mit WinCCflexible abfragen (und bedienen) kann. Das "Basteln" ist also soweit schon fast fertig und macht auch einen sehr guten Eindruck. Es fehlt noch die SZL-Geschichte und evtl. eine Unterstützung von Write-Requests von Seiten WinCCflexible (was jetzt aber kein Problem mehr sein sollte).

Und woran arbeitest du feines? Falls ich kann, helfe ich dir gerne weiter. Ein paar Dinge konnte ich dem WinCCflexible schon entlocken.

Beste Grüße,
der andere Thomas


----------



## thwe (10 Juni 2009)

thwe schrieb:


> Ah, prima! Werd ich gleich mal einbauen, testen und feedback geben.



Läuft prima! Danke für den Tipp!


----------



## Thomas_v2.1 (10 Juni 2009)

thwe schrieb:


> Und woran arbeitest du feines? Falls ich kann, helfe ich dir gerne weiter. Ein paar Dinge konnte ich dem WinCCflexible schon entlocken.



Ich brauche das dafür:
http://www.sps-forum.de/showthread.php?t=25102

Ist vom Prinzip her das Gleiche was du machst, wenn man sich die PLCSim Anbindung wegdenkt. Ich habe da auch ein Beispiel bei um aus einem C-Programm heraus auf Datenanfragen zu antworten.
Die Verarbeitung von User-Data Telegrammen fehlt zur Zeit noch komplett. Da bin ich aber gerade bei, auch wenn es nur WinCCflexible ist welches mit diesen Telegrammen kommt.


----------

