可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

[西门子PLC] 西门子博途STL实例: LOOP(循环)

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

闲来无事,讨论一下三菱与西门子PLC PLC论坛-全力打造可编程控制器专业技术论坛 -

闲来无事,讨论一下三菱与西门子PLC

http://bbs.plcjs.com/forum.php?mod=viewthread&tid=506760&fromuid=250344

(出处: PLC论坛-全力打造可编程控制器专业技术论坛)

#非标自动化#

#西门子PLC#

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言