132 lines
3.0 KiB
Smalltalk
132 lines
3.0 KiB
Smalltalk
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
|