APP下载

虚拟仪器在传动系统试验器测试中的应用

2016-02-05汤建晖

工程与试验 2016年4期
关键词:模拟量控件线程

喻 杰,高 俊,汤建晖,张 佳

(中国航发湖南动力机械研究所,湖南 株洲 412002)

虚拟仪器在传动系统试验器测试中的应用

喻 杰,高 俊,汤建晖,张 佳

(中国航发湖南动力机械研究所,湖南 株洲 412002)

为了满足各型号的直升机传动系统试验器高精度的测试要求,设计了基于虚拟仪器LabWindows/CVI与ADAM-5000/TCP的通用化测试系统,阐述了该测试系统的组成。运用LabWindows/CVI的多线程、动态链接库、数据库设计等技术,实现了数据采集、数据处理、数据记录存储等功能。该系统具有扩展性强、通用性好、稳定可靠、实时性好的特点,取得了较好的测试效果。

LabWindows/CVI;ADAM-5000/TCP;测试系统

1 引 言

数据测试是直升机传动系统研制过程中非常重要的一环,为分析和监测各型号的直升机传动系统提供了必要、可靠的前提和基础。本文以某传动系统主减速器中的行星齿轮系试验器为例,设计了一套以LabWindow/CVI为上位机测试软件、以ADAM-5000/TCP为下位机采集模块的测试系统,实现了数据采集以及实时、历史数据处理,该测试系统同样适用于其它各型号的传动系统试验器。

2 系统构成

本系统由分布于试验现场的各类传感器(如压力、流量、温度、金属沫、油滤堵塞等传感器及振动传感器)、电荷放大器、ADAM5000/TCP、电气操纵间的工业交换机、计算机以及监控软件构成,系统框图如图1所示。其中,ADAM5000/TCP是以以太网为基础的I/O系统,有背板和插槽,可配用不同的模拟量以及数字量模块[1]。ADAM系统1内有5个模拟量输入模块5017和1个数字量输入模块5051,ADAM系统2内有4个热电偶信号输入模块5018和4个热电阻信号输入模块5013。

图1 系统框图

3 软件构成

本测试软件基于NI公司的LabWindow/CVI语言编写,其以ANSIC为核心,具有强大的图形界面设计功能,为用户提供了交互式的编程方法和丰富的库函数[2]。该测试软件实现流程如下:电气操纵间的监测计算机通过以太网与ADAM5000/TCP系统通信,并且运行LabWindow/CVI软件,不断地向ADAM系统传递指令。ADAM系统根据指令将采集到的现场传感器的信号发送给监测计算机,由LabWindow/CVI软件完成对现场信号的处理后,通过对各类型的显示控件进行赋值设置给用户提供一个实时的监测界面,并将数据存储在数据库中供以后查询。系统同时提供报警功能,如试验件振动超限时,界面有报警信息显示。

由于该测试系统属于多任务系统,为了优化系统的性能,采用多线程技术[3],根据功能实现要求设计4个线程。第1个为主线程,是用户交互线程,主要完成各项初始化操作以及提供与用户交互的界面,根据用户的命令调用各个线程模块完成相应的功能。第2个为数据采集线程,用于后台采集数据。第3个为数据处理线程,专门用于处理采集到的试验数据和显示试车数据和状态。第4个为数据记录线程,用于数据记录存储。现在着重介绍后3个线程是如何实现的。

3.1 数据采集

LabWindow/CVI通过调用ADAM5000/TCP生产厂家研华公司为其提供的动态链接库ADAMTCP.DLL中的函数,来实现对ADAM模块的各种操作。要在LabWindow/CVI环境下使用ADAMTCP.DLL,需要在源文件中将头文件ADAMTCP.h加入,并且将ADAMTCP.lib库文件加入工程项目中,同时要将头文件、库文件和动态链接库文件拷贝到工程目录内。由于本测试系统采集的信号大部分为模拟量信号,因此着重讲述实现模拟量数据的采集过程。使用函数“ADAMTCP_ReadReg ()”可以实现模拟量的采集,该函数的功能是接收模块的模拟量数据,调用该函数的程序流程如图2所示。

图2 模拟量数据读取程序流程图

该函数的原型如下:

int ADAMTCP_ReadReg(char szIP[], WORD wIDAddr, WORD wStartAddress, WORD wCount, WORD wData []);

其中,szIP[]为待连接ADAM系统的IP地址,wIDAddr为Modbus/TCP的设备编号,常设置为1,wStartAddress为将被读的起始地址,wCount为将被读的地址长度,wData用于存储读到的值,wData为数组名,采集到的数据最终存储在该数组内。根据Moudbus/TCP协议[4],虚拟仪器LabWindow/CVI通过以太网与ADAM5000/TCP通信,ADAM5000/TCP支持的Moudbus地址表如表1所示。

表1 Moudbus地址表

在本测试系统中,ADAM系统1的SLOT0~SLOT4为8通道模拟量输入模块ADAM5017。根据表1中的地址表规则,将模拟量读取函数中参数赋值后,guSys.nCodeAi1=ADAMTCP_ReadReg(ADAM_IP1,1,1,40,awData);其中,guSys为预先定义的系统运行参数结构体,nCodeAi1为该结构体中的成员变量,若该函数成功调用,则其返回值0,ADAM_IP1为ADAM系统1的IP地址的宏定义,通过该条语句,awData[0]~awData[39]被赋值为ADAM系统1中SLOT0~SLOT4中各通道的输入值。SLOT5为16通道数字量输入模块ADAM5051,通过使用函数"ADAMTCP_ReadCoil ()"以实现数字量的采集,对该函数的各参数赋值以后,guSys.nCodeDi1=ADAMTCP_ReadCoil(ADAM_IP1,1,81,16,abData)。采用同样的协议规则进行软件编程操作,通过调用相对应的函数亦可完成ADAM系统2中热电阻信号和热电偶信号的采集。

3.2 数据处理

通过数据采集得到的是数字原码值,对于模拟量输入信号而言,还需要通过相应的线性变化,将信号转化为可用于显示的物理量值,其运算对应关系为:

测量值=工程下限+(工程上限-工程下限)×(原码值-原码下限)/(原码上限-原码下限)

其中,工程上下限为物理测量传感器的上下限,ADAM数据采集设备中,原码上下限为0~65535,运算得到测量值后,根据实际情况还需要对该物理测量值进行相应的灵敏度变换,以及正向或负向修正,最终转化为逻辑通道值,存放在事先定义的模拟量输入结构体成员中的逻辑通道数组内。以上描述的模拟量输入的通道名称,工程单位,测量通道上下限,传感器上下限,传感器灵敏度,正向、负向参数以及故障上下限等值均保存在命名为“config.mdb”的数据库配置文件中的模拟量逻辑通道表内,如图3所示。

图3 模拟量输入逻辑通道表

若要实现对以上配置数据源文件“config.mdb”的访问,在LabWindow/CVI环境下,必须安装CVI SQL Toolkit工具包[5],安装完该工具包后,用户便可以使用ODBC(Open Database Connectivity开放式数据库互联)数据源来实现数据库与LabWindows/CVI测试软件程序之间的连接,并且利用SQL语句访问由ACCESS制造的数据库了。

模拟量输入逻辑通道菜单界面如图4所示,模拟量输入的各种参数既可以在图3内修改,也可在图4界面内修改,下面着重介绍后者的实现过程。

图4 模拟量输入逻辑通道菜单界面

在该用户界面内左侧插入的是列表框控件,列表框是以标题和数值对的形式保存的,该控件显示的是该列表框的各条目的标题,通过对数据库的编程操作,本列表框的标题被设置成数据源文件config.mdb中模拟量输入逻辑通道表第一列的各通道的名称,在用户界面内,当列表框中的任一条目被选中时,其数值被设置成模拟量输入逻辑通道表的行值,表中同一行的其它参数也在界面内被对应的数值控件同步读取。

图中,用户界面右侧上方标题为索引的控件是下拉列表控件,该控件的各项目标题被设置成config.mdb中模拟量输入物理通道表的通道的名称,其包含了实际的ADAM数据采集模块的通道代号,控件的数值被设置成模拟量输入物理通道表的行值,同时将该值和模拟量输入逻辑通道表中的索引值相对应,并且将该索引值作为数据采集模块中的存储数组以及最终转化的逻辑通道数组的常量表达式,故通过改变该索引值,就可以改变ADAM数据采集模块的通道。

上文中得到的逻辑通道数组内的值一路用于进行相应的故障状态检测,将该值与预设的报警和故障上下限进行比较,若不在正常范围内,则显示故障信息;一路用于数据显示,表征试车状态和信息,将需要标准显示的控件的常量名先设置成形如AI_NUM_027_VAL的形式,通过编程遍历用户图形界面的所有的面板及其子面板,寻找满足该命名规则的控件。通过字符串分解函数,可以将各个下划线之间的字符串进行分解。AI字符串为所属控件的显示类型,表示模拟量输入通道标示。与其对应的类型还有DI,为数字量输入通道标示。NUM为所属控件的表达方式,为数值表达方式,与其对应的控件的其它表达方式为GAU、LED,分别表示仪表类和指示灯类显示标志,通过字符串转化为整型函数可将027字符串类型转化为int类型,其为所属显示数据所属通道表的地址,通过该值可以索引到ADAM 数采通道。VAL为所属显示数据的种类,表示工程值,与其对应的其它种类还有HEX,表示原码类型。获取标准显示控件的通道类型后,通过多分枝选择语句,使用控件属性设置函数可分别设置相关控件显示值。

