循环 (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。
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal