完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
假设现在想要写个程序来量测烤箱的温度,当高于或是低于我所设定的温度时,警示灯就会亮起。所以这个程序写起来就会像下面的样子: 这样的程序看起来已经可以用来判断所量测到的温度了,但是当你将这个程序交给烤箱操作的人员时,过不久他一定会跟你抱怨,因为通常要烤的食物至少都要一个小时,可是你的程序每次要量测温度时都需要重新启动一次,操作上真的很不方便,如果能够有种方法帮忙我们的程序,能够自动地不断重覆的话,就可更加满足操作上的需求了。 在程序设计时,为了使程序能够不断地重覆执行某些动作,通常是使用 Loop (循环)。循环是一种程序结构,可以帮助你控制程序。在本小节中,我们先来了解如何使用 While Loop。 因为Loop是一种程序的结构,所以记得是要在 Block Diagram 中建立。While Loop 的位置是在 Function Palette >> Programming >> Structures 内,使用鼠标点选 While Loop 元件后,再到 Block Diagram 拖曳画出一个循环: 接着你就会看到像下图一样的物件,请注意 Condition Node 是用来控制循环是否执行的脚位,当你输入 False 时,循环就会执行,直到输入为 True 的时候,循环才会停止;而 Iteration Node 是一个 Numeric 的输出型态,该数值会随着循环执行的次数而累加,所以可以由 Iteration Node 来得知目前循环已执行的次数,但要记得计数是由 0 开始算的喔!也就是循环第一次跑的时候,Iteration Node 的输出值是 0。 现在你已经学会了如何建立 While Loop,接着我们只要将刚刚的温度量测程序放在循环当中,就可以让程序自动重覆地进行温度量测囉。 While Loop 预设是使用 True 来让循环停止,但也可以设成输入 False 让循环停止,改变的方式就是在 Condition Node 上按右键选择 Continue if True,接着 Condition Node 就会变成循环箭头的符号。所以当你输入 True 时,循环才会继续执行,刚好跟预设的方式 (Stop if True) 相反。 现在你已经知道如何使用循环结构来帮助你的程序重覆执行,但是循环在使用上还是有很多容易犯的小错误,象是资料流入、出循环时的特性等。现在先将刚刚的程序稍微修改一下,然后我们再来分析修改后的程序。 请先看到下面修改后的程序。我把烤箱温度和警示灯都放在循环外面了,执行起来会有什么差别吗? 上图的程序在执行时,循环中并无法得知烤箱 "实时" 的温度,亦无法立即显示警示灯,这是一个设计错误的程序! 这是一个刚使用循环时很容易发生的错误观念,就是未分清物件放在循环里面和外面的差别;所以这边跟大家分享一个口诀以帮助厘清如何使用循环,就是「Input 未到齐前,循环不会执行;循环未停止前,Output 不会输出」。我们再回到刚刚修改后的程序,你有没有发现,左边橘色的端点对于循环是输入点,而右边绿色的端点则是循环的输出。由上段说明文字可得知,当循环在执行时,代表着烤箱温度已经输入到循环中,而循环执行的过程中,并不会再去读 Input 端点的资料;另外,因为警示灯放置于循环外,也就是一个 Output 端点,所以循环内的程序并无法将实时的警示灯号送到循环外头,除非循环执行完毕而送出最后的资料出循环。如果看到这里还不是很清楚,建议可以开启执行状态显示钮 (Highlight Execution) 同步看程序的执行顺序,并比较这两个情况,就可以更清楚物件放在循环内与循环外的差别囉! |
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
1500 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2068 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1694 浏览 0 评论
1881 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
4561 浏览 3 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 02:48 , Processed in 0.634145 second(s), Total 60, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号