TIA lokale Fehlerbehandlung im Baustein

Howard

Level-1
Beiträge
1.026
Reaktionspunkte
329
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin,
(falls nicht am richtigen Ort - bitte verschieben)
da ich zu dem Thema hier noch nichts gefunden habe, es aber ziemlich mächtig finde, wollte ich meine Erkenntnisse zu der lokalen Fehlerbehandlung gern mit euch teilen.
Manchmal steht man ja vor dem Problem, beispielsweise einen fehlerhaften Array-Zugriff zu vermeiden. In meinem Fall habe ich bspw. ein String-Array mit Fehlerbeschreibungen von SEW die ich je nach Status des FUs ausgebe. Also Statuscodes von 0 bis n und mein String-Array ebenfalls von 0 bis n. Bleibt das Problem, was tun wenn der FU fälschlicherweise den Statuscode n+1 ausgibt?
Mit der lokalen Fehlerbehandlung der neuen CPUs kann man hierfür eine Temp-Variable vom Siemens-Datentyp "ErrorStruct" anlegen und innerhalb des Bausteins die Funktion "GET_ERROR" (VariableVomTypErrorStruct) aufrufen.

ErrorStruct.JPG

GetError.JPG

Hierdurch wird dann dieser ominöse Haken in den Bausteineigenschaften gesetzt:

Bausteineigenschaften.jpg

Das ganze hat dann zur folge, dass beispielsweise bei meinem möglicherweise falschen Array-Zugriff die CPU nicht in Stop geht und nach keinem Fehler-OB gefragt wird. Die Fehlerbehandlung erfolgt also nicht global, sondern lokal im Baustein.
Hierfür ist dann lediglich die Variable vom Typ "ErrorStruct" auszuwerten. Im einfachsten Fall mit:

Code:
IF #VariableVomTypErrorStruct.ERROR_ID <> 0 then
; // mache im Fehlerfall irgendwas anderes
End_If;

Für genauere Infos (das ganze erscheint mir noch wesentlich mächtiger) kann ich gern noch auf die Siemens-Hilfe verweisen. Sucht einfach nach ErrorStruct und GET_ERROR.

Das ganze ist vielleicht auch mal für den einen oder anderen interessant um irgendeinem Programmierfehler in einer Schleife auf die Schliche zu kommen ;)
Viel Spaß beim testen
 
Zurück
Oben