返回列表 发布新帖

PLC编程中,循环语句FOR和WHILE怎么选?

219 0
发表于 2024-7-10 18:16:53 | 查看全部 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
<p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">迭代语句主要用于重复执行的程序,在 CoDeSys 中,常见的迭代语句有 FOR,REPEAT 及WHILE 语句。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);">FOR 循环</p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">FOR 循环语句用于计算一个初始化序列,当某个条件为 TRUE 时,重复执行嵌套语句并计算一个迭代表达式序列,如果为 FALSE,则终止循环,具体格式如下。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">FOR &lt;变量&gt; := &lt;初始值&gt; TO &lt;目标值&gt; {BY &lt;步长&gt;} DO</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">&lt;语句内容&gt;</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">END_FOR</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">FOR 循环的执行顺序如下:</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 计算&lt;变量&gt;是否在&lt;初始值&gt;与&lt;目标值&gt;的范围内;</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 当&lt;变量&gt;小于&lt;目标值&gt;,执行&lt;语句内容&gt;;</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 当&lt;变量&gt;大于&lt;目标值&gt;,则不会执行&lt;语句内容&gt;;</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 当每次执行&lt;语句内容&gt;时,&lt;变量&gt;总是按照指定的步长增加其值。步长可以是任意的整数值。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"><span style="border: 0px; margin: 0px; padding: 0px;">如果不指定步长,则其缺省值是 1</span>。当&lt;变量&gt;大于&lt;目标值&gt;时,退出循环。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"><span style="font-weight: 700; border: 0px; margin: 0px; padding: 0px;">示例:</span>使用 FOR 循环实现 2 的五次方计算。</span></p><p><img src="/upload/image/20230616/1686877433264106.jpeg"/></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">假设 Var1 的初始值是 1,那么循环结束后,Var1的值的为 32。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);">WHILE 循环</p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">WHILE 循环与 FOR 循环使用方法类似。二者的不同之处是,WHILE 循环的结束条件可以是任意的逻辑表达式。即可以指定一个条件,当满足该条件时,执行循环,具体格式如下。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">WHILE &lt;布尔表达式&gt;</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">&lt;语句内容&gt;</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">END_WHILE</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">WHILE 循环的执行顺序如下:</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 计算&lt;布尔表达式&gt;的返回值。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 当&lt;布尔表达式&gt;的值为 TRUE 时,重复执行&lt;语句内容&gt;。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"> 当&lt;布尔表达式&gt;初始值为 FALSE,那么指令&lt;语句内容&gt;不会被执行,跳转至 WHILE 语句的结尾。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><img src="/upload/image/20230616/1686877452825919.jpeg" style="border: 0px; margin: 10px auto 0px; padding: 0px; display: block; height: auto;"/></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">注意:</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">如果&lt;布尔表达式&gt;的值始终为 TRUE,那么将会产生死循环,应当避免死循环的产生。可以通过改变循环指令的条件来避免死循环的产生。例如:利用可增减的计数器避免死循环的产生。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;"><span style="font-weight: 700; border: 0px; margin: 0px; padding: 0px;">示例:</span>只要计数器不为零,则始终执行循环体内的程序。</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><img src="/upload/image/20230616/1686877453925921.jpeg" style="border: 0px; margin: 10px auto 0px; padding: 0px; display: block; height: auto;"/></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">在一定的意义上,WHILE 循环比 FOR 循环的功能更加强大,这是因为在执行循环之前,</span></p><p style="border: 0px; margin-top: 0.63em; margin-bottom: 1.8em; padding: 0px; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: rgb(25, 25, 25); font-family: &quot;PingFang SC&quot;, Arial, 微软雅黑, 宋体, simsun, sans-serif; text-wrap: wrap; background-color: rgb(255, 255, 255);"><span style="border: 0px; margin: 0px; padding: 0px;">WHILE 循环不需要知道循环的次数。因此,如果清楚地知道了循环的次数,那么 FOR 循环更好,因为 FOR 循环可以避免产生死循环。</span></p><p><br/></p>

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 英威腾技术论坛 版权所有 All Rights Reserved. 粤ICP备07504406号
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表