您当前的位置:首页 > 手机百科 > iphone

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

时间:2020-06-27 10:44:32  来源:  作者:

 

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:在计数循环中执行

说明:使用"在计数循环中执行"指令,重复执行程序循环,直至运行变量不在指定的取值范围内。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前正在运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

注意:

有关运行次数和运行变量的信息:

程序运行时无法更改运行次数。出于性能原因,应在块接口的"Temp"部分中声明运行变量。在循环中,该运行变量无法更改。

按如下方式声明此指令:

FOR <运行变量> := <起始值> TO <结束值> BY <增量> DO

<语句>;

END_FOR;

如果增量为1,可以简写为:

FOR <运行变量> := <起始值> TO <结束值> DO

<语句>;

END_FOR;

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

图10 FOR语句

下表列出了该指令的参数:

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

 

*TIA PORTAL V16开始支持无符号整数类型的变量

示例

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

图11 FOR示例

Tag_Value 操作数乘以b_array 数组变量的元素 (2, 4, 6, 8)。并将计算结果读入到a_array 数组变量的元素 (2, 4, 6, 8) 中。

下表展示了给定 Tag_Value 与 b_array[i] 的值得到 a_array[i] 的结果:

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

 

WHILE:满足条件时执行

说明:使用"满足条件时执行"指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。

执行该指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前连续运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

可按如下方式声明此指令:

WHILE <条件>

DO <语句>;

END_WHILE;

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

图12 WHILE语句

参数

下表列出了该指令的参数:

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

 

示例

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

图13 WHILE示例

下表展示了循环初始和循环结束时变量值的变化

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

 

REPEAT:不满足条件时执行

说明:使用"不满足条件时执行"指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。

执行该指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。

即使满足终止条件,至少也会执行一次循环内的语句。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前连续运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

可按如下方式声明此指令:

REPEAT <语句>;

UNTIL <条件>

END_REPEAT;

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

图14 REPEAT语句

参数

下表列出了该指令的参数:

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

 

示例

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

图15 REPEAT示例

下表展示了循环初始和循环结束时变量值的变化

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

 

CONTINUE:复查循环条件

说明:使用"复查循环条件"指令,可以结束 FOR、WHILE 或 REPEAT 循环的当前程序运行。

执行该指令后,将再次计算继续执行程序循环的条件。该指令将影响其所在的程序循环。

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

图16 CONTINUE用在FOR循环


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

图17 CONTINUE用在WHILE循环


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

图18 CONTINUE用在REPEAT循环

示例

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

图19 CONTINUE示例

下表展示了计算结果:

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

 

如果满足条件 i < 5,则不执行后续值分配 ("DB10".Test[i] := 1)。运行变量 (i) 以增量"1"递增,然后检查其当前值是否在设定的循环取值范围内。如果执行变量在循环取值范围内,则将再次计算 IF 的条件。

如果不满足条件 i < 5,则将执行后续值分配 ("DB10".Test[i] := 1) 并开始一个新循环。在这种情况下,执行变量也会以增量"1"进行递增并接受检查。

EXIT:立即退出循环

说明:使用"立即退出循环"指令,可以随时取消 FOR、WHILE 或 REPEAT 循环的执行,而无需考虑是否满足条件,并在循环结束(END_FOR、END_WHILE 或 END_REPEAT)后继续执行程序。

该指令将影响其所在的程序循环。

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

图20 EXIT语句

示例

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

图21 EXIT示例

下表展示了计算结果:

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

 

如果满足条件 i > 5,则将取消循环执行。程序将从 END_FOR 后继续执行。

如果不满足条件 i <= 5,则将执行后续值分配 ("DB10".Test[i] :=1) 并开始一个新循环。将运行变量 (i) 以 1 进行递增,并进行检查该变量的当前值是否在程序中设定的循环取值范围之内。如果执行变量 (i) 在循环取值范围内,则将再次计算 IF 的条件。

GOTO:跳转

说明:使用"跳转"指令,可以从标注为跳转标签的指定点开始继续执行程序。

跳转标签和"跳转"指令必须在同一个块中。在一个块中,跳转标签的名称只能指定一次。每个跳转标签可以是多个跳转指令的目标。不允许从"外部"跳转到程序循环内,但允许从循环内跳转到"外部"。

注意:

LAD/FBD语言内的SCL段,不能使用GOTO指令。

跳转标签遵循以下语法规则:

  • 字母(a 至 z,A 至 Z)
  • 字母和数字组合;请必须字母为开始

可按如下方式声明此指令:

GOTO <跳转标签>;

...

<跳转标签>: <语句>

示例

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

图22 GOTO示例

下表展示了每个操作数数值对目标变量的变化影响:

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

 

根据"Tag_Value"操作数的值,程序将从对应的跳转标签标识点开始继续执行。例如,如果"Tag_Value"操作数的值为 2,则程序将从跳转标签"MyLABEL2"开始继续执行。在这种情况下,将跳过"MyLABEL1"跳转标签所标识的程序行。

RETURN:退出块

说明:使用"退出块"指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。

如果该指令出现在块结尾处,则可以跳过。

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

图23 RETURN语句

