基于LabVIEW的湿度传感器自动测试系统设计

2014-03-22 05:13杜智涛魏洪峰姜明波
计量技术 2014年1期
关键词:自动测试状态机报表

杜智涛 王 洋 魏洪峰 姜明波

(1.北京应用气象研究所,北京 100029; 2.解放军理工大学气象学院,南京 211101)

0 引言

湿度测量在气象分析和预报、气候研究,飞行保障以及环境研究中都有着特定的作用,是重要的气象观测要素之一。湿度传感器性能的好坏直接关系到湿度测量的准确度。因此,需要对湿度传感器的示值误差、温度系数、湿滞等性能参数进行测试,以便及时发现湿度传感器存在的问题,减小测量误差。

目前,受湿度传感器测试设备的工作原理、操作方式以及接口等方面的限制,湿度传感器的测试基本还是采用传统的测试人员读取仪表示值、手工记录和处理数据的方法,具有测试时间长、分析处理数据工作繁杂等缺点,因此,需要基于现有检测设备设计一套能够实现湿度传感器自动测试的系统,这样将大大提高测试的效率,降低测试人员的工作强度。

1 系统的组成和工作原理

1.1 系统硬件组成和工作原理

本文以双压法湿度发生器、数字式精密露点仪、计算机、多串口数据采集卡、打印机为主要设备来组建湿度自动测试系统。其中双压法湿度发生器主要用于提供稳定的湿度场;露点仪用于监测测试室内的温、湿度值;多串口数据采集卡用于采集测试数据集和发送控制指令;打印机用于证书的自动打印。系统组成如图1所示。

图1 湿度传感器自动测试系统组成框图

进行湿度传感器测试时,将被测的湿度传感器探头、精密数字露点仪的吸气管(探头)和测温铂电阻一同放置在测试室,测控计算机通过多串口数据采集卡分别向双压法湿度发生器的温度控制单元发送控温指令和控压指令,同时根据设置的测试点和数据录取方式,通过多串口数据采集卡采集双压法湿度发生器的温度、压力,精密露点仪的温度、露点、相对湿度,以及被测湿度传感器的温度、露点以及相对湿度。测试结束后,将测试数据保存至数据库,并能够自动生成测试报告和打印。

2.2 系统软件总体结构

通过对系统硬件组成、工作原理以及湿度传感器自动测试过程的分析,可知系统软件应具有以下基本功能:

1)信息录入、保存功能:能够对被测湿度传感器以及测试设备的基本信息进行录入、保存;

2)自动测试功能:能够依据测试规范或者用户的测试要求设定测试点以及测试参数,自动控制湿度发生器产生设定的湿度场,完成湿度传感器的自动测试,并实现测试数据的自动采集与显示;

3)数据存储功能:能够将测试数据及其相关信息存储到指定的数据库中;

4)报表生成功能:能够按照相关报表模板自动生成测试符合要求的报表。

系统的软件功能模块如图2所示。

图2 系统的软件功能模块图

2 自动测试系统软件设计

2.1 LabVIEW编程语言

自动测试系统软件选择美国国家仪器公司(NI)的LabVIEW图形化编程语言作为开发平台[1-2]。除了具备其他语言所提供的常规函数功能外,LabVIEW 中还集成了大量的生成图形界面的模板,丰富实用的数值分析、数字信号处理功能,以及多种硬件设备驱动功能(包括RS-232、GPIB、VXI、数据采集板卡、网络等)。另外LabVIEW可调用Windows动态链接库和用户自定义的动态链接库中的函数。LabVIEW的CIN节点使用户可以使用由其它语言例如ANSI C编译的程序模块,使LabVIEW成为一个开放的开发平台。

在89例患者中,全部患者均符合手术病理标准,患者经过在腹彩超多普勒超声的检查发现,其诊断率为95.5%(85/89),漏诊率4.9%(4/89)。

LabVIEW还直接支持动态数据交换(DDE)、结构化查询语言(SQL)、TCP和UDP网络协议等。此外,LabVIEW还提供了专门用于程序开发的工具箱,使用户能够设置断点,动态执行程序来观察数据的传输过程,以及进行方便的调试。

图3 自动测试模块状态关系图

2.2 状态机程序设计思想

Alan Turing 于1936年最早提出了“状态机”的概念,状态机是一种具有制定数目状态的概念机,它在某个指定的时刻仅处于一种状态,状态的改变是由输入事件的状态变化而引起的[3-5]。作为对输入事件的响应,系统可能转变到相同或不同的状态,而输出事件是任意产生的。状态机包含三要素:状态(State)、事件(Event)和动作(Action)。

图4 自动测试模块程序架构

在NI开发者套件(NI Developer Suite)中提供了一个很实用的工具包——状态机工具包(State Machine Toolkit),可以用来实现设计、编辑程序的状态图(状态图是根据程序的要求抽象出来的,称“程序流程图”可能更好理解些),完成状态图的编辑后,关闭状态图编辑器,便会在程序框图上自动地生成图形化语言的状态机构架(或者说是图形化的状态机代码)。

在本系统中湿度传感器的自动测试涉及到多种状态的转换,因此采用状态图的设计思想可以很方便地进行程序框图的设计,如图3和图4所示分别为自动测试模块的状态关系图以及对应的程序架构。

2.3 串口通信模块设计

系统软件中数据的采集以及控制指令的发送主要是通过串口通信来实现的,因此串口通信模块的设计直接关系到系统软件的质量。在LabVIEW中提供了VISA(Virtual Instrument Software Architecture)接口模块来进行编程,VISA是应用于仪器编程的标准I/O应用程序接口,是工业界通用的仪器驱动器标准API(应用程序接口),具有很好的兼容性、扩展性和独立性[6-7]。串口通信模块软件流程如图5所示。

