IF_THEN
IF_THEN 用于在满足特定条件时执行某项操作。
操作数
IF bool_expression THEN
<语句>;
操作数 | 类型 | 格式 | 输入 |
Bool_ 表达式 | BOOL | 标签表达式 | 赋值为 BOOL 值的 BOOL 标签或表达式 (BOOL 表达式) |
说明
语法在下表中说明。

根据以下原则使用 ELSIF 或 ELSE。
要从多个可能的语句组中选择,添加一个或多个 ELSIF 语句。
每个 ELSIF 表示一个候选路径。
根据需要指定多个 ELSIF 路径。
控制器执行首个为真的 IF 或 ELSIF,并跳过其余的 ELSIF 和 ELSE。
要在所有 IF 或 ELSIF 条件为假时执行某项操作,则添加一条 ELSE 语句。
下表汇总了 IF、THEN、ELSIF 和 ELSE 语句的不同组合。
如果 | 且 | 使用以下结构 |
当条件为真时,执行某项操作 | 如果条件为假,则不执行操作 | IF_THEN |
如果条件为假,则执行其他操作 | IF_THEN_ELSE | |
根据输入条件,从多个候选语句或语句组中进行选择 | 如果条件为假,则不执行操作 | IF_THEN_ELSIF |
如果所有条件均为假,则分配默认语句 | IF_THEN_ELSIF_ELSE |
影响数学状态标志
否
严重/轻微故障
无。
示例
示例 1
IF...THEN
如果执行此操作 | 输入以下结构化文本 |
如果拒绝数 > 3,则 | IF rejects > 3 THEN |
传送带 = 关闭 (0) | conveyor := 0; |
报警 = 开启 (1) | alarm := 1; |
END_IF; |
示例 2
IF_THEN_ELSE
如果执行此操作 | 输入以下结构化文本 |
如果传送带方向触头 = 正向 (1),则 | IF conveyor_direction THEN |
指示灯 = 灭 | light := 0; |
否则指示灯 = 亮 | ELSE |
light [:=] 1; | |
END_IF; |
每当控制器发生以下情况时,[:=] 都会指示控制器将 light 清空:
进入运行模式。
在配置 SFC 为自动复位的情况下,离开 SFC 的程序步。(仅适用于在步进操作中嵌入该赋值语句,或通过该操作使用 JSR 指令调用结构化文本例程时。)
示例 3
IF...THEN...ELSIF
如果执行此操作 | 输入以下结构化文本 |
如果糖料低限位开关 = 低(接通)且糖料高限位开关 = 不高 (接通),则 | IF Sugar.Low & Sugar.High THEN |
进给阀 = 打开(导通) | Sugar.Inlet [:=] 1; |
直至糖料高限位开关 = 高(断开) | ELSIF NOT(Sugar.High) THEN |
Sugar.Inlet := 0; | |
END_IF; |
每当控制器发生以下情况时,[:=] 都会指示控制器将 Sugar.Inlet 清空:
进入运行模式。
在配置 SFC 为自动复位的情况下,离开 SFC 的程序步。(仅适用于在步进操作中嵌入该赋值语句,或通过该操作使用 JSR 指令调用结构化文本例程时。)
示例 4
IF...THEN...ELSIF...ELSE
如果执行此操作 | 输入以下结构化文本 |
如果罐温度 > 100 | IF tank.temp > 200 THEN |
则泵 = 缓慢运转 | pump.fast :=1; pump.slow :=0; pump.off :=0; |
如果罐温度 > 200 | ELSIF tank.temp > 100 THEN |
则泵 = 快速运转 | pump.fast :=0; pump.slow :=1; pump.off :=0; |
否则泵 = 关闭 | ELSE |
pump.fast :=0; pump.slow :=0; pump.off :=1; | |
END_IF; |
提供反馈