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;
版权声明:本文标题:Siemens_SCL语句详解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710859315a576676.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论