Step 7 SZLTeilliste abfragen

StepMarkus

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würde gerne mittels SZL Teilliste die Siemens Bestellnummer und den Firmware-Stand abfragen (Falls möglich auch von den anderen Teilnehmern im Netz, sprich ET200 oder IMs). Funktioniert der Hex-Code nicht. In der unten verlinkten Webseite habe ich die HexCodes für
CPU = 0x0711
FM = 0x4711
IM = 0x8711
CP = 0xC711
gefunden.

http://www.kleissler-online.de/Siemens/SFCs.pdf

Dann schicke ich diese über ein Framework names Moka7 (Java) an die SPS.

S7Szl szl = new S7Szl(8);
spsClient.ReadSZL(0x0711, 1, szl);

Mein Programm funktioniert nicht.

Ich hoffe ihr könnt mir weiterhelfen. Danke im Voraus.
 
Du könntest z.B. in HW Konfig die Baugruppe diagnostizieren (Zielsystem > Baugruppenzustand) und mit Wireshark mitlesen, welche SZL und Diagnosedatensätze der Simatic Manager ausliest.

Und schau mal hier: SZL-Teilliste

Weitere Informationsquellen:
- PROFINET IO – Diagnose + SZL-Listen zu PROFINET/PROFIBUS
- Referenzhandbuch S7-300/400 System- und Standardfunktionen (auch ältere Ausgaben sind interessant)
- Beschreibung der SFC51 RDSYSST (Kapitel 13.3)
- S7-300 Operationsliste
- diverse Bücher vom Berger?

Harald
 
Laut WireShark stehen die wichtigen Informationen in einem ROSCTR: [Userdata] Function: [Request] -> [Cyclic data] -> [Unkown subfunc: 0x008]. Nun ist die Frage wie mache ich die dazugehörige Anfrage? Welche SZL-ID und welcher Index ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut WireShark stehen die wichtigen Informationen in einem ROSCTR: [Userdata] Function: [Request] -> [Cyclic data] -> [Unkown subfunc: 0x008]. Nun ist die Frage wie mache ich die dazugehörige Anfrage? Welche SZL-ID und welcher Index ?

Schon mal Beitrag #3 und #4 gelesen??
 
Ja habe ich, nur hilft mir dies nicht weiter, weil hier nichts über subfunc´s steht. Wenn ich SZL-ID 0x0c91 verwende, dann bekomme ich nicht die richtigen Informationen.
 
Laut WireShark stehen die wichtigen Informationen in einem ROSCTR: [Userdata] Function: [Request] -> [Cyclic data] -> [Unkown subfunc: 0x008]. Nun ist die Frage wie mache ich die dazugehörige Anfrage? Welche SZL-ID und welcher Index ?

Das ist kein SZL-Datensatz, sondern eine Art Profinet Readrecord-Anfrage / Antwort eingepackt in das S7-Protokoll.

Ich hatte mir das vor längerer Zeit mal angesehen und auch analysiert, habe das aber nicht abgeschlossen und auch in Wireshark eingefügt. Auf jeden Fall sind die Nutzdaten entsprechend des Profinet-Protokolls aufgebaut.

Wie auch immer, diese Funktion ist in Snap7 nicht implementiert.
 
Laut WireShark stehen die wichtigen Informationen in einem ROSCTR: [Userdata] Function: [Request] -> [Cyclic data] -> [Unkown subfunc: 0x008]. Nun ist die Frage wie mache ich die dazugehörige Anfrage? Welche SZL-ID und welcher Index ?

Hast du die Wireshark Aufzeichnungen zufällig abgespeichert und könntest mir diese zukommen lassen?
Ich bin gerade dabei diese Funktion in Wireshark zu ergänzen und könnte darum ein paar Testaufzeichnungen gebrauchen.

Übrigens kann ich über diese Funktion an meiner IM151-8 CPU die ich hier habe weder Bestellnummern noch Firmwareversionen auslesen, der Simatic Manager macht das alles über SZL-Abfragen.

Ich habe mir ein kleines Python-Skript geschrieben welches zu Testzwecken diese Funktion des RDREC über S7-Protokoll nachbildet. Über Datensatz 0xaff0 und weitere bekomme ich überhaupt keinen Antwortdatensatz von der CPU. Gleiches Verhalten wenn ich es mit dem SFB52 RDREC aus dem Programm heraus versuche.
 
Ich kann dir die Wiresharkdatei nicht weiterleiten, weil ich sonst Probleme von von meinem Arbeitgeber bekommen.
Hast du in Python einfach den TCP Payload nachgebildet?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann dir die Wiresharkdatei nicht weiterleiten, weil ich sonst Probleme von von meinem Arbeitgeber bekommen.
Hast du in Python einfach den TCP Payload nachgebildet?

Schade, vielleicht gibt es ein paar Funktionen die von der ET200S-CPU nicht unterstützt werden und ich diese darum nicht sehen kann.

Ich habe mir ein paar Python-Funktionen geschrieben mit denen ich Teile des S7-Protokolls zusammenstellen kann. Ohne weitergehende Auswertung der empfangenen Daten, nur um ein paar Versuche durchzuführen, z.B. an bestimmten Stellen deren Funktion mir nicht klar ist ein paar Testwerte zu setzen und dann zu sehen was die SPS zurückmeldet.
 
ich habe versucht aus dem Payload des TCP Pakets Adressen der Baugruppen auszulesen, jedoch kein erfolgt. Hast du das Problem gelöst ?

Die Adresse steht in den letzten 3 Bytes und davor steht auch noch der Index. Mit den identischen Parametern lässt sich im SPS-Programm die RDREC Funktion aufrufen, mit dem gleichen Ergebnis.
 

Anhänge

  • s7comm-rdrec.jpg
    s7comm-rdrec.jpg
    70,8 KB · Aufrufe: 29
Die Adresse steht in den letzten 3 Bytes und davor steht auch noch der Index. Mit den identischen Parametern lässt sich im SPS-Programm die RDREC Funktion aufrufen, mit dem gleichen Ergebnis.

Ich habe in der SPS die RDREC Funktion mit den letzten 3 Bytes als Adresse (00 1f 0b) und auch mal die letzten 4 Bytes (01 00 1f 0b) mit dem Index der auch dabei steht (AF F0) aufgerufen, jedoch funktioniert dies nicht. Wenn ich die 4-Byte-Version benutze, dann bekomme ich einen Status (Bevor ich überhaupt den Request angestossen haben).
 
Ich habe in der SPS die RDREC Funktion mit den letzten 3 Bytes als Adresse (00 1f 0b) und auch mal die letzten 4 Bytes (01 00 1f 0b) mit dem Index der auch dabei steht (AF F0) aufgerufen, jedoch funktioniert dies nicht. Wenn ich die 4-Byte-Version benutze, dann bekomme ich einen Status (Bevor ich überhaupt den Request angestossen haben).

Es sind wenn dann nur die letzten 3 Bytes.
Wenn du das SPS-Projekt besitzt, dann kannst du diese Adresse aus der HW-Konfig auslesen, das ist die Diagnoseadresse.
Kommt wenn du dir das in Wireshark ansiehst denn überhaupt ein Datensatz mit Inhalt zurück? So wie ich das gesehen habe, versucht Step7 nämlich immer bestimmte Datensätze zu lesen, die aber nicht immer alle funktionieren. Step7 liest sich die Adressen vorher über SZL-Datensätze aus.
 
Zurück
Oben