SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同 。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的 。
SCL特殊的指令有以下几种,如图1-3红框中的指令:
文章插图
图1 读写存储器
文章插图
图2 转换操作
文章插图
图3 程序控制指令
在这三部分中,读写存储器的PEEK POKE指令可以参考链接,转换操作可以参考链接,这里只介绍图3的程序控制指令 。
程序控制指令程序控制指令见以下表格 。
文章插图
程序控制指令是SCL编程的基础,接近高级语言的指令,虽然这些功能通过LAD/FBD也可以实现,但使用SCL编写会更加方便,逻辑条理也更加清晰 。
IF:条件执行说明:使用"条件执行"指令,可以根据条件控制程序流的分支 。该条件是结果为布尔值(True 或 False)的表达式 。可以将Bool变量、逻辑表达式或比较表达式作为条件 。
执行该条件执行指令时,将对指定的表达式进行运算 。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件 。
参数
根据分支的类型,可以对以下形式的指令进行编程:
- IF...THEN... 分支:IF <条件>THEN <语句1>END_IF;
文章插图
图4 IF...THEN... 分支
如果满足该条件,则将执行 THEN 后编写的指令 。如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行 。
- IF...THEN... ELSE...分支:IF <条件>THEN <语句1>ELSE <语句2>END_IF;
文章插图
图5 IF...THEN... ELSE...分支
如果满足该条件,则将执行 THEN 后编写的语句 。如果不满足该条件,则将执行 ELSE 后编写的语句 。不论执行哪一个语句,之后都将从 END_IF 后的下一条指令开始继续执行 。
- IF...THEN... ELSIF...分支:IF <条件1>THEN <语句1>ELSIF <条件2>THEN <语句2>END_IF;
文章插图
图6 IF...THEN... ELSIF...分支
如果满足条件1,则将执行 THEN 后的语句1,执行这些语句后,程序将从 END_IF 后继续执行 。
如果不满足条件1,则将检查条件2 。如果满足条件2,则将执行 THEN 后的语句2 。执行这些语句后,程序将从 END_IF 后继续执行 。
如果不满足任何条件,则直接执行 END_IF 后的程序部分 。
在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合 。可以选择对 ELSE 分支进行编程 。
参数
下表列出了该指令的参数:
文章插图
示例
文章插图
图7 IF示例
下表展示了不同的操作数数值对目标变量的影响:
文章插图
CASE:创建多路分支说明:使用"创建多路分支"指令,可以根据数字表达式的值执行多个指令序列中的一个 。
按如下方式声明此指令:
CASE <变量> OF
<常数1>: <语句1>;
<常数2>: <语句2>;
......
<常数n>: <语句n>;
ELSE <语句>;
END_CASE;
文章插图
图8 CASE语句
参数
下表列出了该指令的参数:
文章插图
* TIA PORTAL V16开始支持位序列数据类型的变量
示例
文章插图
图9 CASE示例
下表展示了不同的操作数数值对目标变量的影响:
文章插图
FOR:在计数循环中执行
推荐阅读
- 中国北斗与中国5G你了解多少?全面解析这到底有多牛
- 苹果华为“带火”了这个激光器
- iOS 14支持谷歌VP9编码:能在iPhone上看4K YouTube视频了
- iphone可以“滚动”截屏了
- iPhone手机这样设置,来电话时就会显示对方照片,太实用了
- “重启手机”和“关机再开机”没区别?很多人可能都错了,望周知
- 周公解梦梦见儿子掉粪坑里 梦见儿子掉粪坑里了是什么意思
- 微信可以发“绿包”了,比红包更厉害
- 梦见老公头发白了是怎么回事 梦见丈夫头发变白
- 梦见自己快要死了又没死 梦到人要死了又没死