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