LabVIEW编程实例:模拟温度采集+报警指示+运行记录输出

引言

LabVIEW简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。内置了丰富的控件库及函数库,可以胜任各行业各领域的开发需求。另外,它也具有强大的外部接口能力,可以实现与C/C++、Basic、Matlab等编程语言互通的能力。发展至今,LabVIEW已经不仅仅局限于虚拟仪器软件类的开发,而是成为了一种通用的、完善的、开放的高级编程语言。

实例说明

这次给大家一个实用的编程例子,软件运行界面如下图所示:

该例子的功能是,模拟一个温度采集场景,在波形图表控件上显示三条曲线,分别是当前采集的温度曲线、上限曲线及下限曲线,当采集的温度值超出或低于设置的上下限值时启动报警灯指示。同时,在前面板上同步输出软件的运行记录情况,如显示在某时刻启动/暂停了采集、在某时刻报警了等信息。另外,在前面板上也可以做如下控制或设置:开始/暂停、清除图形、清空记录及上下限设置等。

编程思路

主框架采用while循环结构+事件结构的形式。主代码在事件结构的超时分支中完成,主要处理温度的采集、波形图的显示及报警记录的输出。对于清除图形、清空记录、退出程序等操作分别在各自控件的值改变事件中完成。

其中,对于软件运行情况的记录输出功能,使用while循环配合移位寄存器完成。

下面对每部分功能代码分别进行说明。

温度采集、波形图显示及报警记录输出的处理

这部分功能在事件结构的超时事件分支中完成,超时时间设为300,即每隔300ms做一次温度的采集、显示及报警指示等处理。程序框图代码如下图所示:

在上面代码中,当前采集的温度值通过调用一个能够产生a-b之间随机数的子程序来产生,本例设为产生50-90之间的随机数。该子程序前面板及框图代码如下图所示,对于子程序的创建及调用方法,详细请参考LabVIEW编程基础:手把手教你创建及调用子VI程序:

在超时事件分支中,首先,根据前面板上布尔控件“采集?”的值来判断是否启动采集,若为真,则采集,否则,不作处理。

将当前温度值、上限值及下限值捆绑成一个簇(即C语言中的结构体)连接到波形图表控件中,可以逐点实时显示三条曲线。

将当前温度值与上、下限值进行比较判断是否超限,若超限,则点亮相应的报警指示灯,同时,需要输出当前报警记录情况,本例中输出了当前时间及当前的温度值。在移位寄存器中将上次的信息与当前的信息使用连接字符串函数,输出到前面板的“运行记录”显示控件中,即可实现对软件运行情况的记录输出功能。在移位寄存器中,若没有达到报警条件,则将上次的值直接连接连接到下次的输出即可。注意,移位寄存器中的初始值设为空字符串。

开始/暂停采集时的记录输出处理

这部分功能在事件结构的“采集?”值改变事件分支中完成。在这个分支中,主要目的是在开始或暂停采集时,将当前的运行记录进行输出。程序框图代码如下图所示:

清除图形功能的处理

这部分功能在事件结构的“清除图形”值改变事件分支中完成。调用波形图表控件的属性节点“历史数据”,对其赋为空值即可清除波形图表上的所有曲线。程序框图代码如下图所示:

程序退出功能的处理

当点击前面板上“退出程序”按钮时,将退出程序。程序框图代码如下图所示:

总结

至此,主要代码部分就全部完成了。该例完美模拟了某个温度采集的情况处理,具有报警指示、运行记录输出等功能。大家也可以在这个例子上进行扩展,如添加将当前记录存储成文件等功能。另外,给出程序的动态运行情况如下图所示:

欢迎加关注,共同交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031A14JCR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券