admin 管理员组

文章数量: 1086019


2024年3月19日发(作者:开源cms java)

结构化文本ST编程,西门子PLC编程语言中叫SCL ,其它任何PLC控制器编程语言还是叫结

构化编程ST。

西门子SCL语言

第一章IF:条件执行

IF 分支

IF <条件> THEN <指令>

END_IF;

如果满足该条件,则将执行 THEN 后编写的指令。 如果不满足该条件,则程序将从 END_IF

后的下一条指令开始继续执行。

IF 和 ELSE 分支

IF <条件> THEN <指令 1>

ELSE <指令 0>;

END_IF;

如果满足该条件,则将执行 THEN 后编写的指令。 如果不满足该条件,则将执行 ELSE 后

编写的指令。 程序将从 END_IF 后的下一条指令开始继续执行。

IF、ELSIF 和 ELSE 分支

IF <条件 1> THEN <指令 1>

ELSIF <条件 2> THEN <指令 2>

ELSE <指令 0>;

END_IF;

如果满足第一个条件(<条件 1>),则将执行 THEN 后的指令(<指令1>)。 执行这些指令

后,程序将从 END_IF 后继续执行。

如果不满足第一个条件,则将检查第二个条件(<条件 2>)。如果满足第二个条件(<条件 2>),

则将执行 THEN 后的指令(<指令2>)。 执行这些指令后,程序将从 END_IF 后继续执行。

如果不满足任何条件,则先执行 ELSE 后的指令(<指令 0>),再执行 END_IF 后的程序部

分。

在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。 可以选择对 ELSE 分支进行编程。

IF "Tag_1" = 1

THEN "Tag_Value" := 10;

ELSIF "Tag_2" = 1

THEN "Tag_Value" := 20;

ELSIF "Tag_3" = 1

THEN "Tag_Value" := 30;

ELSE "Tag_Value" := 0;

END_IF;

IF 案例如下:

FUNCTION_BLOCK "IF"

TITLE = 'IF Statement'

//IF ... THEN ... ELSE ... END_IF

VAR_INPUT

Start : BOOL;

Manual : BOOL;

ActVal : INT;

END_VAR

VAR

Manual_FM : BOOL;

over : BOOL;

under : BOOL;

equal_to : BOOL;

Setpoint_man : INT := 1000;

Setpoint : INT;

Deviation : INT;

y_index : INT := 12;

Total : INT;

END_VAR

VAR_TEMP i : INT; END_VAR

BEGIN

//Simple IF branch

IF Start THEN Setpoint := 1200; END_IF;

IF Manual THEN

Setpoint := Setpoint_man;

Q4.0 := TRUE;

END_IF;

//Branch ELSE

IF ActVal > Setpoint

THEN Deviation := ActVal - Setpoint;

ELSE Deviation := Setpoint - ActVal;

END_IF;

//Branch with ELSIF

IF ActVal > Setpoint

THEN over := TRUE;

under := FALSE;

equal_to := FALSE;

ELSIF ActVal < Setpoint

THEN under := TRUE;

over := FALSE;

equal_to := FALSE;

ELSE equal_to := TRUE;

over := FALSE;


本文标签: 指令 编程 条件 开源 选择