66 lines
2.3 KiB
Plaintext
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
|