本期内容:
case语句基础
case语句应用
case语句注意事项
往期内容:
三菱ST语言:第7课IF语句的使用
三菱ST语言:第6课FB、标签的用法
三菱ST语言:第5课数据处理与算法
三菱ST语言:第4课赋值指令的应用
三菱ST语言:第3课传送指令的应用
1.case语句基础
case语句其实就是我们的选择语句
在CASE语句中,控制变量与几个值作比较,
如果表达式的结果与其中一个值相同,
那么就执行相应的语句。
如果表达式的结果与任何一个值都不相同,
那么就执行象IF语句一样的ELSE分支。
语句执行完后,继续执行END_CASE后的程序。
比如我们的步进指令setstl
当我们要进入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语句实现
例如:
CASED0OF1: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);CASETN0OF1..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语句还有一个更方便的办法
多项选择
什么意思了?
比如
CASED0OF1,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语句的多项选择性
当然还可以多更多的选择
CASED0OF1,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语句会保持上一步的状态
三菱ST语言:第8课case语句的使用
;tid=493926fromuid=17
(出处:PLC论坛-全力打造可编程控制器专业技术论坛)
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系