1.分支结构(选择语句)
1.1简单IF
基本格式:
IF expression_1 THEN
<逻辑语句>
END_IF;
代码示例:判断当前温度是否超过了 60 摄氏度,如果超过,始终打开风扇进行散热处理;
1.2IF-ELSE
基本格式:
IF expression_1 THEN
<逻辑语句>
ElSE
<逻辑语句>
END_IF;
代码示例:判断当温度小于到 20 摄氏度时,开启加热设备,否则(温度大于等于 20摄氏度) 加热设备断开状态
1.3多重IF-ELSE
基本格式:
IF expression_1 THEN
<逻辑语句>
ELSIF expression_2 THEN //可选
<逻辑语句>
ElSE //可选
<逻辑语句>
END_IF;
代码示例:当设备进入自动模式后, 如实际温度大于 50 摄氏度时, 才开启风扇并关闭加热器,小于等于 50 摄氏度时关闭风扇打开加热器, 如在手动模式时,加热器风扇均不动作
1.4嵌套
基本格式:
IF expression_1 THEN
<逻辑语句>
IF expression_2 THEN (*嵌套在内部的条件判断语句*)
<逻辑语句>
END_IF;
END_IF;
示例:
2.循环结构
2.1ROR循环
基本语法:
(*BY后的Step为设置步长,没有默认为1*)
(*重点:循环前检测终止条件*)
FOR count:= Start_value TO Stop_value BY Step DO
<循环体>
END_FOR;
示例:
sum:=0;
FOR count:= 0 TO 100 BY 2 DO
sum:=sum+count;
IF sum>=100 THEN
EXIT;(*当EXIT 语句用在一个嵌套的循环中时,退出只是在EXIT所在的循环中执行。 循环结束后继续执行结束语句后的程序*)
(*CONTINUE打断当前当次循环,用于提前结束本次循环,并重新开始下一次循环。也可以使用RETURN返回指令,直接返回POU开头,即退出程序组织单元(POU)*)
END_IF;
END_FOR;
2.2WHILE
基本语法:
WHILE bool_expression DO
<逻辑语句>
END_WHILE;
程序示例:只要计数器不为零,则始终执行循环体内的程序
2.3REPEAT
基本语法:
REPEAT
···
···
···
UNTIL <退出执行的条件>
END_REPEAT;
程序示例:当计数器为 0 时, 则停止循环
3.CASE语句
基本语法:
CASE step_variable OF
(*在CASE和OF之间的变量必须是UINT类型*)
selector_1:
<逻辑语句>
selector_2,selector_4,selector_6:(*条件变量满足值2、4、6任意一个,就会执行下面对应的语句*)
<逻辑语句>
selector_7..selector_15:(*条件变量满足值7到15之间所有值的任意一个,就会执行下面对应的语句*)
<逻辑语句>
……
selector_n:
<逻辑语句>
ELSE (*条件变量值在以上变量都不满足时,就执行这里面的语句,这个条件分支可以不写*)
<逻辑语句>
END_CASE;
程序示例:当前状态为 1 或 5 时,设备 1 运行和设备 3 停止;状态为 2 时,设备 2 停止和设备3 运行;如当前状态在 10 至 20 之间,设备 1 和设备 3 均运行,其他情况时要求设备 1, 2, 3 均停止
4.跳转语句
4.1EXIT语句
如果 FOR、 WHILE 和 REPEAT 三种循环中使用了 EXIT 指令,那么无论结束条件如何,内循环立即停止。
程序示例:使用 EXIT 指令避免当使用迭代语句时中出现除零
4.2CONTINUE语句
CONTINUE 语句中断本次循环, 忽略位于它后面的代码而直接开始一次新的循环。当多个循环嵌套时, CONTINUE 语句只能使直接包含它的循环语句开始一次新的循环。
程序示例:使用 CONTINUE 指令避免当使用迭代语句时中出现除零
4.3 JMP语句
跳转语句, 跳转指令可以用于无条件跳转到使用跳转好标记的代码行。<标识符>可以是任意的标识符,它被放置在程序行的开始。 JMP 指令后面为跳转目的地,即一个预先定义的标识符。 当执行到 JMP 指令时,将跳转到标识符所对应的程序行。
必须避免制造死循环,可以配合使用 IF 条件控制跳转指令。
基本语法:
<标识符>:
JMP<标识符>;
程序示例:使用 JMP 语句实现计数器在 0…10 范围内循环
4.4RETURN指令
RETURN 指令是返回指令, 用于退出程序组织单元( POU) 。
程序示例:使用 IF 语句作为判断,当条件满足时,立即终止执行本程序