Files

107 lines
3.0 KiB
Plaintext

FUNCTION_BLOCK "MBlinken"
{ S7_Optimized_Access := 'FALSE' }
// Mechanische AWL->SCL-Konvertierung (awl2scl.py). Kontrollfluss per GOTO,
// wo im Original mit Sprungmarken gearbeitet wurde. Vor Uebernahme in TIA
// Portal pruefen/kompilieren (siehe SCL-Export/README.md).
VAR_INPUT
Impulsdauer : Bool; // Impulsdauer
Error_1 : Bool;
Error_2 : Bool;
Error_3 : Bool;
Error_4 : Bool;
Error_5 : Bool;
Error_6 : Bool;
Error_7 : Bool;
Error_8 : Bool;
Error_9 : Bool;
Error_10 : Bool;
END_VAR
VAR_OUTPUT
hAnzeige : Bool; // Anzeige
END_VAR
VAR
Flanke_Ausschalttakt : Bool;
Kein_Blinken : Bool;
Ausschalttakte : Int; // Betriebsbereit ist ausgeschaltet
END_VAR
VAR_TEMP
tGen1_Flanke : Bool;
END_VAR
BEGIN
REGION Anzeige bei Error 1-10 1-10 mal blinken lassen
IF ((((((((NOT (#Error_1) AND NOT (#Error_2)) AND NOT (#Error_3)) AND NOT (#Error_4)) AND NOT (#Error_5)) AND NOT (#Error_6)) AND NOT (#Error_7)) AND NOT (#Error_8)) AND NOT (#Error_9)) AND NOT (#Error_10) THEN
#hAnzeige := FALSE;
#Flanke_Ausschalttakt := FALSE;
#Kein_Blinken := FALSE;
GOTO NoAn;
END_IF;
#hAnzeige := #Impulsdauer AND NOT (#Kein_Blinken);
#tGen1_Flanke := NOT (#Impulsdauer) AND #Flanke_Ausschalttakt;
#Flanke_Ausschalttakt := #Impulsdauer;
IF #tGen1_Flanke THEN #Ausschalttakte := #Ausschalttakte + 1; END_IF;
IF (#Ausschalttakte >= 2) AND #Kein_Blinken THEN
#Kein_Blinken := FALSE;
GOTO NoAn;
END_IF;
IF #Kein_Blinken THEN GOTO En01; END_IF;
IF (#Ausschalttakte >= 1) AND #Error_1 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 2) AND #Error_2 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 3) AND #Error_3 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 4) AND #Error_4 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 5) AND #Error_5 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 6) AND #Error_6 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 7) AND #Error_7 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 8) AND #Error_8 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 9) AND #Error_9 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF (#Ausschalttakte >= 10) AND #Error_10 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
IF #Ausschalttakte > 10 THEN
#Kein_Blinken := TRUE;
GOTO NoAn;
END_IF;
GOTO En01;
NoAn: ;
#Ausschalttakte := 0;
En01: ;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK