[西门子] 西门子博途: STL-LOOP(循环)

[复制链接]
查看86 | 回复2 | 2025-3-30 15:14:56 | 显示全部楼层 |阅读模式

西门子循环指令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”。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
tianyuhuanying | 2025-3-30 22:39:22 | 显示全部楼层
DSFDSGHFDJHGFJKHGKJHLJH.K;;K';O'
lhsz | 5 天前 | 显示全部楼层
感谢楼主分享精彩内容
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则