本期内容:
case语句基础
case语句应用
case语句注意事项
往期内容:
三菱ST语言:第7课 IF语句的使用
三菱ST语言:第6课 FB、标签的用法
三菱ST语言:第5课 数据处理与算法
三菱ST语言:第4课 赋值指令的应用
三菱ST语言:第3课 传送指令的应用
1.case语句基础
case语句其实就是我们的选择语句
在CASE语句中,控制变量与几个值作比较,
如果表达式的结果与其中一个值相同,
那么就执行相应的语句。
如果表达式的结果与任何一个值都不相同,
那么就执行象IF 语句一样的ELSE分支。
语句执行完后,继续执行END_CASE后的程序。
比如我们的步进指令set stl
当我们要进入S0时,X1触发了我们就去S10步,S10完成了我们就去S11步,S11步完成了我们就去S12步,如果一开如我们就去S20步我们是跳过S10~S19步的直接去S20步,这就是我们的选择性分支
我们的case语句也一样是一个选择性分支语句。
其实规则如下
CASE ?ANY_INT? OF ?值1? : ?执行语句? ; ?值2? : ?执行语句? ; ?值3? : ?执行语句? ;ELSE ?执行语句? ;END_CASE;
case 接我们的变量 OF(结束词)
第一个变量:
然后干嘛;
第二个变量:
然后干嘛;
第三个变量:
然后干嘛;
继续加,
else
如果都不在这些变量上我们就执行这条语句;
END-CASE (结束选择语句)
2.case语句应用
大家写顺序控制用什么方法写了是不是用步进还是寄存器还是继电器还是移位指令?
其实这么多写法我们都可以用ST语言的case语句实现
例如:
CASE D0 OF1 :Y0:=1 ;2 :Y1:=1 ;3 :Y4:=1 ;ELSEY5:=1;END_CASE;
我们的设置一个变量D0
当D0=1时,Y0亮
当D0=2时,Y1亮
当D0=3时,y4亮
如果都不在这些值上Y5亮,
当然你如用个复位指令把Y0到Y3只复位了
我也可以继续加当D0=4时干嘛,
case语句还有一个更好用的方法区间
OUT_T( M0 , TC0 , k101);CASETN0OF 1..30:OUT( 1, Y0); 30..50:OUT( 1, Y1); 50..70:OUT( 1, Y3); 70..80:OUT( 1, Y4); 80..100:OUT( 1, Y5);ELSEBKRST( 1, Y0, k6 );END_CASE;
我们用 .. 二个点表示区间【】
什么意思了?
就是当我们的定时器在1~30之间Y0亮起
当们的在30~50之间Y1亮起
当们的在50~70之间Y2亮起
当们的在70~80之间Y3亮起
当们的在80~100之间Y4亮起
如果都不是我们复位所有
case语句还有一个更方便的办法
多项选择
什么意思了?
比如
CASE D0 OF1,3 :Y0:=1 ;2,4 :Y1:=1;5,7 :Y2:=1 ;ELSEBKRST( 1, Y0 , k3 );;END_CASE;
我们用 逗号 隔开二个数表示
当D0=1或者D0=3时Y0亮
当D0=2或者D0=4时Y1亮
当D0=5或者D0=7时Y2亮
如果都不是就全复位了。
这就是我们case语句的多项选择性
当然还可以多更多的选择
CASE D0 OF1,3 :Y0:=1 ;2,4 :Y1:=1;5,7,8,9,10 :Y2:=1 ;ELSEBKRST( 1, Y0 , k3 );;END_CASE;
都是用逗号隔开,当D0=5,7,8,9,10时运行Y2=1。
3.case语句注意事项
CASE语句的语法:
CASE语句以CASE开始,以END_CASE结束,并且各自单独占一行。
在CASE和OF之间的变量必须是UINT类型。
在CASE的子句中,只能使用正整数,不允许使用变量名或表达式。
数字不能重叠使或在几个区域内使用。
case语句会保持上一步的状态
|