OB 82 abfragen

s7-sima

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


ich will Fehler in einem OB 82 auswerten.
Muss ich die Fehler die mich interessieren alle auf Merker legen, damit sie nicht verloren gehen, oder
laufen die alle im Diagnosepuffer auf und können da eingesehen werden?
Wenn ja, wie lange bleiben sie dort sichtbar?


MfG
 
Hallo,

der OB82 wird nur im Fehlerfall aufgerufen, alles was da drin steht wird auch nur dann (einmal) bearbeitet, bevor es im zyklischen Betrieb weitergeht. Den Programmcode kannst du direkt im OB machen.
Kleines Beispiel:
im OB100 (Neustart) kreiere ich einen Zeitstempel um für Diagnosezwecke nachzuvollziehen wann die CPU das letzte mal einen Neustart gemacht hat.

mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der OB 82 (Diagnosealarm) ist ein Baustein für asynchrone Fehler. Das heißt er wird nur durchlaufen wenn ein solcher Fehler auftritt.
Bestimmte Fehler werden direkt in den Diagnosepuffer deiner CPU geschrieben, andere muss man ggf manuell in den Diagnosepuffer schreiben.
Der Diagnosepuffer hat eine feste Anzahl von Einträgen,
was heißt das je nach Menge der nachfolgenden Meldungen der gewünschte Eintrag früher oder später weg ist. First in, first out halt.
Wenn du den Aufruf des OB 82 genauer auswerten möchtest, dann muss du dich mit den Startinformationen des OB 82 befassen
und diese in andere Speicherbereiche (DB´s oder Merker) kopieren.
Man kann dafür auch den SFC51 im OB 82 aufrufen. Der wertet die Startinformationen des OB 82 aus und gibt sie im Datenformat Any + Struct aus.
Man könnte dann zb. einen dafür vorgesehen DB mit diesen Daten füttern.
Wenn notwendig oder gewünscht vielleicht auch mit einem Offset programmiert, so das man mehrere Ausführungen des OB 82 darin speichern kann.

Aber das ist imho ein Thema welches man haargenau auf seine notwendige Anwendung beziehen muss.
Ansonsten kann man damit Nächte lang verbringen ;-)
Gruß
Toki
 
Also stand im Moment ist, das im OB 82 ein Merker erzeugt wird sobald der OB 82 aufgerufen wird und ein weiterer Merker der eine der TEMP Variablem aufnimmt.
Beide Merker werden dann an ein Bedienpanel "gesendet" und sind dort bis zur Quittierung sichtbar. Ich frage mich nun, wird jede dieser TEMP Variablen, in den Diagnosepuffer geschrieben,
und hab ich eine Chance diese dort zu finden, oder geht das nur in dem einen Zyklus in dem der Fehler auftrat.
(Komme leider erst wieder in einigen Tagen an das Gerät)
 
Ich frage mich nun, wird jede dieser TEMP Variablen, in den Diagnosepuffer geschrieben
Grundsätzlich erstmal Nein.
Allerdings ohne das Projekt zu kennen sind wir auf ein paar mehr Informationen von dir angewiesen.
und hab ich eine Chance diese dort zu finden, oder geht das nur in dem einen Zyklus in dem der Fehler auftrat
Der Diagnosepuffer, wie oben schon beschrieben, ist wie ein First In First Out Speicher und wird irgendwann überschrieben.
Damit wird sie, zumindestens vorübergehend, gespeichert.
Allerdings mit den Temp Daten aus dem OB82 kannst du nur in dem Zyklus etwas anfangen in dem er aufgerufen wird.
Deshalb entweder sofort auswerten und z.B. eine Meldung generieren, oder abspeichern für spätere Analyse.

Gruß
Toki
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du ein Bedienpanel hast, kannst du dann nicht besser dort die Störmeldungen verwalten? Der Puffer sollte idr. größer sein als der Diagnosepuffer in der CPU.

Was für ein Panel bzw. Software hast du denn? Unter WinCC/flexible sollte man die Systemmeldungen relativ einfach auf das Panel bringen können. Jedoch dann nur mit den Texten die Siemens ausgibt.
 
