Step 7 OB82 Aufrufe Geräteausfall / Gerätewiederkehr

Draco Malfoy

Level-1
Beiträge
1.168
Reaktionspunkte
82
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen,

folgende Frage: Ein Device ist als PN-Teilnehmer mit meiner CPU verbunden. Das Device ist diagnosefähig, und generiert Diagnose-Alarme nach IEC 61158-6-10-1 (Kennung 8000h, Kanaldiagnose). Das Device hat Module und Submodule.

Jetzt geht mein Device vom Bus, und kommt mit einem Haufen Diagnosealarmen wieder. In der HW-Konfiguration sehe ich zwar, daß mein Device gestört ist, und dort steht auch eingetragen, welche Störung es hat. Aber einen OB82-Aufruf habe ich dazu nicht mitbekommen; nur den OB86 mit Wiederkehr unter Störung.

Frage: Warum ist es so ? Ist es richtig so ? Wieso sehe ich die Ereignisse nicht, die beim StartUp passieren ? Wie erkennt die CPU, daß eine Baugruppe gestört ist, wenn nicht über den Diagnosealarm ?

Thanx im Voraus.
 
In der Hilfe des OB82 steht:
Hinweis:
Bei PROFINET IO-Controllern können Sie per Projektierung vorgeben, ob Kommunikationsalarme zum Aufruf des Diagnosealarm-OB führen sollen oder nicht. Bei diesen Alarmen handelt es sich um Diagnoseereignisse der PROFINET-Schnittstelle.Voreinstellung ist, dass diese Ereignisse keinen OB 82-Aufruf zur Folge haben.

Ist folgender Hacken gesetzt ( ganz unten in der Registerkarte ) bzw. um welche CPU handelt es sich?

PNIO.png
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Danke für den Hinweis, ich teste das mal jetzt mit diesem Hacken. Es geht um eine 416-3PN/DP mit der Sachnummer 6ES416-3FR05-0AB0 / V5.3. Wäre aber wünschenswert, wenn das Verhalten auch auch anderen CPUs reproduzierbar bleibt.
 
Hi,

Ich habe das jetzt ausprobiert. Der Hacken ist und war gesetzt. Ich weiß nicht, ob er bei PCS7 Projekten immer defaultmäßig gesetzt ist. Das Verhalten ändert sich dadurch aber nicht. Ich sehe die Diagnoseereignisse nicht kommen. Nur welche, die bei intakter Busverbindung zustande kommen. Die CPU an sich geht dabei nicht vom Bus, nur das Device.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vermutlich weil in dem Fall auch kein Diagnoseereignis auftritt, sondern nur der Teilnehmer ausfällt.

Mal angenommen du ziehst das Netzwerkkabel am Device ab. Watchdog im Controller läuft ab, Controller sendet einen entsprechenden PN-IO Alarm an das Device (der vermutlich nicht mehr ankommt).
Der Controller schickt kontinuierlich einen Ident Request an das Device. Wenn das Device wieder da ist kommt Ident Ok. AR wird wieder aufgebaut und Verbindung läuft wieder. Im Normalfall sendet das Device in diesem Fall kein Ereignis.
 
Ich bin mir nicht sicher, ob ich das verstehe, und ob wir von dem Selben reden.

Noch einmal das Szenario:

Gerät geht vom Bus, und während es im Nirvana war, hat es sich zwei-drei neue Diagnoseereignisse überlegt, und kommt dann mit diesen wieder. Weil wir die BG zum Beispiel zuerst umparametriert und dann in den Restart geschickt haben. Ich sehe in der CPU folgende Abläufe:

- OB86 Aufruf mit EV_CLASS = 38h und EV_NUM = CCh (PN IO Stationswiederkehr mit Störung oder Wartung);
- kein Aufruf von OB82;
- Gerät wird in der HW-Config trotzdem als gestört angezeigt, SF-LED leuchtet und in dem "Baugruppenzustand" steht unter den Diagnosedetails die letzte Diagnosemeldung eingetragen;

