Step 7 Diagnose und Informationen zur CPU im Anwenderprogramm (SFC51, 78 und 87)

Beiträge
62
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen!

Ich hoffe, jeder nutzt das gute Wetter aus und... arbeitet -.-

Nunja, nützt alles nix, also zur Sache:
Ich möchte bzw. habe schon einen FB erstellt, über den ich später im Anwenderprogramm diverse Informationen zur CPU und zum Programm auslese und ans Programm zur Weiterverarbeitung übergebe.
Konkret:

- Zykluszeit auslesen und ausgeben über SFC78
- Diagnose / Status der S7-Verbindungen auslesen und ausgeben über SFC87
- Diagnosepuffer auslesen und ausgeben über SFC51 mit der SZL-ID 16#00A0

Mein FB ist auch soweit fertig, allerdings komme ich an manchen Stellen nicht weiter:
1.: In einer Test-CPU 314-2 PN/DP sind die SFC78 und 87 nicht geladen. Sind diese SFCs erst ab einer höheren CPU-Klasse verfügbar?
Mit PLCSIM (CPU 315-2 PN/DP) funktioniert die Geschichte.
2.: Was genau sagen mir die Informationen, die ich über die SFC51 bekomme, aus? Die Ereignis-ID habe ich bereits herausgefunden, dieser Hex-Wert wird auch angezeigt, wenn ich den Diagnosepuffer im Simatic Manager (Baugruppenzustand)
anzeigen lasse. In der Hilfe ist die Bedeutung dieses Codes halbwegs ordentlich erklärt.
Aber: Die Detailinformationen, die ebenfalls mit ausgegeben werden (5 Worte, s. Hilfe: SLZ-ID W#16#xyA0 - Diagnosepuffer), sind nirgendwo näher erläutert ODER ich finde sie partout nicht.
Ggf. wäre die Auswertung dieser Informationen aber ebenfalls noch interessant, zumindest teilweise. Was ich herausgefunden habe: Die SFC-Nummer steht z.B. in Wort 3, wenn der Fehler "SFC nicht geladen" auftritt (habe ich bei meiner
314 ermittelt, da da ja die SFCs 78 und 87 nicht vorhanden sind. Die SFC51 gibt hierzu auch den korrekten Diagnoseeintrag aus). Aber was ist bei anderen Fehlern? Gibt es irgendwo eine Beschreibung hierzu oder eine Tabelle, über die ich
ermitteln kann, welche Codes der 5 Worte Detailinfos welche Bedeutung haben?
3.: Damit die SFC87 korrekt funktioniert, muss an die OUT-Variable CON_ARR ein ausreichend großes Array gesetzt werden, damit die Informationen zu allen Verbindungen dorthin kopiert werden können. Ist dieser Bereich zu klein,
liest die SFC87 überhaupt nichts aus und gibt den RETVAL #8082 aus. Soweit, so gut. Ich wundere mich jetzt allerdings, dass ich einen Bereich der Größe 512 Byte angeben muss, bei 8 Byte Informationen pro Verbindung also Platz genug
für 64 Verbindungen. Laut HW-Konfig kann meine CPU aber nur max. 16 Verbindungen, also sollten eigentlich 128 Byte ausreichen.
--> ?
Ist die 64 vielleicht die maximal mögliche Anzahl an Verbindungen für sämtliche CPU-Typen, sodass dieser Bereich immer fest ist? Warum reicht kein Array von 128 Byte (oder ggf. weniger, wenn meine CPU nur 8 Verbindungen könnte: 64 Byte)?

Ich glaube, das hier sind schon eher ungewöhnliche und spezielle Fragen, aber vielleicht kann mir ja dennoch jemand helfen. Wäre auf jeden Fall super, da ich auch mit der S7-Hilfe, google etc. nicht weiterkomme.

Schönen Tag noch und Danke für hilfreiche Antworten schon mal im Voraus!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
- Zykluszeiten gibt Dir auch der OB1
- Diagnosepuffer und Verbindungsstatus: aktiviere bei PN-CPU den Webserver, dann gibts diese Informationen fertig aufbereitet als Website
- Zykluszeit und weiteres im Webserver anzeigen geht am einfachsten per Variablentabelle (VAT) mit Häkchen bei [v] Webserver
- PLCSIM simuliert immer eine CPU der 400er Klasse, unabhängig welche CPU in HW Konfig projektiert ist
- Warum scheinbar mehr Puffergröße als nötig verlangt wird - frag Siemens. Hat wahrscheinlich damit zu tun, daß gleiche Firmwareteile auf verschieden großen CPU verwendet werden und dann nicht extra abgespeckt werden.

Harald
 
Zuletzt bearbeitet:
1.: Das habe ich schon gesehen, aber da steht nichts darüber, welcher SFC in welcher CPU verwendet werden kann.
2.: Zu den Detailinformationen steht hier auch nichts drin. Hier der entsprechende Abschnitt:

Datensatz

Ein Datensatz der Teilliste mit der SZL-ID W#16#xyA0 hat folgenden Aufbau:

Name Länge in Worten Bedeutung
ID 1 Wort Ereignis-ID
info 5 Worte Informationen zum Ereignis bzw. zu dessen Wirkung
time 4 Worte Zeitstempel des Ereignisses

3.: ...?

Hat mir leider nicht weitergeholfen, es sei denn, ich hab was übersehn, dann entschuldige natürlich bitte.
 
Dass ich diese Informationen auch anders bekomme, ist mir klar, aber es geht ja gerade darum, dass ich sie gerne im Programm hätte und sie dann ggf. an ein übergeordnetes Leitsystem weiterreichen möchte ;-)

Aber danke für die Infos, hat mir zumindest teilweise weitergeholfen (PLCSIM --> immer 400er).
 
Naja, da sind diese SFCs überhaupt nicht aufgeführt, deshalb war ich mir da unsicher ;-) sollte meiner Meinung nach dann aber eigentlich auch noch in der Simatic-Hilfe für die beiden SFCs stehen, oder? "Achtung, nicht bei 300er CPUs" oder so... Aber gut, dann weiß ich Bescheid. Danke nochmals!
 
Jo, da auch.

unabhängig von dem Vorhandensein der SFB/SFC verhalten sich die 300 und 400 im Detail aber auch noch verschieden, und PLCSIM sowieso... Von daher musst Du schon wissen, für welche CPU Du Deinen Baustein schreiben willst. Ich würd das dann auch auf einer identischen CPU mit möglichst gleicher Firmware testen...
 
Zurück
Oben