循环 (FOR)
此信息适用于 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370、GuardLogix 5570、Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。
FOR 指令可重复执行例程。
使能后,FOR 指令重复执行例程,直到 Index 值超出 Terminal value。该指令不会将参数传递到例程。
步长值可以是正值,也可以是负值。如果是负数,则当 Index 值小于 Terminal 值时,循环结束。如果是正数,则当索引值大于终止值时,循环结束。
每次 FOR 指令执行例程时,都会向 Index 值加上 Step size 值。
请注意,在单次扫描中不要循环过多次。重复次数过多可导致控制器的看门狗超时,进而引发严重故障。
可用语言
梯形图

操作数
梯形图
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
Routine name | ROUTINE | 标签 | 每次 FOR 循环执行时调用的子例程。 |
Index | DINT | 标签 | 对例程已执行的次数进行计数 |
Initial value | SINT INT DINT | 立即数 标签 | 索引起始值 |
Terminal value | SINT INT DINT | 立即数 标签 | 达到该值时例程停止执行 |
Step size | SINT INT DINT | 立即数 标签 | FOR 指令每次执行例程时索引的增量 |
影响数学状态标志
否
严重/轻微故障
在以下情况下会发生严重故障: | 故障类型 | 故障代码 |
|---|---|---|
嵌套级别限值 > 25 | 4 | 94 |
子例程为 SFC,且正在执行(递归调用) | 4 | 82 |
有关操作数相关的故障,请参阅 常用属性。
执行
条件/状态 | Action |
|---|---|
预扫描 | 如果指定子例程之前未进行过预扫描,则指令会对其进行预扫描。
小贴士:
如果同一子例程中存在递归 FOR 指令,或者同一子例程中存在多条 FOR 指令(非递归),则该子例程仅预扫描一次。如果下级例程已由 JSR 预扫描,也同样适用。
|
梯级输入条件为假 | 不适用 |
梯级输入条件为真 | 请参见下文 FOR 流程图(真)。 |
后扫描 | 指令将仅对指定子例程执行一次后扫描。 |
FOR 流程图(真)

示例
使能后,FOR 指令重复执行 routine_2,并使 value_2 每次加 1。当 value_2 > 50000 或使能 BRK 指令后,FOR 指令不再执行 routine_2。

提供反馈