喻 杰,高 俊,湯建暉,張 佳
(中國航發(fā)湖南動力機械研究所,湖南 株洲 412002)
虛擬儀器在傳動系統(tǒng)試驗器測試中的應(yīng)用
喻 杰,高 俊,湯建暉,張 佳
(中國航發(fā)湖南動力機械研究所,湖南 株洲 412002)
為了滿足各型號的直升機傳動系統(tǒng)試驗器高精度的測試要求,設(shè)計了基于虛擬儀器LabWindows/CVI與ADAM-5000/TCP的通用化測試系統(tǒng),闡述了該測試系統(tǒng)的組成。運用LabWindows/CVI的多線程、動態(tài)鏈接庫、數(shù)據(jù)庫設(shè)計等技術(shù),實現(xiàn)了數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)記錄存儲等功能。該系統(tǒng)具有擴展性強、通用性好、穩(wěn)定可靠、實時性好的特點,取得了較好的測試效果。
LabWindows/CVI;ADAM-5000/TCP;測試系統(tǒng)
數(shù)據(jù)測試是直升機傳動系統(tǒng)研制過程中非常重要的一環(huán),為分析和監(jiān)測各型號的直升機傳動系統(tǒng)提供了必要、可靠的前提和基礎(chǔ)。本文以某傳動系統(tǒng)主減速器中的行星齒輪系試驗器為例,設(shè)計了一套以LabWindow/CVI為上位機測試軟件、以ADAM-5000/TCP為下位機采集模塊的測試系統(tǒng),實現(xiàn)了數(shù)據(jù)采集以及實時、歷史數(shù)據(jù)處理,該測試系統(tǒng)同樣適用于其它各型號的傳動系統(tǒng)試驗器。
本系統(tǒng)由分布于試驗現(xiàn)場的各類傳感器(如壓力、流量、溫度、金屬沫、油濾堵塞等傳感器及振動傳感器)、電荷放大器、ADAM5000/TCP、電氣操縱間的工業(yè)交換機、計算機以及監(jiān)控軟件構(gòu)成,系統(tǒng)框圖如圖1所示。其中,ADAM5000/TCP是以以太網(wǎng)為基礎(chǔ)的I/O系統(tǒng),有背板和插槽,可配用不同的模擬量以及數(shù)字量模塊[1]。ADAM系統(tǒng)1內(nèi)有5個模擬量輸入模塊5017和1個數(shù)字量輸入模塊5051,ADAM系統(tǒng)2內(nèi)有4個熱電偶信號輸入模塊5018和4個熱電阻信號輸入模塊5013。
圖1 系統(tǒng)框圖
本測試軟件基于NI公司的LabWindow/CVI語言編寫,其以ANSIC為核心,具有強大的圖形界面設(shè)計功能,為用戶提供了交互式的編程方法和豐富的庫函數(shù)[2]。該測試軟件實現(xiàn)流程如下:電氣操縱間的監(jiān)測計算機通過以太網(wǎng)與ADAM5000/TCP系統(tǒng)通信,并且運行LabWindow/CVI軟件,不斷地向ADAM系統(tǒng)傳遞指令。ADAM系統(tǒng)根據(jù)指令將采集到的現(xiàn)場傳感器的信號發(fā)送給監(jiān)測計算機,由LabWindow/CVI軟件完成對現(xiàn)場信號的處理后,通過對各類型的顯示控件進行賦值設(shè)置給用戶提供一個實時的監(jiān)測界面,并將數(shù)據(jù)存儲在數(shù)據(jù)庫中供以后查詢。系統(tǒng)同時提供報警功能,如試驗件振動超限時,界面有報警信息顯示。
由于該測試系統(tǒng)屬于多任務(wù)系統(tǒng),為了優(yōu)化系統(tǒng)的性能,采用多線程技術(shù)[3],根據(jù)功能實現(xiàn)要求設(shè)計4個線程。第1個為主線程,是用戶交互線程,主要完成各項初始化操作以及提供與用戶交互的界面,根據(jù)用戶的命令調(diào)用各個線程模塊完成相應(yīng)的功能。第2個為數(shù)據(jù)采集線程,用于后臺采集數(shù)據(jù)。第3個為數(shù)據(jù)處理線程,專門用于處理采集到的試驗數(shù)據(jù)和顯示試車數(shù)據(jù)和狀態(tài)。第4個為數(shù)據(jù)記錄線程,用于數(shù)據(jù)記錄存儲。現(xiàn)在著重介紹后3個線程是如何實現(xiàn)的。
3.1 數(shù)據(jù)采集
LabWindow/CVI通過調(diào)用ADAM5000/TCP生產(chǎn)廠家研華公司為其提供的動態(tài)鏈接庫ADAMTCP.DLL中的函數(shù),來實現(xiàn)對ADAM模塊的各種操作。要在LabWindow/CVI環(huán)境下使用ADAMTCP.DLL,需要在源文件中將頭文件ADAMTCP.h加入,并且將ADAMTCP.lib庫文件加入工程項目中,同時要將頭文件、庫文件和動態(tài)鏈接庫文件拷貝到工程目錄內(nèi)。由于本測試系統(tǒng)采集的信號大部分為模擬量信號,因此著重講述實現(xiàn)模擬量數(shù)據(jù)的采集過程。使用函數(shù)“ADAMTCP_ReadReg ()”可以實現(xiàn)模擬量的采集,該函數(shù)的功能是接收模塊的模擬量數(shù)據(jù),調(diào)用該函數(shù)的程序流程如圖2所示。
圖2 模擬量數(shù)據(jù)讀取程序流程圖
該函數(shù)的原型如下:
int ADAMTCP_ReadReg(char szIP[], WORD wIDAddr, WORD wStartAddress, WORD wCount, WORD wData []);
其中,szIP[]為待連接ADAM系統(tǒng)的IP地址,wIDAddr為Modbus/TCP的設(shè)備編號,常設(shè)置為1,wStartAddress為將被讀的起始地址,wCount為將被讀的地址長度,wData用于存儲讀到的值,wData為數(shù)組名,采集到的數(shù)據(jù)最終存儲在該數(shù)組內(nèi)。根據(jù)Moudbus/TCP協(xié)議[4],虛擬儀器LabWindow/CVI通過以太網(wǎng)與ADAM5000/TCP通信,ADAM5000/TCP支持的Moudbus地址表如表1所示。
表1 Moudbus地址表
在本測試系統(tǒng)中,ADAM系統(tǒng)1的SLOT0~SLOT4為8通道模擬量輸入模塊ADAM5017。根據(jù)表1中的地址表規(guī)則,將模擬量讀取函數(shù)中參數(shù)賦值后,guSys.nCodeAi1=ADAMTCP_ReadReg(ADAM_IP1,1,1,40,awData);其中,guSys為預(yù)先定義的系統(tǒng)運行參數(shù)結(jié)構(gòu)體,nCodeAi1為該結(jié)構(gòu)體中的成員變量,若該函數(shù)成功調(diào)用,則其返回值0,ADAM_IP1為ADAM系統(tǒng)1的IP地址的宏定義,通過該條語句,awData[0]~awData[39]被賦值為ADAM系統(tǒng)1中SLOT0~SLOT4中各通道的輸入值。SLOT5為16通道數(shù)字量輸入模塊ADAM5051,通過使用函數(shù)"ADAMTCP_ReadCoil ()"以實現(xiàn)數(shù)字量的采集,對該函數(shù)的各參數(shù)賦值以后,guSys.nCodeDi1=ADAMTCP_ReadCoil(ADAM_IP1,1,81,16,abData)。采用同樣的協(xié)議規(guī)則進行軟件編程操作,通過調(diào)用相對應(yīng)的函數(shù)亦可完成ADAM系統(tǒng)2中熱電阻信號和熱電偶信號的采集。
3.2 數(shù)據(jù)處理
通過數(shù)據(jù)采集得到的是數(shù)字原碼值,對于模擬量輸入信號而言,還需要通過相應(yīng)的線性變化,將信號轉(zhuǎn)化為可用于顯示的物理量值,其運算對應(yīng)關(guān)系為:
測量值=工程下限+(工程上限-工程下限)×(原碼值-原碼下限)/(原碼上限-原碼下限)
其中,工程上下限為物理測量傳感器的上下限,ADAM數(shù)據(jù)采集設(shè)備中,原碼上下限為0~65535,運算得到測量值后,根據(jù)實際情況還需要對該物理測量值進行相應(yīng)的靈敏度變換,以及正向或負向修正,最終轉(zhuǎn)化為邏輯通道值,存放在事先定義的模擬量輸入結(jié)構(gòu)體成員中的邏輯通道數(shù)組內(nèi)。以上描述的模擬量輸入的通道名稱,工程單位,測量通道上下限,傳感器上下限,傳感器靈敏度,正向、負向參數(shù)以及故障上下限等值均保存在命名為“config.mdb”的數(shù)據(jù)庫配置文件中的模擬量邏輯通道表內(nèi),如圖3所示。
圖3 模擬量輸入邏輯通道表
若要實現(xiàn)對以上配置數(shù)據(jù)源文件“config.mdb”的訪問,在LabWindow/CVI環(huán)境下,必須安裝CVI SQL Toolkit工具包[5],安裝完該工具包后,用戶便可以使用ODBC(Open Database Connectivity開放式數(shù)據(jù)庫互聯(lián))數(shù)據(jù)源來實現(xiàn)數(shù)據(jù)庫與LabWindows/CVI測試軟件程序之間的連接,并且利用SQL語句訪問由ACCESS制造的數(shù)據(jù)庫了。
模擬量輸入邏輯通道菜單界面如圖4所示,模擬量輸入的各種參數(shù)既可以在圖3內(nèi)修改,也可在圖4界面內(nèi)修改,下面著重介紹后者的實現(xiàn)過程。
圖4 模擬量輸入邏輯通道菜單界面
在該用戶界面內(nèi)左側(cè)插入的是列表框控件,列表框是以標題和數(shù)值對的形式保存的,該控件顯示的是該列表框的各條目的標題,通過對數(shù)據(jù)庫的編程操作,本列表框的標題被設(shè)置成數(shù)據(jù)源文件config.mdb中模擬量輸入邏輯通道表第一列的各通道的名稱,在用戶界面內(nèi),當列表框中的任一條目被選中時,其數(shù)值被設(shè)置成模擬量輸入邏輯通道表的行值,表中同一行的其它參數(shù)也在界面內(nèi)被對應(yīng)的數(shù)值控件同步讀取。
圖中,用戶界面右側(cè)上方標題為索引的控件是下拉列表控件,該控件的各項目標題被設(shè)置成config.mdb中模擬量輸入物理通道表的通道的名稱,其包含了實際的ADAM數(shù)據(jù)采集模塊的通道代號,控件的數(shù)值被設(shè)置成模擬量輸入物理通道表的行值,同時將該值和模擬量輸入邏輯通道表中的索引值相對應(yīng),并且將該索引值作為數(shù)據(jù)采集模塊中的存儲數(shù)組以及最終轉(zhuǎn)化的邏輯通道數(shù)組的常量表達式,故通過改變該索引值,就可以改變ADAM數(shù)據(jù)采集模塊的通道。
上文中得到的邏輯通道數(shù)組內(nèi)的值一路用于進行相應(yīng)的故障狀態(tài)檢測,將該值與預(yù)設(shè)的報警和故障上下限進行比較,若不在正常范圍內(nèi),則顯示故障信息;一路用于數(shù)據(jù)顯示,表征試車狀態(tài)和信息,將需要標準顯示的控件的常量名先設(shè)置成形如AI_NUM_027_VAL的形式,通過編程遍歷用戶圖形界面的所有的面板及其子面板,尋找滿足該命名規(guī)則的控件。通過字符串分解函數(shù),可以將各個下劃線之間的字符串進行分解。AI字符串為所屬控件的顯示類型,表示模擬量輸入通道標示。與其對應(yīng)的類型還有DI,為數(shù)字量輸入通道標示。NUM為所屬控件的表達方式,為數(shù)值表達方式,與其對應(yīng)的控件的其它表達方式為GAU、LED,分別表示儀表類和指示燈類顯示標志,通過字符串轉(zhuǎn)化為整型函數(shù)可將027字符串類型轉(zhuǎn)化為int類型,其為所屬顯示數(shù)據(jù)所屬通道表的地址,通過該值可以索引到ADAM 數(shù)采通道。VAL為所屬顯示數(shù)據(jù)的種類,表示工程值,與其對應(yīng)的其它種類還有HEX,表示原碼類型。獲取標準顯示控件的通道類型后,通過多分枝選擇語句,使用控件屬性設(shè)置函數(shù)可分別設(shè)置相關(guān)控件顯示值。
3.3 數(shù)據(jù)存儲
本程序中采用ACCESS數(shù)據(jù)庫存儲數(shù)據(jù),系統(tǒng)數(shù)據(jù)庫存儲數(shù)據(jù)源命名為“Record”,數(shù)據(jù)源文件配置成"Record.mdb"。LabWindow/CVI環(huán)境下,SQL Toolkit數(shù)據(jù)庫的操作過程[6]如圖5流程圖所示。
圖5 數(shù)據(jù)庫操作過程
本節(jié)中,數(shù)據(jù)庫的主要操作包括更新和存儲記錄。數(shù)據(jù)庫的部分編程代碼如下:
if(puSys->nDbf=DBConnect("DSN=Record"),
puSys->nDbf > 0) // 連接試驗記錄數(shù)據(jù)庫
{
DBAllowFetchAnyDirection(puSys->nDbf,True);
// 定義數(shù)據(jù)庫記錄方向
hStmt=DBActivateSQL(puSys->nDbf,SELECT
* FROM 試驗數(shù)據(jù)); // 連接數(shù)據(jù)記錄結(jié)構(gòu)項
for (kk=0;kk
&nSta[kk]); // 實行數(shù)據(jù)綁定
……
if(nCode=DBCreateRecord(hStmt),nCode==DB_SUCCESS) // 創(chuàng)建新的數(shù)據(jù)記錄
{
DBPutRecord(hStmt);
// 寫入當前數(shù)據(jù)記錄
SetCtrlVal(puSys->nRoot,ROOT_numRecordNums,++puRec->nItemNums); // 顯示當前記錄數(shù)
}
else MessagePopup("提示信息","無法插入新的試驗數(shù)據(jù)記錄!");
}
else MessagePopup("提示信息","無法完成數(shù)據(jù)庫連接,請立即退出程序!");
本文采用虛擬儀器LabWindows/CVI軟件與ADAM-5000/TCP系統(tǒng)以及ADAM模塊硬件設(shè)計了一套數(shù)據(jù)測試系統(tǒng),在實際工作過程中,該測試系統(tǒng)實時性好,結(jié)構(gòu)簡單可靠,不受距離限制且易于擴充。其中,ADAM硬件模塊精度高且具有較強的抗干擾能力,LabWindows/CV軟件設(shè)計通用性好,相關(guān)軟件編程模塊作相應(yīng)改動后可以應(yīng)用于其它型號的試驗器。該測試系統(tǒng)完全符合試驗器的相關(guān)測試要求,測試效果好,非常適用于各型號的傳動系統(tǒng)試驗器的測試需要。
[1]研華科技.ADAM 4000和ADAM 5000 采集模塊手冊[Z].北京:研華科技出版社,2000.
[2]王建新,隋美麗.LabWindows/CVI虛擬儀器測試技術(shù)及工程應(yīng)用[M].化學工業(yè)出版社,2013.
[3]LabWindows/CVI中的多線程技術(shù)[EB/OL].[2011-04-18].http://www.ni.com/white-paper/3663/zhs.html.
[4]Modicon Inc. Modicon Modbus通訊協(xié)議參考手冊[M].北京:中國標準出版社,2005.
[5]李暉,邢廣義. SQL Toolkit在LabWindows/CVI 中的應(yīng)用研究[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