一、实验目的
1.掌握循环、顺序、条件、事件结构,以及公式节点的使用
2.掌握子VI的若干种封装方法
二、实验装置
以随机温度作为被测温度(30-80度),假设每5秒采集一次温度数据,设计仿真温度信号采集子VI,温度显示包含摄氏度和华氏度两种显示方式可选,请你编程实现该温度实时监测过程,设置上下限报警阈值,可以对温度进行阈值报警。要求包含温度信号采集和温度单位转换两个子程序。
三、实验原理
LabView中的基本程序结构包括For循环、While循环、顺序结构,均位于“函数→编成→结构”子面板中。
For循环和While循环的不同有:①完整的For循环包括循环次数(输入端口)和循环计数(输出端口),而完整的While循环包括循环体和结束条件。②For循环中的自动索引功能默认情况下是打开的,而While循环中默认情况下是禁止的。
与基于文本的编程语言不同,LabView是图形化的编程语言,程序的执行顺序是基于数据流向的。顺序结构适用于必须保证程序执行的先后顺序,以避免报错;包括平铺式顺序结构和层叠式顺序结构。
条件结构主要包括三部分内容,条件输入端口,条件标识与代码区。通过数据输入通道输入的数据选择对应的条件框,执行对应条件框内的代码。如果不能遍历所有可能俄情况或者条件时,就必须设置一个默认情况,来处理不符合其他任何条件的事件。条件结构可以没有数据输出通道。需要注意的是,如果数据流输入(或者输出)条件结构的不同条件框内,会导致概率性的数据流向问题,在编程中需要极力避免这种情况。
四、实验调试及程序
循环次数不确定,或者无限,选择while循环。
通过随机数产生一个随机的摄氏度,再生成一个温度单位转换的子VI,生成对应华氏度。由于数据由随机数产生,无论先产生的是摄氏度,还是华氏度,区别不大。如果数据不是由随机数产生,而是来源于其他结构,才需要具体分析设置。
设置一个温度信号采集的子VI,实现温度示数的温度计显示。
最初,设置温度上下限只能设置摄氏度的上下限,即使是在华氏度状态下,也只能设置上下限摄氏度,转换后与当时温度比较。这样显然是不合常理的。所以,思考设置对应上下限,能够超限报警。当摄氏度状态下,设置摄氏度上下限,超限报警;当华氏度状态下,设置华氏度上下限,超限报警。原本思考为条件结构,但是按钮已经类似条件判断,没有必要再用条件结构;而且与条件结构相比,选择结构更简洁。
当然,温度计也能够选用选择比较,由于一个温度计和两个温度计差异不大,故可以不用刻意加一个选择比较,可以根据需要自由调整。但是,由于温度单位不同,导致温度计示数不同,而温度计需要手动调整量程,所以最好使用两个温度计分别显示。
最后添加上额外的波形图表,还能显示一定时间内的温度大致变化。
图一 温度装置程序框图
图二 温度单位转换(子VI)程序框图
图三 温度信号采集子VI程序框图
五、实验结果
按钮默认状态下,选择为华氏度;按下按钮(绿灯闪亮),调整为摄氏度。
在摄氏度(或者华氏度)下,显示两者温度示数,并且设置温度上下限,可实现实时超限报警。
图四 华氏度温度采集
图五 摄氏度温度采集
六、结果讨论与心得
结果讨论:
1.子VI的创建由两种方式:一种是直接编写子VI,与编写正常的LabView程序一样;另一种是将主VI中要创建成子VI的部分选中,“编辑→创建子VI”。调用子VI的方式是,右击程序面板的空白部分,在弹出的级联菜单中选择“选择子VI”,在弹出的对话框中选取子VI程序,此时光标上就有一个子VI的图标。一般来说,单个数据可以用波形图标显示,如果再整体外加上循环,输出数组或者簇,那么就可以通过波形图输出。
2.波形图表是趋势图的一种,将新的数据添加到旧数据尾端后再进行显示,可以反映数据的实时变化。波形图表与波形图的主要区别在于波形图是将原数据清空后再重新绘图,而趋势图保留了旧数据,保留数据的缓冲区长度通过右击控件并选择“图表历史长度”来设定。另外,通过簇绑定和创建数组,可以显示多条曲线。