怎样才能跳出if语句_西门子SCL编程入门教程连载(4)- 语句与结构

前面的文章我们介绍了西门子SCL编程的变量和表达式,今天这篇文章,我们来介绍下SCL的语句与结构。

125c3b8e1e5f532cb1ca80ba12350397.png

语句在计算机科学中被称为"Satement"。它是一条能被执行的代码,其作用是向计算机/PLC系统发出操作指令,要求执行相应的操作。语句经过编译后会产生若干条机器指令。

在很多高级语言中,代码必须提供某种符号来表示一条语句,以便编译器能能识别并编译。比如,C语言的每一条语句末尾都要加英文分号(;),而VB则以回车换行符来表示一条语句;西门子SCL的语法源自PASCAL,其每条语句的末尾也要加英文分号(;)。

语句有简单与复杂之分。

1-简单语句

简单语句用来组成顺序结构,即自上而下的顺序代码。

赋值语句属于简单语句。

例如下面的代码,将形参E_START和E_STOP赋值给临时变量。

39984eefe72614feef1300e1b58d616b.png

图片中的":="符号表示赋值;

赋值语句的右边也可以是表达式,例如下面的代码:

7772850f1d2dc627ab2b16362e0892de.png

第一条语句将TMP_A乘以3,然后赋值给TMP_B;

第二条语句将TMP_A与TMP_B相加,然后赋值给TMP_C;

2-复杂语句

复杂语句可以构成选择结构或循环结构。

1、选择结构

选择结构用来根据某些条件来选择性的执行代码。

选择结构包括IF语句和CASE语句。

1.1 IF语句

IF语句用来判断某种条件是否满足。如果满足的话,则执行其内部的代码。

比如下面的图片代码:

05e962e2c2cd6022ae9dc16e9f63cd9b.png

如果E_CODE的值为1,则将TMP_A赋值为1;TMP_B赋值为2;

上述代码中,如果E_CODE的值不等于1,则不执行其内部的语句;程序会跳转到END_IF之后的语句继续执行;

如果希望在E_CODE的值不等于1的情况下,执行某些语句,可以使用ELSE关键词,如下图:

53ca54099020116728a220d8204042e4.png

上图中,如果E_CODE的值等于1,则将TMP_A赋值为1,TMP_B赋值为2;否则的话,将TMP_A赋值为100,TMP_B赋值为200;

IF语句的内部还可以嵌套IF语句,比如下面的代码:

4ea148979bc9d4026a1f6db49d70d074.png

如果E_CODE的值等于1,则将TMP_A赋值为1,TMP_B赋值为2;在这个条件下,如果E_CONDTION的值等于100,则将TMP_C赋值为100;

如果要判断的分枝比较多,比如,E_CODE的值等于1、2、3、4等要执行不同的代码,则可以使用CASE语句;

1.2 CASE语句

CASE语句用来完成多分枝的选择判断,比如下面的代码:

3d5e22fb02b2ad4e2ae2d27c2aed2a13.png

当E_CODE的值等于1时,将TMP_A赋值为1,TMP_B赋值为2;

当E_CODE的值等于2或者3或者4时,将TMP_A赋值为10,TMP_B赋值为20;

当E_CODE的值等于5时,将TMP_A赋值为100,TMP_B赋值为200;

其它情况下,将TMP_A赋值为30,TMP_B赋值为40;

2、循环结构

循环结构可以在某种条件下反复执行某段代码,包括FOR语句、WHILE语句和REPEAT语句。

2.1 FOR语句

FOR语句用于以次数确定的方式来执行某段代码。比如下面的图片:

de311804c689d10b46d51151ce792f20.png

该代码使用TMP_COUNTER作为计数变量,其起始值被赋值为1,每执行一次语句TMP_C:=TMP_C+1,TMP_COUNTER的值自动加1,直到其值大于1000跳出循环;

在FOR语句中,可以通过关键词BY修改计数器的步值,即计数器每次自动增加多少。

例如下面的代码:

2dc6ddaa4fdc73751ffb60c8f0385c49.png

该代码将TMP_COUNTER的起始值赋值为1,每执行一次语句TMP_C:=TMP_C+1,TMP_COUNTER的值自动加2,直到其值大于1000跳出循环;

步值可以为负数,表示每执行一次循环,循环计数器减去相应的数值。

例如下面的代码:

0a7e6959dd55e52ed749a109aab1f976.png

循环计数器TMP_COUNTER的值从1000开始,每执行一次循环,其值减2;直到小于1跳出循环。

2.2 WHILE语句

WHILE语句适用于次数不确定的循环。

比如下面的代码:

d75f1b2779d91608d949b8b54312249b.png

只要E_CONDITON的值等于1,将无限次循环执行句:TMP_C:=TMP_C+1;

如果我们真的将这段代码下载到CPU中执行,可能会产生很糟糕的结果。

因为一旦E_CONDITON=1的条件始终都被满足,CPU将陷入死循环。

为了避免进入死循环,要确保E_CONDITON在某些情况下不会等于1。

另外,为了在某种情况下能退出循环,可以使用EXIT语句;

EXIT语句可以立即退出当前的循环,比如下面的代码:

051027a4f3a62e84758f2614c2e4d502.png

当TMP_C达到最大值32767时,退出WHILE循环。

2.3 REPEAT语句

REPEAT 语句用来重复执行某段代码直到满足某种条件退出循环。

例如下面的代码:

9654dd80d18b70b76daee61735ea44ba.png

重复执行TMP_C:=TMP_C+1直到TMP_C的值等于3000.

同样可以使用EXIT语句退出REPEAT循环。

循环语句的内部也可以再嵌套循环语句,限于篇幅就不展开描述了。

好了,西门子SCL语言的语句与结构就先介绍到这里。如果你喜欢这篇文章,可以登录(www.founderchip.com)下载本文PDF版本。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值