0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CASE:创建多路分支

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-06-27 11:46 次阅读

CASE:创建多路分支

说明

使用“创建多路分支”指令,可以根据表达式的值执行多个指令序列中的一个。

表达式的值必须为整数或位字符串。执行 CASE 指令时,会将表达式(变量)的值与多个常数的值进行比较。如果表达式(变量)的值等于某个常数的值,则满足条件且将执行紧跟在该常数后编写的指令。常数可以为不同值:

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

CASE OF

: ;

: ;

<常量 X>: <指令 X>; // X >= 3

ELSE ;

END_CASE;

参数

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

参数 数据类型 存储区 说明
位字符串、整数 I、Q、M、D、L 与设定的常数值进行比较的值。
<常数>
局部常量和全局常量可进行编程
位字符串 - 若为位字符串,则常数可以为以下值:
二进制数(例如,2#10)
八进制数(例如,8#77)
十六进制数(例如,16#AD
未定型的常数(例如,1000)
如果为典型字节变量,则字节常数(例如,BYTE#2)必须进行编程。
如果为典型 WORD 变量,则字节或 WORD 常数(例如,BYTE#2、WORD# 2)必须进行编程。
如果为典型 DWord 变量,则字节、WORD 或 DWord 常数(例如,BYTE#2、WORD#2、DWORD#2)必须进行编程。
如果为典型 LWord 变量,则字节、WORD、DWord 或 LWord 常数(例如,BYTE#2、WORD#2、DWORD#2、LWORD#2)必须进行编程。
整数 若为整数,则常数可以为以下值:
整数(例如,5)
整数范围(例如,15 到 20)
由整数和范围组成的枚举(例如,10、11、15 到 20)
- - 当表达式的值等于某个常数值时,将执行的各种指令。如果不满足条件,则执行 ELSE 后编写的指令。如果两个值不相等,则执行这些指令。

有关有效数据类型的更多信息,请参见“另请参见”。

如果表达式的值等于第一个常数(<常数 1>)的值,则将执行紧跟在该常数后编写的指令(<指令 1>)。程序将从 END_CASE 后继续执行。

如果表达式的值不等于第一个常量(<常量 1>)的值,则会将该值与下一个设定的常量值进行比较。以这种方式执行 CASE 指令直至比较的值相等为止。如果表达式的值与所有设定的常数值均不相等,则将执行 ELSE 后编写的指令(<指令 0>)。ELSE 是一个可选的语法部分,可以省略。

此外,CASE 指令也可通过使用 CASE 替换一个指令块来进行嵌套。END_CASE 表示 CASE 指令结束。

示例

以下示例说明了该指令的工作原理

SCL
CASE "Tag_Value" OF
0 :
"Tag_1" := 1;
1,3,5 :
"Tag_2" := 1;
6...10 :
"Tag_3" := 1;
16,17,20...25 :
"Tag_4" := 1;
ELSE
"Tag_5" := 1;
END_CASE;

下表将通过具体的操作数值对该指令的工作原理进行说明:

操作数
Tag_Value 0 1、3、5 6、7、8、9、10 16, 17, 20, 21, 22, 23, 24, 25 2
Tag_1 1 - - - -
Tag_2 - 1 - - -
Tag_3 - - 1 - -
Tag_4 - - - 1 -
Tag_5 - - - - 1
1:操作数的信号状态将设置为“1”。
-:操作数的信号状态将保持不变。

CASE语句用来选择几个分支程序部分之一。选择是基于选择表达式当前值的。 使用“创建多路分支”指令,可以根据数字表达式的值执行多个指令序列中的一个。 表达式的值必须为整数。执行该指令时,会将表达式的值与多个常数的值进行比较。如果表达式的值等 于某个常数的值,则将执行紧跟在该常数后编写的指令。常数可以为以下值: • 整数(例如,5) • 整数的范围(例如,15..20) • 由整数和范围组成的枚举(例如,10、11、15..20) CASE语句按下列规则执行: ·选择表达式必须返回一个整数类型的值。 ·当CASE语句被处理时,程序检查是否选择表达式的值包含在指定的值表之中。如果找到匹配项,列表指定的语句部分将被执行。 ·如果没有发现匹配项,程序选择ELSE后面的语句,或者如果ELSE分支不存在则无语句可执行。 如果表达式的值等于第一个常数(<常数 1="">)的值,则将执行紧跟在该常数后编写的指令(<指令 1="">)。程序将从 END_CASE 后继续执行。如果表达式的值不等于第一个常数(<常数 1="">)的值,则会将该值与下一个设定的常数值进行比较。以这种方式执行 CASE 指令直至比较的值相等为止。如果表达式的值与所有设定的常数值均不相等,则将执行 ELSE 后编写的指令(<指令 0="">)。ELSE 是一个可选的语法部分,可以省略。此外,CASE 指令也可通过使用 CASE 替换一个指令块来进行嵌套。END_CASE 表示 CASE 指令结束。 73c32718-1408-11ee-962d-dac502259ad0.png 根据管角value输入数来决定OUT1输出的数   FUNCTION FC1 : INT   建立FC1程序,输出反馈值得属性是INT整数 VAR_input     value:INT; END_VAR   VAR_outPUT     OUT1:INT; END_VAR   VAR_TEMP     END_VAR       CASE value OF         1 :                      OUT1:=1  ;         2 :                     OUT1:=2    ;         3 :                    OUT1:=3     ;         4 :                     OUT1:=4    ;         5 :                    OUT1:=5     ;         6 :                     OUT1:=6     ;       ELSE:   不是1-6 就输出99                OUT1:=99  ;     END_CASE;         FC1 := OUT1;  FC1的反馈值和OUT1值一致. END_FUNCTION  

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数字
    +关注

    关注

    1

    文章

    1689

    浏览量

    51078
  • 指令
    +关注

    关注

    1

    文章

    579

    浏览量

    35374
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123

原文标题:西门子博途 SCL--CASE:创建多路分支

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一起学LabVIEW——Case结构

    名称内时按下Shift同时每按一下回车键就会自动添加一个分支(Shift+Enter)。同样为选择器为数值类型等的Case结构创建方法亦是如此。对于Case来说选择器有个特殊的类型,那
    发表于 03-02 11:21

    关于case分支名的求助

    各位:1.我的case条件输入是枚举量因此,各个分支名应怎样设置枚举常量?????大侠们,求助呀!
    发表于 03-23 20:07

    炼狱传奇-if_else与case之战

    //内层else语句41.case分支控制语句case分支语句是另一种用来实现多路分支控制的
    发表于 03-31 09:51

    想问问设计RS485中继器难吗?要求是多路分支

    想问问设计RS485中继器难吗?要求是多路分支
    发表于 05-07 10:46

    求问关于中断case结构的问题!!!!

    我的case结构中有一个分支事件,这个分支进行完需要一分钟的时间,我想设计一个中断按钮,当点击中断按钮的时候可以中断这个分支事件,程序重新回到cas
    发表于 04-02 16:47

    优化技巧:提前if判断帮助CPU分支预测

    摘要: 在stackoverflow上有一个非常有名的问题:为什么处理有序数组要比非有序数组快?,可见分支预测对代码运行效率有非常大的影响。要提高代码执行效率,一个重要的原则就是尽量避免CPU把
    发表于 06-13 16:27

    Linux Shell系列教程之(十三)Shell分支语句case … esac教程

      一、Shell分支语句case···esac语法  case 值 in  模式1)  command1  command2  command3  ;;  模式2)  command1
    发表于 09-07 16:31

    新人求教关于case的语法问题:case里2个端口是什么意思?

    四选一多路选择器其中一部分case ({S1, S0})2'b00: out=io;2'b01: out=i1;2'b10: out=i2;2'b11: out=i3;case里2个端口是什么意思? 是s1=s0=2'b00吗?
    发表于 09-18 12:07

    第十二课 C51开关分支语句

    学习了条件语句,用多个条件语句能实现多方向条件分支,但是能发现使用过多的 条件语句实现多方向分支会使条件语句嵌套过多,程序冗长,这样读起来也很不好读。这个时候 使用开关语句同样能达到处理多分支选择
    发表于 11-22 12:43 529次阅读

    C语言的switch case分支选择语句的详细资料说明

    1、switch-case开关语句是一种多分支选择语句,用来实现多方向条件分支。虽然采用if-else条件判断语句也可以实现多方向条件分支,但是当
    发表于 07-12 17:39 1次下载
    C语言的switch <b class='flag-5'>case</b>多<b class='flag-5'>分支</b>选择语句的详细资料说明

    CASE创建多路分支

    如果表达式的值等于第一个常数()的值,则将执行紧跟在该常数后编写的指令()。程序将从 END_CASE 后继续执行。如果表达式的值不等于第一个常数()的值
    的头像 发表于 09-04 16:55 2506次阅读

    CASE语句的执行规则是什么?

    CASE语句用来选择几个分支程序部分之一。选择是基于选择表达式当前值的。
    的头像 发表于 10-09 09:26 4952次阅读
    <b class='flag-5'>CASE</b>语句的执行规则是什么?

    详解Python里的分支代码

    Python 支持最为常见的 if/else 条件分支语句,不过它缺少在其他编程语言中常见的 switch/case 语句。
    的头像 发表于 04-21 15:20 1367次阅读

    PLC-SCL CASE练习方法

    CASE语句用来选择几个分支程序部分之一。选择是基于选择表达式当前值的。
    发表于 03-28 09:43 426次阅读

    java switch case的语法规则

    在Java中,switch case语句是一种用于多分支选择的控制流语句。它允许根据某个表达式的值来执行不同的代码块。下面是关于switch case语法规则的详细解释。 基本语法 switch语句
    的头像 发表于 11-30 14:40 345次阅读