收藏了 西门子SCL语言编程,常用指令介绍

 SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同 。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的 。
SCL特殊的指令有以下几种,如图1-3红框中的指令:

收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图1 读写存储器

收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图2 转换操作

收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图3 程序控制指令
在这三部分中,读写存储器的PEEK POKE指令可以参考链接,转换操作可以参考链接,这里只介绍图3的程序控制指令 。
程序控制指令
程序控制指令见以下表格 。
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
 
程序控制指令是SCL编程的基础,接近高级语言的指令,虽然这些功能通过LAD/FBD也可以实现,但使用SCL编写会更加方便,逻辑条理也更加清晰 。
IF:条件执行
说明:使用"条件执行"指令,可以根据条件控制程序流的分支 。该条件是结果为布尔值(True 或 False)的表达式 。可以将Bool变量、逻辑表达式或比较表达式作为条件 。
执行该条件执行指令时,将对指定的表达式进行运算 。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件 。
参数
根据分支的类型,可以对以下形式的指令进行编程:
  • IF...THEN... 分支:IF <条件>THEN <语句1>END_IF;

收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图4 IF...THEN... 分支
如果满足该条件,则将执行 THEN 后编写的指令 。如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行 。
  • IF...THEN... ELSE...分支:IF <条件>THEN <语句1>ELSE <语句2>END_IF;

收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图5 IF...THEN... ELSE...分支
如果满足该条件,则将执行 THEN 后编写的语句 。如果不满足该条件,则将执行 ELSE 后编写的语句 。不论执行哪一个语句,之后都将从 END_IF 后的下一条指令开始继续执行 。
  • IF...THEN... ELSIF...分支:IF <条件1>THEN <语句1>ELSIF <条件2>THEN <语句2>END_IF;

收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图6 IF...THEN... ELSIF...分支
如果满足条件1,则将执行 THEN 后的语句1,执行这些语句后,程序将从 END_IF 后继续执行 。
如果不满足条件1,则将检查条件2 。如果满足条件2,则将执行 THEN 后的语句2 。执行这些语句后,程序将从 END_IF 后继续执行 。
如果不满足任何条件,则直接执行 END_IF 后的程序部分 。
在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合 。可以选择对 ELSE 分支进行编程 。
参数
下表列出了该指令的参数:
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
 
示例
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图7 IF示例
下表展示了不同的操作数数值对目标变量的影响:
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
 
CASE:创建多路分支
说明:使用"创建多路分支"指令,可以根据数字表达式的值执行多个指令序列中的一个 。
按如下方式声明此指令:
CASE <变量> OF
<常数1>: <语句1>;
<常数2>: <语句2>;
......
<常数n>: <语句n>;
ELSE <语句>;
END_CASE;
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图8 CASE语句
参数
下表列出了该指令的参数:
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
 
* TIA PORTAL V16开始支持位序列数据类型的变量
示例
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
图9 CASE示例
下表展示了不同的操作数数值对目标变量的影响:
收藏了 西门子SCL语言编程,常用指令介绍

文章插图
 
FOR:在计数循环中执行


推荐阅读