Frage: Wenn ein DiagnoseInterrupt gar nicht stattgefunden hat, woher weiß denn die HW-Konfig in der Online Sicht von dem Gerätezustand und enthält Informationen über den Fehler ?
 
Zuletzt bearbeitet:
Hi,

die HWConfig ließt es aus dem Device aus, genauso wie du es von der CPU Seite auslesen musst wenn ein Buswiederkehr mit Störung anliegt.(RDSYSST)

Gruß
Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

die HWConfig ließt es aus dem Device aus, genauso wie du es von der CPU Seite auslesen musst wenn ein Buswiederkehr mit Störung anliegt.(RDSYSST)

Gruß
Christoph

Welchen Datensatz kann ich denn dafür auslesen ? Ich möchte sämtliche Diagnosealarme mit Alarmcodes sehen, die bei einer Wiederkehr anstehen.
 
Christoph,

ich entschuldige mich vielmals, aber dein Link hat, wie mir scheint, nichts mit meinem Problem zu tun ?

Daß ich mit RALRM oder RDREC einiges auslesen kann, war mir durchaus bewusst. Und auch einen 4C91 bzw. 0C91 oder 0C96 mit RDSYSST kann ich durchaus auslesen, und mache davon Gebrauch in meinem Programm. Mir ging es aber dadrum, den Diagnosepuffer einer Baugruppe ohne azyklische Zugriffe zur Laufzeit über den Diagnostic Interrupt auszulesen.

Beim Wiederkehr der BG funktioniert es nicht ohne Weiteres. Du hast aber oben geschrieben, daß du mit RDSYSST irgendwelche SZL IDs dafür lesen kannst, ich nehme an, es ist nicht der 0C96, denn er enhält keine expliziten Diagnosealarme. Welchen SZL ID möchtest du denn lesen, um an diese Daten heranzukommen ?

schau mal hier da wird das erklärt für PNIO und auch Beispielcode : https://support.industry.siemens.com.../view/24000238
Also ne SFC 51 aufzurufen kriege ich so gerade noch ohne Beispielcode hin. Ich wollte ID und Strukturaufbau wissen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

schau auf der Seite gibt es ein Dokument das den Titel "SZL-Listen zu PROFINET/ PROFIBUS" hat.
Darin wird erklärt wie das mit den Diagnosedatensätzen bei PROFINET so funktioniert und wie man sie ausliest und was so alles drin steht.

Alternativ kann man auch https://support.industry.siemens.com/cs/ww/de/view/101906697 anschauen, dort ist es aber nur für ne zentrale i/O Baugruppe erklärt.

Gruß
Christoph
 
Christoph,

ich denke, es ist sinnfrei. Wir reden aneinander vorbei. Du willst entweder meine Frage nicht lesen oder willst einfach das Problem nicht verstehen. Ich weiß, was SZL Listen sind, wie man die ausliest, und wofür man sie verwendet. Ich habe nach etwas anderem gefragt. Ich kann das jetzt noch 5 mal wiederholen, durch weitere Verweise auf betagte Handbücher werde ich leider nicht schlauer.
 
Deine Frage war wie?
"Welchen Datensatz kann ich denn dafür auslesen ? Ich möchte sämtliche Diagnosealarme mit Alarmcodes sehen, die bei einer Wiederkehr anstehen." oder täusche ich mich?
Dann ist die Antwort : W#16#800A; W#16#800C und W#16#E00C
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine Frage war wie?
"Welchen Datensatz kann ich denn dafür auslesen ? Ich möchte sämtliche Diagnosealarme mit Alarmcodes sehen, die bei einer Wiederkehr anstehen." oder täusche ich mich?
Dann ist die Antwort : W#16#800A; W#16#800C und W#16#E00C

Nein. Das ist nicht die Antwort. Du hast geschrieben, daß du mit SFC51 Datensätze lesen möchtest. Die W#16#800.. Datensätze sind aber nur mit RD_REC lesbar. Das ist ein azyklischer Auftrag, der geht nicht in einem OB82 Aufruf rüber. Ich möchte überhaupt keine azyklischen Aufträge dort drin haben.
 
Zuletzt bearbeitet:
Zurück
Oben