2023年7月14日发(作者:)
LabVIEW学习笔记(三)——程序结构前⾔: 任何计算机语⾔都离不开程序结构,LabVIEW 作为⼀种图形化的⾼级程序幵发语⾔也不例外。LabVIEW 中的程序结构包括if-else循环,while循环结构,使能结构,公式节点和数学脚本节点等, 因此通过LabVIEW可以⾮常⽅便快速地实现任何复杂的程序结构。在LabVIEW 中,⽆论是循环结构、Case 结构还是条件式节点,它们都表现为⼀个⽅框包围起来的图形代码。这个⽅框就类似于C语⾔中的两个花括号 。
⼀、while循环 如果我们需要让循环在满⾜某种条件时退出或继续运⾏,这时候就需要借助于 While 循环。它是 LabVIEW 中最经常使⽤的⼀种程序结构。 下⾯我们利⽤ while 循环写⼀段最简单的代码:⽤户输⼊⼀个整数,while循环计算出 1 到 该数值的累加和,该段代码如下所⽰: 在上述代码中使⽤了反馈节点,因为使⽤ 反馈节点可以让程序更简洁, 就是直接将输出与输⼊连接起来,这时就会⾃动出现⼀个反馈节点的符号。 其中 是循环终⽌条件的输⼊端⼦,默认情况下为 Stop if true,即当输 ⼊布尔条件为 True 时终⽌循环,为 False 时继续运⾏。,这表⽰当输⼊布尔条件为 True 时继续运⾏,为 False 时终⽌循环。这两种情况是互 为相反的逻辑。具如果右击该端⼦,该端⼦变为体采⽤哪⼀种,则主要由程序的可读性决定。此外,While循环体与外部代码交换数据的⽅式和For循环是⼀样的,可以参考 For 循环。 如果以索引⽅式输⼊数组的话,While循环的次数并不会由数组⼤⼩控制,它仍由布尔值控制。当循环次数超过数组⼤⼩时,将以数组最后⼀个元素作为输⼊。我们编写代码如下所⽰:运⾏程序后,前⾯板显⽰: LabVIEW 在执⾏While循环时,如果⽤户没有给它设定循环时间间隔,那么它将以CPU的极限速度运⾏。按下Ctrl+Alt+Delete 快捷键打幵任务管理器,可以看到它⼏乎将CPU全部利⽤, 正常情况这样做⽐较危险,因为这样可能会导致整个 LabVIEW 程序看上去跟“死掉” ⼀样。 在很多情况下我们没有必要让 While 循环 以最⼤的速度运⾏,所以最好给 While 循环 加上时间间隔。有两种⽅法:⼀种是在每个循环中添加⼀个等待时间,只有在等待完毕后才运⾏下⼀个循环。 另⼀种⽅法是使⽤定时循环(Timed Loop)。 因此,在写 While 程序时千万别忘了加上⼀个定时器,即: ⼆、For 循环 For 循环⽤于将某段程序循环执⾏指定的次数。可以通过两种⽅法指定循环次数,⼀种是直接给定,⼀种是通过输⼊数组的⼤⼩给定。它在 函数⾯板中的位置如下图所⽰: 如果输⼊ For 循环体的数据为数组的话,有两种情况:⼀种是将整个数组⼀次性输⼊循环体, 另⼀种是让数组元素逐个地输⼊,并以数组⼤⼩确定循环次数。同理,输出也⼀样,可以⼀次性将整个数组输出;也可以将元素逐个输出,最后再将所有输出元素组合为同⼀个数组输出。 ⼀般来说,如果直接将数组与内部数据连接,它默认就是⾃动索引,即数组元素⼀个个地输⼊,输出也是⼀样的。⼀般情况下,⽤户不再需要指定运⾏的次数,它会⾃动根据数组⼤⼩执⾏。 当然如果⽤户硬要指定,那么它按照最⼩的执⾏次数执⾏。即如果数组有5个元素,⽽⽤户指定循环次数为10,则实际循环次数为5。索引⽅式下输⼊和输出⼀维数组如下图所⽰:程序框图:前⾯板:显然,虽然没有指定 for 循环中 N值 的⼤⼩,该循环执⾏了5次就终⽌了。因此,它会⾃动根据数组⼤⼩决定执⾏次数。 如何利⽤ for 循环来产⽣⼆维数组或多维数组,⽅法很简单,如下图所⽰:对应的前⾯板如下所⽰:改变循环次数:
三、事件结构 Labview 提供了事件结构,即仅当 “事件” 发⽣时,程序才作相应的响应。 通过事件结构,程序可以变得很简单,并降低CPU利⽤率。当多个事件发⽣时会形成事件队列, 直到每个事件对应的代码都被执⾏为⽌,因此不会有事件被漏掉的情况。 注意:事件结构必须放在 While 循环中,否则没有意义,因为当⼀个事件完成后,程序 需要去等下⼀个事件的发⽣。我们来看⼀段代码:接下来我们在选择器标签处右键⿏标,添加事件分⽀:添加 “取消按钮” 对应的事件:添加 “确定按钮” 对应的事件:添加 “ 旋钮” 对应的事件:然后我们可以运⾏代码,在前⾯板看到结果如下:旋转 旋钮:
四、条件结构 这⼀节我们通过⼀个例⼦来学习条件结构:利⽤条件结构和循环结构写⼀个跑马灯,即要求 5 个灯从左到右不停的轮流点亮,闪烁间隔由滑动条调节,我们新建⼀个空⽩ VI ,然后编写代码: 在while循环中放⼀个时延,延时时间由滑动条控制,这个延时时间就是跑马灯的闪烁间隔。然后从循环次数 i 引出,除以 5 取加1 作为条件使能结构的输⼊。最后依次设置每个分⽀:当输⼊为3时的分⽀执⾏的代码:输⼊为4时对应的分⽀:输⼊为5时对应的分⽀:我们看看对应的前⾯板:接下来,我们运⾏程序:注意: 当条件使能结构有多个分⽀时,必须设置默认分⽀,否则程序⽆法执⾏,如下:
五、公式节点 公式节点是⼀种程序结构,通过公式节点,⽤户不仅可以实现复杂的数学公式,还能通过⽂本编程写⼀些基本的逻辑语句,如if...、case, while循环之类的语句。可以这么说,公式节点基⽊上弥补了图形化幵发语⾔相对于⽂⽊语⾔的缺陷。公式节点的语法与C语⾔基本相同。 接下来我们来利⽤公式节点进⾏编程:我们添加公式节点函数,在⽅框的边框上右键⿏标,添加2个输⼊和3个输出,然后编程算法代码: 显然,公式节点不仅能实现⼀个公式,还能同时实现多个公式,只需要增加输⼊输出端⼦就可以了。⽽且,语法规则完全遵循C语⾔。 运⾏程序可以看到:更改 a 和 b 的值:
六、实践——温度监测系统 最后,我们来做⼀个温度监测系统,该系统底层数据是由随机数发⽣器产⽣的20〜40 之间的随机数,其代码如下所⽰:设置华⽒和摄⽒两种显⽰模式,选择华式温度时:选择摄⽒温度时: 然后设定温度上限,当温度超限时,Alarm Counter加1,这⾥采⽤了移位寄存器。LabVIEW 提供了移位寄存器,把上⼀次循环产⽣的结果 “移动” 到下⼀次循环的输⼊。添加移位寄存器的⽅法如下图所⽰: 右击 For 循环的边框,选择 添加移位寄存器 选 项,在右击点和另外⼀侧就会出现⼀个⼩⿊框,把它与需要连接的数据连接即可。 由于存储在移位寄存器中的数据值直到关闭VI时才从内存中消除。如果没有初始化移位寄存器,就会导致在关闭VI之前前后 两次运⾏该 VI 的结果截然不同。由于这种情况难于预测,因⽽可能会使VI的运⾏结果难以捉摸, 因此,任何情况下都别忘了初始化移位寄存器。 接下来分析整个程序,最外层⽤ While 循环来控制整个系统的运⾏: 当⽤户单击 “幵始采集” 按钮后,系统幵始采集数据,执⾏ case循环中的 true分⽀对应的程序,在该分⽀中,⽤层叠顺序结构来实现“初始化”,“运⾏”,“结束”这3个顺序执⾏状态:我们执⾏程序,可以看到前⾯板如下:
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689328172a230554.html
评论列表(0条)