西门子循环指令LOOP在S7-300 PLC中的STL编程语言中广泛使用,用于实现重复执行某段程序的功能。其用法主要基于累加器ACCU1中的值来控制循环次数。在每次执行LOOP指令时,ACCU1的值会减1,若减1后非0,则跳转到指定的标签处继续执行循环体内的程序;若减至0,则退出循环。
使用LOOP指令时,首先需要在循环开始前通过加载指令(如L指令)将循环次数送入ACCU1中。然后,在循环体内编写需要重复执行的程序。最后,使用LOOP指令配合指定的标签来结束循环体。标签名应唯一且前后对应,确保循环能够正确跳转。
此外,LOOP指令的使用还需注意一些规则,如循环体和LOOP指令必须位于同一程序块中,且LOOP指令和标签之间的跳转必须符合PLC的扫描顺序。通过合理使用LOOP指令,可以高效地处理需要重复执行的任务,提高程序的执行效率和可读性。
说明 使用“循环”指令,编写程序循环。 该指令将累加器 1 的低字解释为 0 到 65535 之间的无符号 16 位整数。在指令执行阶段,首先将累加器 1 中的内容减 1。在减 1 之后,如果累加器 1 中的值不为零,则在指定跳转标签处执行跳转。如果值为零,则不执行跳转,并且在下一条指令时恢复执行程序。因此,累加器 1 中的值会指定需要执行的程序循环数。需要将这一数值保存在循环计数器中。 <数目> 操作数包含循环周期的数量。<循环计数器> 操作数包含仍需执行的循环周期数。在程序循环末尾处,循环计数器的内容将加载到累加器 1 中,并被该指令减 1。在减 1 之后,如果累加器中的值不等于零,则跳转到程序循环起始处的跳转标签。 “循环”指令不影响任何状态位。
| 警告 | 预设循环计数器 如果循环计数器没有预设值或者预设值为“0”,则循环计数器会进一步递减为负值,从而产生无限循环结果,这会使 CPU 转入 STOP 模式。 |
示例
以下示例说明了该指令的工作原理: STL | 说明 |
---|
L "Tag_Value" | // 将待执行的循环数加载到累加器 1 的低字中。 | START: T "Tag_Counter" | // 跳转列表开始 // 将累加器 1 的内容传送到循环计数器。 | L "MyTag_1" | // 加载操作数“MyTag_1”的值。 | L "MyTag_2" | // 加载操作数“MyTag_2”的值。 | *D | // 将两个值相乘 | T "MyTag_1" | // 将乘法运算的结果传递给操作数“MyTag_1”。 | L "Tag_Counter" | // 将循环计数器的值加载到累加器 1 中。 | LOOP START | // 将累加器 1 中的值减 1。 // 当值不等于零时,跳转到程序循环的开始处。 // 如果值为零,则执行下一条指令。 | L "MyTag_2" | // 加载操作数“MyTag_2”的值。 | L 100 | // 加载值 100。 | >I | // 比较操作数“MyTag_2”的值是否大于 200。 | = "MyTag_3" | // 将比较结果写入到操作数“MyTag_3”。 |
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |