设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL基础教学---case...of
返回列表
发新帖
[西门子]
西门子SCL基础教学---case...of
[复制链接]
21584
|
0
|
2024-3-11 16:35:09
|
显示全部楼层
|
阅读模式
上期,我们讲解了if...then,这期我们讲解下case...of语句。
关于case...of的解释
执行CASE指令时,会将变量的值与多个常数(局部常量或全局常量)的值进行比较。如果变量的值等于某个常数(局部常量或全局常量)的值,则满足条件且将执行紧跟在该常数(局部常量或全局常量)后编写的指令。如果比较都不成立,则执行else后面的语句。
举例:
CASE #number OF
1:
#out := 10;
10,13,15:
#out := 20;
20...25:
#out := 30;
30,33,35...38:
#out := 40;
#data:
#out := 50;
ELSE
#out := 999;
END_CASE;
声明一个input变量number,数据类型为int。声明一个output变量out,数据类型为int声明一个constant变量data,数据类型为int,默认值50根据case...of的解释,得出以下表格。
当number输入一个1,因为程序中有1这个常数,则比较成功,执行1后面的语句,out=10。接下来就执行END_CASE后面的语句。
当number输入一个10、13或者15这三个中的任意一个数值,因为程序中有这三个常数,则比较成功,执行10、13、15后面的语句,out=20。接下来就执行END_CASE后面的语句。当number输入一个20到25之间的任意一个数值,因为程序中有20到25这个范围,则比较成功,执行这个20...25后面的语句,out=30。接下来就执行END_CASE后面的语句。当number输入一个30、33、35到38之间的任意一个数值,因为程序中有30、33、38到38这个范围,则比较成功,执行这个30、33、35到38后面的语句,out=40。接下来就执行END_CASE后面的语句。当number输入一个50,因为程序中有常量,刚好这个常量的默认值是50,则比较成功,执行该常量后面的语句,out=50。接下来执行END_CASE后面的语句。当number输入的值不等于上面任何一个常数或者常量,则比较不成功,执行else后面的语句,out=999。到此case...of结束,其实不是很难,多练习即可,也可以搭配很多的指令一起使用。有3个注意事项CASE #number OF里面的这个number和常量的数据类型需要注意,只能为整数(int、Dint、Lint)或者位序列(byte、word,Dword,Lword)的类型。如果使用别的,则会报错。如果有常量的话,那么CASE #number OF里面的number的数据类型必须和常量的数据类型要相同,不能number的数据类型是int,常量的数据类型是word这种情况。如果有常量的话,那么CASE #number OF里面的number的数据类型的取值范围必须大于等于常量的数据类型的取值范围,比如number是int,常量就只能是int、Sint、Uint、USint。不能是Dint、Lint
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工控亿点点
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』