跳到正文
Learn-SCL
SCL 示例库/SCL 指令手册/SCL 循环与控制流

SCL 循环与控制流

西门子 SCL 循环与控制流:FOR、WHILE、REPEAT 三种循环和 RETURN 提前返回,含完整 FB 示例、边界场景和常见坑。

SCL 的控制流包括 IF/CASE 分支和 FOR/WHILE/REPEAT 循环。这一组重点讲三种循环和 RETURN 提前返回。

FOR 适合固定次数;WHILE 先判断条件,可能一次也不执行;REPEAT 先执行一次,至少执行一次。

RETURN 退出整个块;只退出循环用 EXIT,跳过本次循环用 CONTINUE。每个页面都有完整 FB 示例和边界场景,并在 PLC 云仿真里验证。

SCL 循环与控制流 6

怎么选

需求 写法
固定次数/数组遍历 FOR
条件满足才执行,可能零次 WHILE
至少执行一次,再判断 REPEAT
提前退出整个块 RETURN
只退出循环 EXIT
跳过本次循环 CONTINUE

一个数组遍历例子

SCL
1#Sum := 0;
2FOR #i := 1 TO 8 DO
3   #Sum := #Sum + #Values[#i];
4END_FOR;

一个至少执行一次的例子

SCL
1REPEAT
2   #Retry := #Retry + 1;
3   // 读一次/试一次
4UNTIL #Done OR (#Retry >= 3)
5END_REPEAT;

循环里必须有推进条件的语句,或者用 EXIT/最大次数兜底;否则会死循环,拖死 PLC 扫描。

常见问题

SCL 的 FOR、WHILE、REPEAT 怎么选?

次数固定或遍历数组用 FOR;条件满足才执行、可能零次用 WHILE;至少要执行一次用 REPEAT。

RETURN、EXIT、CONTINUE 有什么区别?

RETURN 退出整个块;EXIT 只退出当前循环,循环后面的代码继续;CONTINUE 跳过本次循环剩余语句,进入下一次。

循环会不会拖慢扫描周期?

会。循环次数多或循环体耗时长会拉长扫描周期;大数据量要分片、限制次数或改成状态机。

循环变量应该声明在哪里?

放 VAR_TEMP,并且不要在循环里改结束值/步长;FOR 的循环变量用 INT 或 DINT,按范围选。

← 返回 SCL 指令手册