Niemandhatmichgesehn
Level-1
- Beiträge
- 62
- Reaktionspunkte
- 2
-> 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!
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!