3.3 数据存储

本程序中采用ACCESS数据库存储数据,系统数据库存储数据源命名为“Record”,数据源文件配置成"Record.mdb"。LabWindow/CVI环境下,SQL Toolkit数据库的操作过程[6]如图5流程图所示。

图5 数据库操作过程

本节中,数据库的主要操作包括更新和存储记录。数据库的部分编程代码如下:

if(puSys->nDbf=DBConnect("DSN=Record"),

puSys->nDbf > 0) // 连接试验记录数据库

{

DBAllowFetchAnyDirection(puSys->nDbf,True);

// 定义数据库记录方向

hStmt=DBActivateSQL(puSys->nDbf,SELECT

* FROM 试验数据); // 连接数据记录结构项

for (kk=0;kknAiLogiNums;kk++) DBBindColDouble(hStmt,kk+1,&puAi->adLogi[kk],

&nSta[kk]); // 实行数据绑定

……

if(nCode=DBCreateRecord(hStmt),nCode==DB_SUCCESS) // 创建新的数据记录

{

DBPutRecord(hStmt);

// 写入当前数据记录

SetCtrlVal(puSys->nRoot,ROOT_numRecordNums,++puRec->nItemNums); // 显示当前记录数

}

else MessagePopup("提示信息","无法插入新的试验数据记录!");

}

else MessagePopup("提示信息","无法完成数据库连接,请立即退出程序!");

4 结束语

本文采用虚拟仪器LabWindows/CVI软件与ADAM-5000/TCP系统以及ADAM模块硬件设计了一套数据测试系统,在实际工作过程中,该测试系统实时性好,结构简单可靠,不受距离限制且易于扩充。其中,ADAM硬件模块精度高且具有较强的抗干扰能力,LabWindows/CV软件设计通用性好,相关软件编程模块作相应改动后可以应用于其它型号的试验器。该测试系统完全符合试验器的相关测试要求,测试效果好,非常适用于各型号的传动系统试验器的测试需要。

[1]研华科技.ADAM 4000和ADAM 5000 采集模块手册[Z].北京:研华科技出版社,2000.

[2]王建新,隋美丽.LabWindows/CVI虚拟仪器测试技术及工程应用[M].化学工业出版社,2013.

[3]LabWindows/CVI中的多线程技术[EB/OL].[2011-04-18].http://www.ni.com/white-paper/3663/zhs.html.

[4]Modicon Inc. Modicon Modbus通讯协议参考手册[M].北京:中国标准出版社,2005.

[5]李晖,邢广义. SQL Toolkit在LabWindows/CVI 中的应用研究[J].机电一体化,2005,(6):25-27,64.

[6]National Instruments. LabWindows User Manual[Z].National Instruments,2000.

Application of Virtual Instrument to Test of Transmission System Tester

Yu Jie, Gao Jun, Tang Jianhui, Zhang Jia

(AECC Hunan Aviation Powerplant Research Institute, Zhuzhou 412002, Hunan, China)

In order to meet the test requirements of high-precision of the testing system for various types of helicopter transmission system tester, a general testing system based on LabWindows/CVI and ADAM-5000/TCP is designed. The composition of the testing system is introduced in the paper, and the multi-thread of LabWindows/CVI, dynamic link library, database technology are used to achieve the data acquisition, data processing, data storage and other functions. In the practical operation, the system has the characteristics of strong extensibility, nice commonality, reliable stabilization, and high real-time performance, and has achieved good testing results.

LabWindows/CVI; ADAM-5000/TCP; testing system

2016-09-05

喻 杰(1985-),男,研究生学历,工程师,主要研究方向为电气控制与测试。

航空基金(2012zb08004)。

TH87

B

10.3969/j.issn.1674-3407.2016.04.014

猜你喜欢

模拟量控件线程
基于C#线程实验探究
基于.net的用户定义验证控件的应用分析
基于国产化环境的线程池模型研究与实现
基于信号集中监测的轨道电路模拟量报警分析
关于.net控件数组的探讨
浅谈linux多线程协作
关于600MW火电机组模拟量控制系统设计和研究
一种通用模拟量及开关量信号采集板卡的设计
基于S7-200PLC 模拟量扩展模块使用问题的研究
基于嵌入式MINIGUI控件子类化技术的深入研究与应用