西门子博途软件SCL指令之程序控制指令详解(上)
西门子博途软件SCL指令的程序控制指令有很多个,如下图,本次详细介绍这些SCL语言指令的用法:
1.条件执行指令
执行原理:
如果满足该条件,则将执行 THEN 后编写的指令,后续条件不满足,结果仍然保持。如果不满足该条件,则将执行 ELSE 后编写的指令。程序将从 END_IF 后的下一条指令开始继续执行。
2.条件分支指令
执行原理:
如果满足该条件,则将执行 THEN 后编写的指令。如果不满足该条件,则将执行 ELSE 后编写的指令。程序将从 END_IF 后的下一条指令开始继续执行。
3.条件多分支
执行原理:
如果满足个条件(条件1),则将执行 THEN 后的指令(结果1)。执行这些指令后,程序将从 END_IF 后继续执行。
如果不满足个条件,则将检查第二个条件(条件2)。如果满足第二个条件(条件2),则将执行 THEN 后的指令(结果2)。执行这些指令后,程序将从 END_IF 后继续执行。
如果不满足任何条件,则先执行 ELSE 后的指令(不满足所有条件情况时的结果),再执行 END_IF 后的程序部分。
在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。可以选择对 ELSE 分支进行编程。
4.多分支选择
指令参数如下:
下表列出了该指令的参数:
序号 | 数据类型 | 存储区 | 说明 |
1 | 位字符串、整数 | I、Q、M、D、L | 与设定的常数值进行比较的值。 |
2 | 位字符串 | - | 若为位字符串,则常数可以为以下值: 二进制数(例如,2#10) 八进制数(例如,8#77) 十六进制数(例如,16#AD) 未定型的常数(例如,1000) 如果为典型字节变量,则字节常数(例如,BYTE#2)必须进行编程。 如果为典型 WORD 变量,则字节或 WORD 常数(例如,BYTE#2、WORD# 2)必须进行编程。 如果为典型 DWord 变量,则字节、WORD 或 DWord 常数(例如,BYTE#2、WORD#2、DWORD#2)必须进行编程。 如果为典型 LWord 变量,则字节、WORD、DWord 或 LWord 常数(例如,BYTE#2、WORD#2、DWORD#2、LWORD#2)必须进行编程。 |
整数 | 若为整数,则常数可以为以下值: 整数(例如,5) 整数范围(例如,15 到 20) 由整数和范围组成的枚举(例如,10、11、15 到 20) | ||
3 | - | - | 当表达式的值等于某个常数值时,将执行的各种指令。如果不满足条件,则执行 ELSE 后编写的指令。如果两个值不相等,则执行这些指令。 |
执行原理:
与序号“1”进行比较,再确定进入对应的通道。
此外,CASE 指令也可通过使用 CASE 替换一个指令块来进行嵌套。END_CASE 表示 CASE 指令结束。
5.退出块
执行原理:使用“退出块”指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。(这条指令后的内容不扫描不执行,这条指令前的内容不受影响)
如果该指令出现在块结尾处,则可以跳过。
6.组织源代码
执行原理:
可以使用指令“构建程序代码”,在 SCL 块中构建程序代码并将其分为几个不同区域。
7.插入一个注释段
说明:可以通过“插入注释段”指令添加一个注释段。括号内“(*...*)”的文本将处理为注释信息。
8.插入多语言注释
说明
使用指令“插入多语言注释”时,可插入一条可翻译为其它项目语言的注释信息。多语言注释是一个以“(*”开始,以“*)”结束的单元。即,只能对整个注释进行标记或选择,而不能选择其中一部分。多语言注释不能相互嵌套,但在注释行和注释段中使用。所不同的是,在多语言注释中不能使用注释行或简单的注释段。这是因为,系统会将“()”之间的所有内容均解释为常规文本消息。