-> Hier kostenlos registrieren
Hallo zusammen,
in meinem Baustein hätte ich gerne eine Daignosefunktion für OB 86(Rack or station error). Ich benutze eine et200sp und CM4*IO Link module.
Mein Problem: Viele der "Fehler" gibt es nur als gegangen. Nehmen wir Z.B. "Wiederkehr eines PROFINET IO-Devices, Sollausbau weicht von Istausbau ab". Ich verliere die Verbindung zur Station, OB 86 kommt. Mein Baustein geht jetzt in Fehlermodus und zeigt "Ausfall eines PROFINET IO-Devices".
Wenn in in diesem Fehlerfall nun ein CM-Modul weggenommen wurde, und dann die Verbindung wieder hergestellt ist, bekomme ich den Fehler: "Wiederkehr eines PROFINET IO-Devices, Sollausbau weicht von Istausbau ab". Wenn der CM-Baustein jetzt wieder gesteckt wird und somit der Fehler weg ist, erhalte ich keinen OB 86 Aufruf mehr. Ich setzte in meinem Baustein den Fehler aber nur zurück, wenn ich von OB86 wieder ein ok bekomme. Ich will ja wissen welcher Fehler mal kam und welcher weg ist. Ist meine Denkweise zu diesem Thema falsch. Bitte helt mir *verzweifel*. Vielen Dank!
Beschreibung Rückgabe für OB 86 Aufruf in TIA:
EV-class 16# Fault_ID Beschreibung
Programmabschnitt Auswertung OB 86
IF #TOP_SI.NUM = 86 AND #TOP_SI.ZI1 = #HW_ID_Station THEN //Wenn OB 86 und HardwareID von zu überwachender Station
#RetVal := RD_SINFO(TOP_SI => #TOP_SI_OB86, START_UP_SI => #START_UP_SI); //Hole OB 86 infos
CASE BYTE_TO_INT(#TOP_SI_OB86.Fault_ID) OF //Unterscheide welcher Fehler
16#CB:
IF #TOP_SI_OB86.Event_Class = 16#39 THEN
#ErProfDev := true;
ELSE //OB86 Fehler beseitigt. (einzige Rücksetzung für Fehler= falsch???)
#ErProfDev := false;
#ErProfFault := false;
#ErProfPara := false;
#ErProfCof := false;
END_IF;
16#CC:
#ErProfFault := true;
16#CD:
#ErProfPara := true;
16#CE:
#ErProfCof := true;
16#CF:
IF #TOP_SI_OB86.Event_Class = 16#32 THEN
#ErProfAc := true;
ELSE
#ErProfAc := false;
END_IF;
END_CASE;
in meinem Baustein hätte ich gerne eine Daignosefunktion für OB 86(Rack or station error). Ich benutze eine et200sp und CM4*IO Link module.
Mein Problem: Viele der "Fehler" gibt es nur als gegangen. Nehmen wir Z.B. "Wiederkehr eines PROFINET IO-Devices, Sollausbau weicht von Istausbau ab". Ich verliere die Verbindung zur Station, OB 86 kommt. Mein Baustein geht jetzt in Fehlermodus und zeigt "Ausfall eines PROFINET IO-Devices".
Wenn in in diesem Fehlerfall nun ein CM-Modul weggenommen wurde, und dann die Verbindung wieder hergestellt ist, bekomme ich den Fehler: "Wiederkehr eines PROFINET IO-Devices, Sollausbau weicht von Istausbau ab". Wenn der CM-Baustein jetzt wieder gesteckt wird und somit der Fehler weg ist, erhalte ich keinen OB 86 Aufruf mehr. Ich setzte in meinem Baustein den Fehler aber nur zurück, wenn ich von OB86 wieder ein ok bekomme. Ich will ja wissen welcher Fehler mal kam und welcher weg ist. Ist meine Denkweise zu diesem Thema falsch. Bitte helt mir *verzweifel*. Vielen Dank!
Beschreibung Rückgabe für OB 86 Aufruf in TIA:
EV-class 16# Fault_ID Beschreibung
39 | CA | Ausfall eines PROFINET IO-Systems |
39/38 | CB | Ausfall/Wiederkehr eines PROFINET IO-Devices |
38 | CC | Wiederkehr eines PROFINET IO-Devices mit Störung oder Wartung |
38 | CD | Wiederkehr eines PROFINET IO-Devices, Sollausbau weicht von Istausbau ab |
38 | CE | Wiederkehr eines PROFINET IO-Devices, Fehler bei der Baugruppenparametrierung |
32/33 | CF | Aktivierung/Deaktivierung eines IO-Devices mit der Anweisung "D_ACT_DP" |
39/38 | F8 | Ausfall/Wiederkehr eines Teils der Submodule eines PROFINET I-Devices |
38 | F9 | Wiederkehr eines Teils der Submodule eines PROFINET I-Devices mit Device-Konfigurationsunterschied |
Programmabschnitt Auswertung OB 86
IF #TOP_SI.NUM = 86 AND #TOP_SI.ZI1 = #HW_ID_Station THEN //Wenn OB 86 und HardwareID von zu überwachender Station
#RetVal := RD_SINFO(TOP_SI => #TOP_SI_OB86, START_UP_SI => #START_UP_SI); //Hole OB 86 infos
CASE BYTE_TO_INT(#TOP_SI_OB86.Fault_ID) OF //Unterscheide welcher Fehler
16#CB:
IF #TOP_SI_OB86.Event_Class = 16#39 THEN
#ErProfDev := true;
ELSE //OB86 Fehler beseitigt. (einzige Rücksetzung für Fehler= falsch???)
#ErProfDev := false;
#ErProfFault := false;
#ErProfPara := false;
#ErProfCof := false;
END_IF;
16#CC:
#ErProfFault := true;
16#CD:
#ErProfPara := true;
16#CE:
#ErProfCof := true;
16#CF:
IF #TOP_SI_OB86.Event_Class = 16#32 THEN
#ErProfAc := true;
ELSE
#ErProfAc := false;
END_IF;
END_CASE;
Zuletzt bearbeitet: