Files
HundM_awl/=A01+UH07-KF00/Programmbausteine/Module/MAusfahrFreigabe_neu.awl
T

96 lines
2.2 KiB
Plaintext

FUNCTION_BLOCK "MAusfahrFreigabe_neu"
TITLE = Ausfahrfreigabe für Pufferstrecken
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
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
NETWORK
TITLE = Vorbei-Sensoren auswerten
L #Inks_Vorbei_5;
U #Vorbei_5;
SPB Chek;
L #Inks_Vorbei_4;
U #Vorbei_4;
SPB Chek;
L #Inks_Vorbei_3;
U #Vorbei_3;
SPB Chek;
L #Inks_Vorbei_2;
U #Vorbei_2;
SPB Chek;
L #Inks_Vorbei_1;
U #Vorbei_1;
SPB Chek;
SPA En02;
Chek: L #Dyn.Rest_Inks ;//Neuer Wert kleiner?
<I;//Ja !
SPB En02 ;//Ohne Speicherung weiter
TAK;//Neuen Wert übernehmen
T #Dyn.Rest_Inks;//Wert speichern
En02: NOP 0;
NETWORK
TITLE = Rest-Inks verändern
UN #Impuls ;//Von MImpulsGeber
SPB En04;
//BT ist unterwegs:
L #Dyn.Rest_Inks;
+ -1;
T #Dyn.Rest_Inks;
L 0;//Minimum erreicht?
>I;//Nein !
SPB En04;
L 1;
T #Dyn.Rest_Inks;//Minimum übergeben
En04: NOP 0;
NETWORK
TITLE = Antrieb einschalten
L #Dyn.Rest_Inks;
L 1 ;//vorhanden ?
>I;//Ja !
S #Antrieb_ein;
NETWORK
TITLE = Ende
BE;
END_FUNCTION_BLOCK