VAR_INPUT
SAMPLE_T { S7_visible := 'false'; S7_sampletime := 'true' }: REAL ; //Sample Time [s]
ZEIT_GRENZ : REAL ; //Grenzwert Zeit [s]
I0 : BOOL ; //Bedingung Zeit soll laufen
HALT : BOOL ; //Zeit anhalten
RESET : BOOL ; //Setzt Zeit zurück
END_VAR
VAR_OUTPUT
ZEIT_IST { S7_m_c := 'true' }: REAL ; //Istwert Zeit [s]
ZEIT_IST_MIN { S7_m_c := 'true' }: REAL ; //Istwert Zeit [min]
Q0 : BOOL ; //Zeit erreicht
END_VAR
BEGIN
NETWORK
TITLE =
UN #I0; //Eingang nicht Null
O #HALT; //oder Halt
O #Q0; //oder Ausgang ist schon da
SPB WEIT; //kein weiterzählen
L #ZEIT_IST;
L #SAMPLE_T;
+R ;
T #ZEIT_IST;
WEIT: L #ZEIT_IST; //Abfrage ob erreicht
L #ZEIT_GRENZ;
>=R ;
U #I0;
= #Q0;
U #I0; //Wenn Eingang Null
UN #RESET; //und kein Reset....
SPB WEI2;
L 0.000000e+000;
T #ZEIT_IST;
SET ;
R #RESET;
WEI2: NOP 0; //...kein ablöschen
L #ZEIT_IST;
L 6.000000e+001;
/R ;
T #ZEIT_IST_MIN; //Umrechung auf Minuten
END_FUNCTION_BLOCK