闪烁灯 (Blink)
最简单的 PLC 程序示例:
PROGRAM Blink
VAR
output AT %Q* : BOOL;
counter : INT := 0;
END_VAR
counter := counter + 1;
IF counter >= 500 THEN
counter := 0;
output := NOT output;
END_IF
按键检测
PROGRAM ButtonDetect
VAR
button AT %I* : BOOL;
led AT %Q* : BOOL;
prev_button : BOOL := FALSE;
END_VAR
// 检测上升沿
IF button AND NOT prev_button THEN
led := NOT led;
END_IF
prev_button := button;
定时器示例
FUNCTION_BLOCK MyTimer
VAR_INPUT
enable : BOOL;
duration : TIME := T#2s;
END_VAR
VAR_OUTPUT
done : BOOL;
END_VAR
VAR
start_time : TIME;
running : BOOL := FALSE;
END_VAR
IF enable AND NOT running THEN
start_time := CURRENT_TIME;
running := TRUE;
done := FALSE;
END_IF
IF NOT enable THEN
running := FALSE;
done := FALSE;
END_IF
IF running AND (CURRENT_TIME - start_time >= duration) THEN
done := TRUE;
running := FALSE;
END_IF
END_FUNCTION_BLOCK
计数器
FUNCTION_BLOCK UpDownCounter
VAR_INPUT
up : BOOL;
down : BOOL;
reset : BOOL;
END_VAR
VAR_OUTPUT
value : INT := 0;
END_VAR
IF reset THEN
value := 0;
ELSIF up AND NOT down THEN
value := value + 1;
ELSIF down AND NOT up THEN
value := value - 1;
END_IF
END_FUNCTION_BLOCK