图5 串口通信模块软件流程图

串口通信模块程序框图中使用了VISA Configure Serial Port.vi、VISA Write.vi、VISA Read.vi等LabVIEW中自带的函数库,该程序框图如图6所示。

图6 串口通信模块程序框图

2.4 数据库管理模块设计

系统软件中数据库管理模块主要是实现数据的保存、修改、删除和查询等功能,利用数据库访问的工具包LabSQL可以很方便地实现这些功能[8]。LabSQL中的VI子程序按照功能可分为四类:Command Vis、Connection Vis、Recordset Vis以及Top Level VIs。其中Command VIs的功能是完成一系列的基本ADO操作,例如,创建或删除一个Command,对数据库中的某一个参数进行读或写等;Connection VIs的功能是管理LabVIEW与数据库之间的连接;Recordset VIs用于对数据库中的记录进行各种操作,例如,创建或删除一条记录,对记录中的某一条目进行读或写等;Top Level VIs属于顶层的LabSQL应用,对前三类LabSQL VIs某些功能的封装,例如,SQL Execute.VIs可用于直接执行SQL命令。图7即为对数据库进行简单操作的程序框图。

图7 利用LabSQL访问数据库的框图

首先通过ADO Create.vi创建一个Connection对象,利用ADO Connection Open.vi建立与数据库的连接,然后利用ADO Recordset Create.vi创建一个Recordset对象,并利用ADO Recordset Open.vi打开Recordset对象,同时利用SQL查询命令获得数据库表中的全部或部分记录,这样就通过功能选择按钮来选择控制对数据库的操作(查询、添加、删除、修改),最后利用ADO Recordset Close.vi和ADO Connection Close.vi关闭与数据库之间的连接。

2.5 报表生成模块设计

湿度传感器自动测试过程完成后,通常需要将测试数据进行分析和保存,并生成报表,利用LabVIEW 报告生成工具包(Report Generation Toolkit)通过ActiveX技术可以将Microsoft Word和Excel与LabVIEW 集成开发环境结合起来,快速生成专业的报表[9]。

Report Generation Toolkit中包含了3类vi调用子函数:

1)高级报告生成Vis,用于新建报表以及进行常规操作;

2)专门用于生成Word报表格式的Vis,其中包括了文档管理、查找、替换、编辑和格式化Word中的图表、图片,通过编写VBA代码自定义各种复杂的操作。

3)专门用于生成Excel报表格式的Vis,除了能进行常规的Excel操作外,还可以操作Excel中的宏。

自动测试系统中报表生成模块主要实现步骤如下:

1)首先按照所要生成报表的要求订制测试记录表或测试报告的模板(Test.doc或Test.xls),将模板中需要填充的占位符事先定义到一个数组中;

2)对Excel或者Word进行调用,一般采用New Report.vi接收预先订制的Excel或Word模板所在的路径,并在Report Type中选择响应的报表形式,这时就获得了对报表模板的调用;

3)数据填充过程,将数据库中的测试数据填充到报表模板响应的占位符中,一般可采用Append Report Text.vi子函数填充数据。

4)完成数据填充后,使用Dispose Report.vi关闭对Excel或Word的调用。

3 结束语

本文设计的湿度传感器自动测试系统充分利用了LabVIEW对硬件编程的高效便捷性,将双压法湿度发生器、数字式精密露点仪以及被测传感器通过多串口卡数据采集卡有效地集成;同时利用了LabVIEW中状态机程序设计思想,丰富的接口函数以及数据库和报表生成工具包,大大提高了程序设计的灵活性和高效性。实际使用结果表明,该系统有效地提高了湿度传感器测试工作的效率,减小了重复工作量,并在一定程度上降低了测试人员操作记录的错误发生。

[1]陈锡辉,张银鸿,等.Labview 8.20 程序设计从入门到精通[M].北京:清华大学出版社,2007

[2]杨乐平,李海涛,赵勇,等.LabVIEW高级程序设计[M].北京:清华大学出版社,2003

[3]Anthony Lukindo.Labview Queued State machine Architecture

[4]叶枫桦,周新聪,白秀琴,等.基于LabVIEW队列状态机的数据采集系统设计[J].现代电子技术,2010(4)

[5]Jon Conway,SteveWatts.A Software Engineering Approach to labview[M].New Jersey:Prentice Hall PTR,2003

[6]马草原,郭双强,李国欣.基于labview的串口调试与数据分析[J],工矿自动化,2005,8(4)

[7]畅国忠.基于VISA的事件处理方法与实现[J].测控技术,2000(9)

[8]罗文辉.Labview中的数据库访问[J].武汉理工大学学报,2006,28(3)

[9]郑默思,周晓军.基于ActiveX的虚拟仪器报表打印方法[J].机电工程,2006,23(12)

猜你喜欢
自动测试状态机报表
基于有限状态机的交会对接飞行任务规划方法
LabWindows/CVI中Excel报表技术研究
JXG-50S型相敏轨道电路接收器自动测试台
关于某型雷达自动测试系统的几点认识和建议
从三大报表读懂养猪人的成绩单
基于ATE与BIT组合的NAMP自动测试与故障诊断系统设计
一种卫星低频接口自动测试系统
FPGA设计中状态机安全性研究
基于反熔丝FPGA的有限状态机加固设计
基于VHDL的一个简单Mealy状态机