PROGRAM motor VAR START : BOOL; STOP : BOOL; DELAY : TIME := T#100ms; RUNNING : BOOL; RS0 : RS; TON0 : TON; END_VAR TON0(IN := START, PT := DELAY); RS0(S := TON0.Q, R1 := STOP); RUNNING := RS0.Q1; END_PROGRAM PROGRAM traffic_light VAR RED : BOOL; RED0 : BOOL; ORANGE : BOOL; GREEN : BOOL; DELAY : TIME := T#30s; TON0 : TON; TON1 : TON; TON2 : TON; WAIT : BOOL := 1; TON3 : TON; DELAY2 : TIME := T#1s; DELAY3 : TIME := T#10s; END_VAR INITIAL_STEP Step0: GREEN(N); COMPUTE_FUNCTION_BLOCKS(S); END_STEP ACTION COMPUTE_FUNCTION_BLOCKS: TON0(IN := WAIT, PT := DELAY); TON4(IN := WAIT, PT := DELAY3); TON3(IN := WAIT, PT := DELAY2); END_ACTION TRANSITION FROM Step0 TO Step1 := TON0.Q; END_TRANSITION STEP Step1: ORANGE(N); END_STEP TRANSITION FROM Step1 TO Step2 := TON3.Q; END_TRANSITION STEP Step2: RED(N); END_STEP TRANSITION FROM Step2 TO Step0 := TON4.Q; END_TRANSITION END_PROGRAM PROGRAM automate_controle_commande_ld VAR P1_enc : BOOL; WAIT2 : TIME; P1_run : BOOL; P2_enc : BOOL; P2_run : BOOL; P3_enc : BOOL; P3_run : BOOL; Pump_def : BOOL; WAIT7 : TIME; secours : BOOL; only_one_run : BOOL; TON0 : TON; WAIT13 : TIME; TON1 : TON; secours_c_ok : BOOL; CTU0 : CTU; TON2 : TON; CTU1 : CTU; CTU2 : CTU; req_enc_ok : BOOL; WAIT15 : TIME; TON3 : TON; R_TRIG1 : R_TRIG; _TMP_GT42_ENO : BOOL; _TMP_GT42_OUT : BOOL; R_TRIG2 : R_TRIG; _TMP_EQ54_OUT : BOOL; _TMP_EQ53_OUT : BOOL; _TMP_AND45_ENO : BOOL; _TMP_AND45_OUT : BOOL; END_VAR Pump_def := NOT(P1_run) AND P1_enc OR NOT(P2_run) AND P2_enc OR NOT(P3_run) AND P3_enc; Pump_def := TRUE; TON0(IN := TRUE, PT := WAIT7); secours := TON0.Q; only_one_run := NOT(P3_run) AND NOT(P2_run) AND P1_run OR NOT(P3_run) AND P2_run AND NOT(P1_run) OR P3_run AND NOT(P2_enc) AND NOT(P1_run); Pump_def := TRUE; TON2(IN := TRUE, PT := WAIT13); R_TRIG1(CLK := ); CTU1(CU := R_TRIG1.Q, R := true); _TMP_GT42_OUT := GT(EN := TON2.Q, IN1 := CTU1.CV, IN2 := 1, ENO => _TMP_GT42_ENO); secours_c_ok := _TMP_GT42_OUT; secours := TRUE; TON1(IN := TRUE, PT := WAIT2); R_TRIG2(CLK := P1_enc OR P2_enc OR P3_enc); CTU0(CU := R_TRIG2.Q, R := true); _TMP_EQ54_OUT := EQ(CTU0.CV, 1); CTU2(R := NOT(P1_enc) OR NOT(P2_enc) OR NOT(P3_enc), PV := 1); _TMP_EQ53_OUT := EQ(CTU2.CV, 1); _TMP_AND45_OUT := AND(EN := TON1.Q, IN1 := _TMP_EQ54_OUT, IN2 := _TMP_EQ53_OUT, ENO => _TMP_AND45_ENO); req_enc_ok := _TMP_AND45_OUT; only_one_run := TRUE; TON3(IN := TRUE, PT := WAIT15); only_one_run := NOT(TON3.Q); END_PROGRAM CONFIGURATION Config0 RESOURCE Res0 ON PLC TASK task0(INTERVAL := T#20ms,PRIORITY := 0); PROGRAM instance0 WITH task0 : motor; END_RESOURCE END_CONFIGURATION