107 lines
3.0 KiB
Plaintext
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
|