1 引言
虚拟仪器(VI)的概念是美国NI公司在20世纪80年代中期提出来的。所谓虚拟仪器就是以计算机作为仪器统一的硬件平台,充分利用计算机的运算、存储、回放、调用、显示及文件管理等智能化功能,同时把传统仪器的专业化功能和面板控件软件化,使之与计算机结合构成一台从外观到功能都完全与传统硬件仪器相同,同时又充分享用了计算机智能资源的全新仪器系统。与传统仪器相比,虚拟仪器有许多优点:对测试量的处理和计算可更复杂且处理速度更快,测试结果的表达方式更加丰富多样,可以方便地存储和交换测试数据,价格低,技术更新快。本文介绍一种自动气象站的软件设计方法,以美国NI公司的LabVIEW8.5为平台,配合QLI50气象数据采集器,实现虚拟自动气象站设计。
2 虚拟自动气象站功能介绍
自动气象站由传感器、数据采集器、数据处理终端等组成。传感器感应气象要素的变化;数据采集器可对气温、湿度、风向、风速、雨量和气压等气象要素进行自动采集和预处理,数据处理终端能对数据采集器获取的数据进行进一步运算处理,能在屏幕上按规定的格式显示实时数据,并能按规定的格式自动进行资料的存储。
为实现上述自动气象站的功能,本文设计的虚拟自动气象站系统主要由数据采集、数据处理、数据显示、数据保存四个模块构成。如果数据采集周期没有特别要求,可以将这四个模块通过数据流连接起来,即每采集一次数据都需要经过数据处理、显示、保存后才能开始第二轮采集,对于这种情况,由于数据分析导致的时间延迟将会增大数据采集的周期。
由于自动气象站对数据采集周期要求较高,基于数据流的方法显然是不行的。因此,本文提出了基于队列技术的数据采集模式:即利用多个并行循环处理不同的任务,每一个循环都具有独立的线程,相互间互不干扰。拿数据采集循环和数据处理循环的数据传递为例:数据采集循环不间断地采集数据,并将采集到的数据放在队列中,数据处理循环不间断地从队列中取出数据进行数据处理。如果处理数据的周期大于采集周期,那么新采集的数据将会缓存在队列中,队列只要没有满就不会丢失采集到的数据。如果处理数据的周期小于采集周期,那么在队列为空时,数据处理循环将处于等待状态,因此也不会导致数据的重复分析。当数据采集循环停止时,若队列中还有数据,则数据分析循环也会将剩余的数据全部分析,因此停止数据采集也不会丢失前面采集到的数据。数据显示循环和数据保存循环亦是如此,四个循环并行进行从而实现自动气象站的功能。
另外,为了精确的控制时间,系统还采用了定时结构和通知技术,通过通知器操作函数可以实现一段程序框图在收到来自于定时结构中每秒发出的通知消息前保持等待状态,从而实现了程序中每秒显示一次数据和每分钟保存一次数据的功能。
3 数据采集
数据采集模块用来获取QLI50气象数据采集器所采集到的数据。数据采集模块的框图如图1所示。
图1 数据采集框图程序
首先用“打开TCP连接”函数打开由地址和远程端口所指定的TCP网络连接,同时用“获取队列引用”函数创建以名为“网口数据”的队列,再用“读取TCP数据”函数从TCP网络连接读取字节,并把字节放入“网口数据”队列中,等待数据处理循环读取队列中数据,同时开始采集下一秒的数据。
4 数据处理
数据处理模块用来将采集到的数据进行预处理。数据处理模块的框图如图2所示。
图2 数据处理框图程序
由于采集的原始数据是一系列编码,要得到各气象要素的数据还必须解码。数据从“网口数据”队列中出列,用“预处理”子VI可以将出列的数据分离开,并通过FOR循环的自动索引功能将它们按顺序加入“处理数据”队列中,等待数据显示循环读取队列中数据,同时继续从“网口数据”队列中读取数据。
5 数据显示
数据显示模块用来在虚拟前面板上按规定的格式显示实时数据。数据显示模块的框图如图3所示。
图3 数据显示框图程序
各气象要素数据从“处理数据”队列出列,通过全局变量“一次读取数据”将数据传送到主界面程序框图中的波形图表,可以实时显示出各气象要素数据的变化曲线。另外,因为前面板显示的是各气象要素一分钟的平均数据,所以出队列的数据还通过一个“均值”函数,并将一分钟内的平均数据通过全局变量“分钟平均数据”传送到主界面来显示各气象要素一分钟内的平均值。为了数据保存的需要,创建“保存数据”队列,将“处理数据”队列出列的数据加入到“保存数据”中,等待数据保存循环读取队列中数据,同时继续从“处理数据”队列中读取数据。
6 数据保存
数据保存模块用来将采集到的数据按规定的格式自动进行资料的存储。数据保存模块的框图如图4所示。
图4 数据保存框图程序
数据保存模块使用了通知技术,由主程序框图中的定时器每秒发出一个通知信号,程序在第60秒时将这一分钟内从“保存数据”队列中出列的数据都写入以当前时间命名的文本文件中,并保存在当前路径下data文件夹中,从而将每秒采集到的数据都进行了保存。
7 结论
本自动气象站软件以LabVIEW8.5为开发平台,配合QLI50气象数据采集器,实现了虚拟自动气象站的基本功能。所构成的虚拟自动气象站成功用于地面气象观测中,具有造价低,操作方便等特点。另外,软件的几个模块都采用了子VI的设计,可以采用LabVIEW远程VI调用技术,即通过本地VI调用另外一台计算机上的VI,而用户不需要考虑网络通信的复杂细节。通过远程VI调用可以方便地实现网络分布式系统,可以在本地计算机上实现自动气象站的数据采集,而在另外远程计算机上显示自动气象站的实时状态。