OK hier mal der Baustein villeicht findet ihr ja was.
FUNCTION_BLOCK "evacuation conveyor 2"
TITLE =
AUTHOR : 'A.Kohler'
VERSION : 0.1
VAR_INPUT
release : BOOL ;
blockade_impulse : BOOL ;
time_conveyor_forward : TIME ;
time_blockade_pos : TIME ;
time_blockade_neg : TIME ;
time_conveyor_backward : TIME ;
timer1 : COUNTER ;
blockade_values : INT ;
step : INT ;
END_VAR
VAR_OUTPUT
fault_to_many_blockade : BOOL ;
actual_count_value : INT ;
END_VAR
VAR
released : BOOL ;
conveyor_forward : BOOL ;
pos_blockade : BOOL ;
neg_blockade : BOOL ;
mem_blockade : BOOL ;
conveyor_backward : BOOL ;
pos_edge_conveyor_forwar : BOOL ;
count_value_word : WORD ;
count_value_int : INT ;
evac_pump : BOOL ;
test : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =release delivery conveyor
U #release;
S #released;
UN #release;
R #released;
U #released;
= #evac_pump;
NETWORK
TITLE =conveyor forward
U( ;
O( ;
L #step;
L 6;
==I ;
) ;
O( ;
L #step;
L 7;
==I ;
) ;
) ;
NOT ;
U #released;
UN #conveyor_backward;
= #conveyor_forward;
NETWORK
TITLE =blockade control pos. edge
U #conveyor_forward;
U #blockade_impulse;
= L 0.0;
BLD 103;
CALL "TON" , "time neg blockade eva 2" (
IN := L 0.0,
PT := T#5S);
NOP 0;
NETWORK
TITLE =
U "time neg blockade eva 2".Q;
U #released;
= #pos_blockade;
NETWORK
TITLE =blockade control neg. edge
U #conveyor_forward;
UN #blockade_impulse;
= L 0.0;
BLD 103;
CALL "TON" , "time pos blockade eva 2" (
IN := L 0.0,
PT := T#5S);
NOP 0;
NETWORK
TITLE =
U "time pos blockade eva 2".Q;
U #released;
= #neg_blockade;
NETWORK
TITLE =blockade
O #pos_blockade;
O #neg_blockade;
= #mem_blockade;
NETWORK
TITLE =conveyor backward
U #mem_blockade;
= L 0.0;
BLD 103;
CALL "TP" , "time conveyor backward 2" (
IN := L 0.0,
PT := T#3S);
NOP 0;
NETWORK
TITLE =
U "time conveyor backward 2".Q;
U #released;
= #conveyor_backward;
NETWORK
TITLE =counter blockade
U #mem_blockade;
ZV #timer1;
BLD 101;
U #released;
L C#0;
S #timer1;
U #blockade_impulse;
R #timer1;
NOP 0;
LC #timer1;
T #count_value_word;
NOP 0;
NETWORK
TITLE =transform into INT
L #count_value_word;
BTI ;
T #count_value_int;
NOP 0;
NETWORK
TITLE =actual count value
L #count_value_int;
T #actual_count_value;
NOP 0;
NETWORK
TITLE =compare blockade values
L #count_value_int;
L #blockade_values;
>=I ;
= #fault_to_many_blockade;
END_FUNCTION_BLOCK