示例

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

图24 RETURN示例

如果"Tag_Error"操作数的信号状态不为 0,则将终止当前处理块中的程序执行。

 



Tags:语言编程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天给大家分享一篇C语言编码规范,可以从源头上规避掉很多bug,希望能对大家有所帮助。 01 最重要的规则编写代码时最重要的一条规则是:检查周围的代码并尝试模仿它。 作为维护...【详细内容】
2022-07-04  Tags: 语言编程  点击:(22)  评论:(0)  加入收藏
什么是预处理命令预处理命令在我之前看过的C语言基础教程中好像并没有详细说到,在现在的一些项目中预处理命令的出现频率却越来越多。事物的存在必有其存在的理由,于是就花时...【详细内容】
2021-03-24  Tags: 语言编程  点击:(521)  评论:(0)  加入收藏
1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽...【详细内容】
2020-07-09  Tags: 语言编程  点击:(77)  评论:(0)  加入收藏
SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这...【详细内容】
2020-06-27  Tags: 语言编程  点击:(7137)  评论:(0)  加入收藏
这个8*8按键程序的过程中,不管是在自己写还是参考别人程序的过程中,发现自己对C语言有些基本知识点和编程规范有很多不懂的地方,有些是自己以前的编程习惯不好,有些就是基础知识...【详细内容】
2020-05-13  Tags: 语言编程  点击:(93)  评论:(0)  加入收藏
▌简易百科推荐
这两天有很多小伙伴来找小潮,或了解或下单xr手机。首先感谢您对小潮的信任。小潮不会辜负每一个信任我们的小伙伴 虽然小潮家手机质量很好。不过手机收到后,还是需要仔细检查...【详细内容】
2022-07-15  小潮的数码宝贝    Tags:iPhone XR   点击:(1)  评论:(0)  加入收藏
很多朋友在使用苹果手机一段时间后,就会发现内存远远不够用,又不能像安卓手机那样清理,今天就来教大家如何清理苹果手机的缓存,清理后和新机一样流畅。 首先我们打开苹果手机的...【详细内容】
2022-07-14  手机科技园    Tags:苹果手机   点击:(9)  评论:(0)  加入收藏
虽然iOS16推出已经有一段时间,但目前依然处在开发者测试版阶段,并且由于BUG较多,使得很多iOS15用户还只是处在观望阶段,不敢轻易升级,如果在座各位打算等系统稳定点再升级,那就有...【详细内容】
2022-07-11  玩机小子66    Tags:iOS16   点击:(12)  评论:(0)  加入收藏
自苹果 App Store 诞生以来,通过苹果支付系统购买各项软件服务似乎早已成为了一种常态。 无论用户想购买应用,还是订阅会员,都无法绕开 App Store 的支付系统。 得益于苹果安全...【详细内容】
2022-07-07  果粉俱乐部    Tags:iOS   点击:(17)  评论:(0)  加入收藏
作者:eddiecmchen,PCG客户端开发工程师| 导语 把我的iPhone XR扶起来,它还能再顶一会儿~背景远在iOS 11时期(2017年),苹果就发公告要求所有需要上架AppStore的应用都必须支持64位...【详细内容】
2022-07-07    腾讯技术工程  Tags:iOS   点击:(13)  评论:(0)  加入收藏
尽管iPhone11和iPhone12年代久远,但不同于安卓手机,它们在2022年都有不错的销量,这实在是一个匪夷所思的问题,如果你也对这两款手机有兴趣,那不妨看看下面的这个全面分析,看看在20...【详细内容】
2022-07-07  老刘玩数码  今日头条  Tags:iPhone11   点击:(6)  评论:(0)  加入收藏
新 iPhone 到手后,就只会给它贴膜加壳?(此处已添加小程序,请到今日头条客户端查看)其实新 iPhone 到手激活后,经过以下几点的设置才会更好用。1、注册一个属于自己的 Apple ID。如...【详细内容】
2022-06-26  闪电修    Tags: iPhone   点击:(31)  评论:(0)  加入收藏
iOS 16中大家最为期待的功能终于加入了,就是可以将隐藏相册进行上锁,那么具体怎么操作呢?下面就来教大家。 iOS 16隐藏照片教学打开 iOS 自带「照片 APP」,点击右上角「选取」,点...【详细内容】
2022-06-24  搞趣网    Tags:iOS 16   点击:(57)  评论:(0)  加入收藏
喜欢苹果手机的朋友非常多,但是许多人的购买理由是IPhone外观好看,IOS系统运转流畅,但其实很少用苹果的自带软件。和其他设计复杂、外观花哨的APP相比,苹果自带的APP总让人觉得...【详细内容】
2022-06-22  猫说职场    Tags:苹果手机   点击:(23)  评论:(0)  加入收藏
苹果如何清除缓存和数据,具体步骤如下所示: 品牌型号:iPhone12 系统版本:iOS 15.3 软件版本:设置12.0方法/步骤1/3分步阅读打开通用页在苹果手机设置页,打开“通用”设置界面。 2/...【详细内容】
2022-06-15  好好哈哦    Tags:缓存   点击:(46)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条