Welches Panel genau verbaut ist muss ich nachschauen, optisch entspricht es dem 6AV3 617-1JC30-0​AX1
Das Problem an der ganzen Sache ist, das ich die Software nur im Notfall anfassen und neu laden möchte, da sie 10 Jahre alt
ist und ich nicht sicher bin ob sie noch 100% so arbeitet wie ich sie hier projektiert habe und keinen alten Softwarestand hochladen will.
Prinzipiell kann ich die Fehler speichern und ans Panel oder unseren Bus schicken, wird auch gemacht, leider nur Sammelmeldung OB 82 ausgelöst und
Batterie leer. Alle anderen Meldungen hielt der Ersteller für irrelevant nur geht die Maschine jetzt in Störung mit Meldung OB 82 ausgelöst und sonst nix weiter - war also
wohl einer der anderen Möglichkeiten an die ich nun ran möchte ohne allzuviel zu verändern.
 
... nur geht die Maschine jetzt in Störung mit Meldung OB 82 ausgelöst und sonst nix weiter... .
Wo erkennst du Meldung?
Denn ein HMI zeigt nur an was projektiert und was von der PLC geschickt wird. :confused:

Wenn der Fehler auftritt kannst du meist im Puffer der CPU den Fehler erkennen.
Alle Fehler zu dekodieren und anzeigen ist arbeit und du muss dann auch die HMI oder du kannst die in einen DB schreiben und dann händisch nachschauen.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und ich nicht sicher bin ob sie noch 100% so arbeitet wie ich sie hier projektiert habe und keinen alten Softwarestand hochladen will.
Wenn man an solch eine Anlage geht, dann macht man normalerweise erst mal einen AG-Abzug damit man den vorhandenen Stand gesichert hat.
Dann einen Online / Offline Vergleich, damit man weiß woran man ist.

Hast du denn momentan einen aktuellen oder wiederkehrenden Fehler den du erfassen und beseitigen willst?
Oder wie sollen wir uns das vorstellen?
Wenn die Anlage nicht permanent mit Meldungen und Fehlern überhäuft wird,
dann sollte man auch ein paar Tage später den Diagnosepuffer und die Stacks auswerten können um den Fehler zu finden.
Sag doch mal konkret ob du das Programm dahin gehend erweitern willst, oder nur den Fehler finden willst...
Gruß
Toki
 
Wo erkennst du Meldung?
Denn ein HMI zeigt nur an was projektiert und was von der PLC geschickt wird. :confused:
bike

Die Meldung wird im OB 82 generiert in einen Merker und ein DBW geschrieben und von Bedienpanel ausgewertet.
Allerdings wird eben nur gemeldet, das der OB 82 ausgelöst hat, nicht genau was.

Hast du denn momentan einen aktuellen oder wiederkehrenden Fehler den du erfassen und beseitigen willst?

Genau. Der Fehler kommt recht sporadisch und jetzt muss ich wissen was genau los ist.
Das Programm wird wahrscheinlich nur dann erweitert wenn es anders nicht geht,
wäre zwar nice to have, aber es wird wahrscheinlich nicht umgesetzt weil kaum Ressourcen dafür frei sind.
Außerdem weiß ich auch nicht wieviel Ressourcen auf der s7 noch frei sind - die hat ja auch nicht unbegrenzt Merker.
 
Wenn du dein Programm nicht erweitern möchtest, Schau doch in die Diagnosedaten der CPU,
vielleicht findet du dort was los ist.
Wenn du meinst fast alle deine Merker in deiner CPU sind belegt, besteht auch die möglichkeit
einen Datenbaustein zu erstellen zur fehlerauswertung, da passt erst einmal wieder ordentlich
was rein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
das Thema ist zwar schon älter habe aber eine Frage dazu.

Wenn ich jetzt alle Temp variablen des OB82 in einen DB haben will,
muss ich dann alle einzeln in den DB schieben oder gibt es eine Möglichkeit
ganz einfach alle Variablen in den DB zu speichern?
 
Du könntest in einem DB eine Struktur anlegen exakt wie die TEMP-Lokaldaten des OB (einfach alle Zeilen der TEMP-Deklarationen in den DB kopieren), und dann mit SFC20 BLKMOVE alle Variablen "in einem Rutsch" in den DB kopieren, z.B.
Code:
      CALL  "BLKMOV"
       SRCBLK :=P#L 0.0 BYTE 20
       RET_VAL:=#tempInt
       DSTBLK :=P#DB82.DBX 0.0 BYTE 20  //"MyDB".Lokaldaten_OB82

Harald
 
Zurück
Oben