Files

66 lines
2.3 KiB
Plaintext

FUNCTION_BLOCK "MAusfahrFreigabe_neu"
{ 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
Impuls : Bool; // Zähl-Impuls
Vorbei_1 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_2 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_3 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_4 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Vorbei_5 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
Inks_Vorbei_1 : Int; // Rest-Inks für diese Position
Inks_Vorbei_2 : Int; // Rest-Inks für diese Position
Inks_Vorbei_3 : Int; // Rest-Inks für diese Position
Inks_Vorbei_4 : Int; // Rest-Inks für diese Position
Inks_Vorbei_5 : Int; // Rest-Inks für diese Position
END_VAR
VAR_IN_OUT
Antrieb_ein : Bool; // Antrieb einschalten
END_VAR
VAR
Dyn : Struct
Rest_Inks : Int := 1; // BM noch unterwegs [Inks]
END_STRUCT;
END_VAR
VAR_TEMP
tAktiv : Int;
END_VAR
BEGIN
REGION Vorbei-Sensoren auswerten
IF #Vorbei_5 THEN GOTO Chek; END_IF;
IF #Vorbei_5 AND #Vorbei_4 THEN GOTO Chek; END_IF;
IF (#Vorbei_5 AND #Vorbei_4) AND #Vorbei_3 THEN GOTO Chek; END_IF;
IF ((#Vorbei_5 AND #Vorbei_4) AND #Vorbei_3) AND #Vorbei_2 THEN GOTO Chek; END_IF;
IF (((#Vorbei_5 AND #Vorbei_4) AND #Vorbei_3) AND #Vorbei_2) AND #Vorbei_1 THEN GOTO Chek; END_IF;
GOTO En02;
Chek: ;
IF #Inks_Vorbei_1 < #Dyn.Rest_Inks THEN GOTO En02; END_IF;
#Dyn.Rest_Inks := #Inks_Vorbei_1;
En02: ;
END_REGION
REGION Rest-Inks verändern
IF NOT (#Impuls) THEN GOTO En04; END_IF;
#Dyn.Rest_Inks := #Dyn.Rest_Inks + -1;
IF (#Dyn.Rest_Inks + -1) > 0 THEN GOTO En04; END_IF;
#Dyn.Rest_Inks := 1;
En04: ;
END_REGION
REGION Antrieb einschalten
IF #Dyn.Rest_Inks > 1 THEN #Antrieb_ein := TRUE; END_IF;
END_REGION
REGION Ende
RETURN;
END_REGION
END_FUNCTION_BLOCK