最简单的 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