快生活 - 生活常识大全

编程实例模拟温度采集报警灯指示


  引言
  LabVIEW简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。内置了丰富的控件库及函数库,可以胜任各行业各领域的开发需求。另外,它也具有强大的外部接口能力,可以实现与C/C++、Basic、Matlab等编程语言互通的能力。发展至今,LabVIEW已经不仅仅局限于虚拟仪器软件类的开发,而是成为了一种通用的、完善的、开放的高级编程语言。
  实例说明
  这次给大家一个实用的编程例子,软件运行界面如下图所示:
  该例子的功能是,模拟一个温度采集场景,在波形图表控件上显示三条曲线,分别是当前采集的温度曲线、上限曲线及下限曲线,当采集的温度值超出或低于设置的上下限值时启动报警灯指示。同时,在前面板上同步输出软件的运行记录情况,如显示在某时刻启动/暂停了采集、在某时刻报警了等信息。另外,在前面板上也可以做如下控制或设置:开始/暂停、清除图形、清空记录及上下限设置等。
  编程思路
  主框架采用while循环结构+事件结构的形式。主代码在事件结构的超时分支中完成,主要处理温度的采集、波形图的显示及报警记录的输出。对于清除图形、清空记录、退出程序等操作分别在各自控件的值改变事件中完成。
  其中,对于软件运行情况的记录输出功能,使用while循环配合移位寄存器完成。
  下面对每部分功能代码分别进行说明。
  温度采集、波形图显示及报警记录输出的处理
  这部分功能在事件结构的超时事件分支中完成,超时时间设为300,即每隔300ms做一次温度的采集、显示及报警指示等处理。程序框图代码如下图所示:
  在上面代码中,当前采集的温度值通过调用一个能够产生a-b之间随机数的子程序来产生,本例设为产生50-90之间的随机数。该子程序前面板及框图代码如下图所示,对于子程序的创建及调用方法,详细请参考前面的文章。
  在超时事件分支中,首先,根据前面板上布尔控件"采集?"的值来判断是否启动采集,若为真,则采集,否则,不作处理。
  将当前温度值、上限值及下限值捆绑成一个簇(即C语言中的结构体)连接到波形图表控件中,可以逐点实时显示三条曲线。
  将当前温度值与上、下限值进行比较判断是否超限,若超限,则点亮相应的报警指示灯,同时,需要输出当前报警记录情况,本例中输出了当前时间及当前的温度值。在移位寄存器中将上次的信息与当前的信息使用连接字符串函数,输出到前面板的"运行记录"显示控件中,即可实现对软件运行情况的记录输出功能。在移位寄存器中,若没有达到报警条件,则将上次的值直接连接连接到下次的输出即可。注意,移位寄存器中的初始值设为空字符串。
  开始/暂停采集时的记录输出处理
  这部分功能在事件结构的"采集?"值改变事件分支中完成。在这个分支中,主要目的是在开始或暂停采集时,将当前的运行记录进行输出。程序框图代码如下图所示:
  清除图形功能的处理
  这部分功能在事件结构的"清除图形"值改变事件分支中完成。调用波形图表控件的属性节点"历史数据",对其赋为空值即可清除波形图表上的所有曲线。程序框图代码如下图所示:
  程序退出功能的处理
  当点击前面板上"退出程序"按钮时,将退出程序。程序框图代码如下图所示:
  总结
  至此,主要代码部分就全部完成了。该例完美模拟了某个温度采集的情况处理,具有报警指示、运行记录输出等功能。大家也可以在这个例子上进行扩展,如添加将当前记录存储成文件等功能。另外,给出程序的动态运行情况如下图所示:
网站目录投稿:凡云