-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe mir einen Baustein geschrieben, der bei mehreren gleichzeitig auftretenden Supervision Fehlern die Schrittnummern in ein Array schreibt.
Dafür ticker ich jeden zweiten Zyklus die Schrittnummer mit S_NEXT weiter. Damit nur Fehler angezeigt werden, ist der DISP_SEF bei einem Supervision Fehler auch true.
Nun ist das Problem, dass das scheinbar nur funktioniert, wenn ich weniger als 8 Schritte in meiner Schrittkette habe.
Ich hab mir das mal mit einem Trace angeschaut und dort sieht es so aus, als würde die der Graphbaustein es nicht mehr schaffen den S_NO schnell genug zu aktualisieren.


Gibt es irgendeine Angabe dazu wie lange der Graphbaustein braucht um den S_NO zu aktualisieren?
ich habe mir einen Baustein geschrieben, der bei mehreren gleichzeitig auftretenden Supervision Fehlern die Schrittnummern in ein Array schreibt.
Dafür ticker ich jeden zweiten Zyklus die Schrittnummer mit S_NEXT weiter. Damit nur Fehler angezeigt werden, ist der DISP_SEF bei einem Supervision Fehler auch true.
Code:
IF #FAULT THEN
IF NOT #S_NEXT THEN
IF (#S_NO <> #AktSchrittNr[0])
AND (#S_NO <> #AktSchrittNr[1])
AND (#S_NO <> #AktSchrittNr[2])
AND (#S_NO <> #AktSchrittNr[3])
AND (#S_NO <> #AktSchrittNr[4])
THEN
#AktSchrittNr[#i] := #S_NO;
END_IF;
#i += 1;
END_IF;
#S_NEXT := NOT #S_NEXT;
IF #i >= #GrößeArray THEN
#i := 0;
REGION Abgleich Zahlen vorhanden?
// Dieser Teil überprüft ob ein FAULT gegangen ist
FOR #j := 0 TO #GrößeArray - 1 DO
IF #SchrittNr[#j] <> 0 THEN // Wenn Schrittnr nicht 0 ist,
#SVorhanden := False;
FOR #k := 0 TO 4 DO // schauen ob die Aktuelle Schrittnr vorhanden ist.
IF #SchrittNr[#j] = #AktSchrittNr[#k] THEN
#SVorhanden := True;
END_IF;
END_FOR;
IF NOT #SVorhanden THEN // Wenn nicht vorhanden, dann Schritt := 0
#SchrittNr[#j] := 0;
END_IF;
END_IF;
END_FOR;
END_REGION
REGION Neue Zahlen schreiben
// Dieser Teil schreibt jede aktuelle Schritt Nr in den Ausgang, falls diese Nummer noch nicht vorhanden ist.
FOR #j := 0 TO #GrößeArray - 1 DO
IF #AktSchrittNr[#j] <> 0 THEN // Wenn aktueller Schritt nicht 0
#SVorhanden := False;
FOR #k := 0 TO #GrößeArray - 1 DO // Schauen ob der Aktuelle Schritt schon vorhanden ist
IF #SchrittNr[#k] = #AktSchrittNr[#j] THEN
#SVorhanden := True;
END_IF;
END_FOR;
IF NOT #SVorhanden THEN // Wenn nicht vorhanden,
FOR #k := 0 TO 4 DO
IF #SchrittNr[#k] = 0 THEN // Schritt suchen der = 0 ist,
#SchrittNr[#k] := #AktSchrittNr[#j]; //diesen Schritt beschreiben
EXIT;
END_IF;
END_FOR;
END_IF;
END_IF;
END_FOR;
END_REGION
FOR #j := 0 TO #GrößeArray - 1 DO
#AktSchrittNr[#j] := 0;
END_FOR;
END_IF;
ELSE
REGION Reset
FOR #j := 0 TO #GrößeArray - 1 DO
#SchrittNr[#j] := 0;
END_FOR;
#i := 0;
#S_NEXT := FALSE;
END_REGION
END_IF;
Nun ist das Problem, dass das scheinbar nur funktioniert, wenn ich weniger als 8 Schritte in meiner Schrittkette habe.
Ich hab mir das mal mit einem Trace angeschaut und dort sieht es so aus, als würde die der Graphbaustein es nicht mehr schaffen den S_NO schnell genug zu aktualisieren.


Gibt es irgendeine Angabe dazu wie lange der Graphbaustein braucht um den S_NO zu aktualisieren?