131 lines
2.6 KiB
Smalltalk
131 lines
2.6 KiB
Smalltalk
TYPE
|
|
LOGLEVEL : (CRITICAL, WARNING, INFO, DEBUG) := INFO;
|
|
END_TYPE
|
|
|
|
FUNCTION_BLOCK LOGGER
|
|
VAR_INPUT
|
|
TRIG : BOOL;
|
|
MSG : STRING;
|
|
LEVEL : LOGLEVEL := INFO;
|
|
END_VAR
|
|
VAR
|
|
TRIG0 : BOOL;
|
|
END_VAR
|
|
|
|
IF TRIG AND NOT TRIG0 THEN
|
|
{{
|
|
LogMessage(GetFbVar(LEVEL),(char*)GetFbVar(MSG, .body),GetFbVar(MSG, .len));
|
|
}}
|
|
END_IF;
|
|
TRIG0:=TRIG;
|
|
END_FUNCTION_BLOCK
|
|
|
|
|
|
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;
|
|
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;
|
|
R_TRIG1 : R_TRIG;
|
|
_TMP_GT33_ENO : BOOL;
|
|
_TMP_GT33_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;
|
|
TON1(IN := TRUE, PT := WAIT13);
|
|
R_TRIG1(CLK := );
|
|
CTU0(CU := R_TRIG1.Q, R := true);
|
|
_TMP_GT33_OUT := GT(EN := TON1.Q, IN1 := CTU0.Q, IN2 := 1, ENO => _TMP_GT33_ENO);
|
|
secours_c_ok := _TMP_GT33_OUT;
|
|
END_PROGRAM
|
|
|
|
|
|
CONFIGURATION Config0
|
|
|
|
RESOURCE Res0 ON PLC
|
|
TASK task0(INTERVAL := T#20ms,PRIORITY := 0);
|
|
PROGRAM instance0 WITH task0 : motor;
|
|
END_RESOURCE
|
|
END_CONFIGURATION
|