SCL IF — 条件判断
用 IF / ELSIF / ELSE / END_IF 按条件执行代码;SCL 里最常用的分支结构。
SCL 的控制流包括 IF/CASE 分支和 FOR/WHILE/REPEAT 循环。这一组重点讲三种循环和 RETURN 提前返回。
FOR 适合固定次数;WHILE 先判断条件,可能一次也不执行;REPEAT 先执行一次,至少执行一次。
RETURN 退出整个块;只退出循环用 EXIT,跳过本次循环用 CONTINUE。每个页面都有完整 FB 示例和边界场景,并在 PLC 云仿真里验证。
| 需求 | 写法 |
|---|---|
| 固定次数/数组遍历 | FOR |
| 条件满足才执行,可能零次 | WHILE |
| 至少执行一次,再判断 | REPEAT |
| 提前退出整个块 | RETURN |
| 只退出循环 | EXIT |
| 跳过本次循环 | CONTINUE |
1#Sum := 0;
2FOR #i := 1 TO 8 DO
3 #Sum := #Sum + #Values[#i];
4END_FOR;
1REPEAT
2 #Retry := #Retry + 1;
3 // 读一次/试一次
4UNTIL #Done OR (#Retry >= 3)
5END_REPEAT;
循环里必须有推进条件的语句,或者用 EXIT/最大次数兜底;否则会死循环,拖死 PLC 扫描。
次数固定或遍历数组用 FOR;条件满足才执行、可能零次用 WHILE;至少要执行一次用 REPEAT。
RETURN 退出整个块;EXIT 只退出当前循环,循环后面的代码继续;CONTINUE 跳过本次循环剩余语句,进入下一次。
会。循环次数多或循环体耗时长会拉长扫描周期;大数据量要分片、限制次数或改成状态机。
放 VAR_TEMP,并且不要在循环里改结束值/步长;FOR 的循环变量用 INT 或 DINT,按范围选。