CASE_OF

使用 CASE_OF 可根据数值选择要执行的操作。
操作数
CASE numeric_expression OF
选择器 1: 语句;
选择器 N: 语句; ELSE
结构化文本
操作数
类型
格式
输入
Numeric_
expression
SINT INT DINT REAL
标签表达式
赋值为数值的标签或表达式
(数值表达式)
Selector
SINT INT DINT REAL
立即数
与 numeric_expression 的类型相同
重要提示: REAL 值极有可能位于一定的值范围内,而不是与某个特定值精确匹配,因此如果使用 REAL 值,就必须为选择器设定一个值范围。
说明
语法在下表中说明。
CASE_OF
下面是输入选择器值时所用的语法。
当选择器为
输入
一个值
值: 语句
多个不同的值
value1、value2、valueN:<语句>
使用逗号 (,) 分隔每个值。
值范围
value1..valueN : <语句>
使用两个句点 (..) 来标识范围。
多个不同的值加上值范围
valuea, valueb, value1..valueN : <语句>
CASE 结构类似于 C 或 C++ 编程语言中的 switch 语句。对于 CASE 结构,控制器只执行与第一个匹配的选择器值关联的语句。总是在该选择器的语句后中断执行,并转到 END_CASE 语句。
影响数学状态标志
严重/轻微故障
示例
如果要实现以下要求
输入以下结构化文本
如果配方号 = 1,则成分 A 出口 1 = 打开 (1) 成分 B 出口 4 = 打开 (1)
CASE recipe_number OF
1:
Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1;
如果配方号 = 2 或 3,则
成分 A 出口 4 = 打开 (1)
成分 B 出口 2 = 打开 (1)
2,3:
Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1;
如果配方号 = 4、5、6 或 7,则成分 A 出口 4 = 打开 (1) 成分 B 出口 2 = 打开 (1)
4..7:Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1;
如果配方号 = 8、11、12 或 13,则成分 A 出口 1 = 打开 (1) 成分 B 出口 4 = 打开 (1)
8,11..13
Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1;
否则所有出口 = 关闭 (0)
ELSE
Ingredient_A.Outlet_1 [:=]0; Ingredient_A.Outlet_4 [:=]0; Ingredient_B.Outlet_2 [:=]0; Ingredient_B.Outlet_4 [:=]0;
END_CASE;
每当控制器发生以下情况时,[:=] 都会指示控制器清空出口标签:
进入运行模式。
在配置 SFC 为自动复位的情况下,离开 SFC 的程序步。这仅适用于在步动作中嵌入该赋值语句,或通过该动作使用 JSR 指令调用结构化文本例程。
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal