古 平,石小江,彭仁強(qiáng)
(中國燃?xì)鉁u輪研究院,四川 江油 621703)
測試系統(tǒng)最主要的功能是采集被測對(duì)象的被測參數(shù)[1]。以往的測試程序,往往把所有的測試參數(shù)、儀器程控指令、測試結(jié)果和分析處理結(jié)果都放在測試系統(tǒng)軟件主體(平臺(tái))中,而測試系統(tǒng)由于所選硬件配置的不同,相應(yīng)驅(qū)動(dòng)程序就各不一樣,一旦硬件有所變化,就必須更改測試系統(tǒng)軟件主體(平臺(tái)),否則測試系統(tǒng)就不能正常運(yùn)行,這樣就造成測試系統(tǒng)的靈活性、易用性、可靠性、可維護(hù)性、可擴(kuò)充性、可移植性很差。若能把不同的驅(qū)動(dòng)程序按其功能劃分,定義統(tǒng)一的接口,使其功能模塊化、插件化,組成通用插件庫,那么在測試系統(tǒng)集成應(yīng)用時(shí),就可根據(jù)所選硬件類型調(diào)用相應(yīng)的驅(qū)動(dòng)程序插件,做到即插即用,使測試系統(tǒng)軟件主體(平臺(tái))更加規(guī)范、靈活,同時(shí)也將大大縮短軟件開發(fā)時(shí)間,便于后期的軟件維護(hù)。
測試系統(tǒng)硬件驅(qū)動(dòng)插件是連接軟、硬件和獲得前端采集信號(hào)的橋梁,要構(gòu)建通用的、可靈活配置的、模塊化的硬件驅(qū)動(dòng)插件程序,就應(yīng)該具有一個(gè)開放式的結(jié)構(gòu)和標(biāo)準(zhǔn)接口,同時(shí)還要考慮系統(tǒng)功能的可擴(kuò)充性和技術(shù)的可延續(xù)性。作為一個(gè)完備的硬件驅(qū)動(dòng)插件架構(gòu)體系設(shè)計(jì),不僅要包括硬件驅(qū)動(dòng)插件的設(shè)計(jì),還應(yīng)該包括測試系統(tǒng)平臺(tái)的設(shè)計(jì)。平臺(tái)的功能通常包括測試系統(tǒng)軟件的核心功能和硬件驅(qū)動(dòng)插件的處理功能,而硬件驅(qū)動(dòng)插件通常是用來對(duì)測試系統(tǒng)使用到的硬件采集功能,按照定義的標(biāo)準(zhǔn)接口進(jìn)行封裝,然后集中管理。平臺(tái)需要通過插件接口調(diào)用插件所實(shí)現(xiàn)的采集功能,讀取前端的采集信號(hào)等。本文僅對(duì)硬件驅(qū)動(dòng)插件機(jī)制進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),硬件和測試系統(tǒng)平臺(tái)軟件都不在此討論。硬件驅(qū)動(dòng)插件和整個(gè)測試系統(tǒng)的關(guān)系如圖1所示。
硬件驅(qū)動(dòng)是控制測試儀器I/O接口及其相關(guān)功能的規(guī)范,是計(jì)算機(jī)與儀器之間的軟件層連接,一般由設(shè)備廠商提供給用戶,是一套可調(diào)用的函數(shù)或指令集,實(shí)現(xiàn)對(duì)測試儀器的程序控制,完成對(duì)某一特定測試儀器的控制和通訊。每個(gè)測試儀器都有相應(yīng)的驅(qū)動(dòng)程序或通訊協(xié)議。通過在廠商提供的驅(qū)動(dòng)程序或通訊協(xié)議的基礎(chǔ)上進(jìn)行開發(fā)和封裝,將插件程序需要開放的屬性、方法、實(shí)現(xiàn)等定義出來,制定統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)和通訊協(xié)議,通過接口的方式提供給平臺(tái)程序使用。驅(qū)動(dòng)程序的插件庫根據(jù)硬件類型必須是可加載、修改和擴(kuò)展的。若用戶購置了新的硬件測試設(shè)備(儀器),而硬件驅(qū)動(dòng)庫中沒有對(duì)應(yīng)的驅(qū)動(dòng)程序,可按照系統(tǒng)制定的統(tǒng)一數(shù)據(jù)結(jié)構(gòu)和通訊協(xié)議,開發(fā)對(duì)應(yīng)的新硬件驅(qū)動(dòng)插件,然后再將驅(qū)動(dòng)插件加載到系統(tǒng)插件庫并保存,即可供用戶使用。開發(fā)和加載驅(qū)動(dòng)插件過程如圖2所示。
圖1 測試系統(tǒng)總體結(jié)構(gòu)圖Fig.1 The structure of measurement system
驅(qū)動(dòng)插件加載實(shí)例如圖3所示,圖中“驅(qū)動(dòng)動(dòng)態(tài)庫”是二次開發(fā)封裝的插件庫,“相關(guān)文件”就是硬件供應(yīng)商提供的驅(qū)動(dòng)庫文件。
圖2 驅(qū)動(dòng)插件加載過程Fig.2 The loading process of the plug-in of driver
圖3 驅(qū)動(dòng)插件加載實(shí)例Fig.3 The loading instance of the plug-in of driver
要做到通用,就必須具備統(tǒng)一的規(guī)范和標(biāo)準(zhǔn),并且在開發(fā)硬件驅(qū)動(dòng)插件程序時(shí)嚴(yán)格遵守。
不同的設(shè)備應(yīng)有不同的設(shè)備ID,以區(qū)分不同的設(shè)備類型(如 DSA、華太 VXI、縱橫 VXI等),不同設(shè)備要有各自的設(shè)備名稱、該設(shè)備所包含的所有采集板卡類型、以及實(shí)際擁有的板卡類型數(shù)。同樣,每一種硬件板卡類型都應(yīng)有一個(gè)唯一區(qū)別的ID,以區(qū)分不同的板卡類型;每種采集板卡對(duì)應(yīng)的采集通道數(shù)固定。根據(jù)設(shè)備ID和采集板卡ID,系統(tǒng)即可確定采用何種驅(qū)動(dòng)程序來向指定的硬件發(fā)指令,用戶則可得到指定設(shè)備中指定采集板卡的通道數(shù)和各通道的采集數(shù)據(jù)。采集設(shè)備及板卡的數(shù)據(jù)結(jié)構(gòu)層次見圖4。
圖4 采集設(shè)備及板卡數(shù)據(jù)結(jié)構(gòu)層次Fig.4 The data structure tree of acquiring device and card
下面給出部分統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)內(nèi)容項(xiàng)并加以概要說明(C++語言):
typedef struct{
int nCardID; //板卡類型代碼
char ame[24]; //板卡類型名稱
int nChNums; //板卡類型通道數(shù)
}CARDTYPE; //硬件板卡類型結(jié)構(gòu)
typedef struct{
int nDeviceID; //設(shè)備代碼
char DeviceName[24];//設(shè)備名稱
int nCardTypeNums;//設(shè)備板卡類型數(shù)
CARDTYPE CardType[CARD_TYPE_NUMS];
//板卡類型
}DEVICEINFO; //硬件設(shè)備信息結(jié)構(gòu)
用戶應(yīng)用時(shí),根據(jù)設(shè)備采集系統(tǒng)硬件配置類型,從驅(qū)動(dòng)程序插件庫中選擇與之對(duì)應(yīng)的插件,并設(shè)置相應(yīng)的屬性,即完成硬件驅(qū)動(dòng)配置。系統(tǒng)通過硬件驅(qū)動(dòng)插件訪問設(shè)備的驅(qū)動(dòng)程序,向硬件設(shè)備(儀器)發(fā)出一系列指令,就可得到對(duì)應(yīng)硬件設(shè)備(儀器)的采集數(shù)據(jù)。若硬件類型發(fā)生改變,只需改變硬件驅(qū)動(dòng)配置即可,用戶不必修改平臺(tái)軟件的源程序就能實(shí)現(xiàn)硬件設(shè)備(儀器)的即插即用。應(yīng)用示例見圖5。
圖5 硬件配置應(yīng)用示例Fig.5 The applied demonstration of hardware configuration
圖5 中,左邊為硬件驅(qū)動(dòng)模塊插件庫列表,列出了已加載硬件驅(qū)動(dòng)插件類型;右邊為已配置完成的驅(qū)動(dòng)模塊程序插件組合。如某一測試系統(tǒng)的硬件由VXI、DSA和PSI組成,其中VXI由一塊16015S卡和一塊JV53124卡組成;DSA由一個(gè)3017模塊組成;PSI由一個(gè)9816模塊組成。用戶在配置測試系統(tǒng)硬件時(shí),只需在左邊驅(qū)動(dòng)程序插件庫中選擇與之對(duì)應(yīng)的插件,放入右邊的列表中,并設(shè)置相應(yīng)的屬性即可完成驅(qū)動(dòng)配置。插件屬性設(shè)置實(shí)例見圖6。
圖6 插件屬性設(shè)置實(shí)例Fig.6 The setup instance of the property of plug-in
用戶分別設(shè)置采集卡所在的設(shè)備編號(hào)(機(jī)箱號(hào))、采集卡在指定設(shè)備中的位置(槽號(hào))、采集數(shù)據(jù)的平均遍數(shù)、采樣率、通道類型、增益、量程等參數(shù),確定后,系統(tǒng)將保存用戶的設(shè)置,并按用戶的設(shè)置對(duì)硬件設(shè)備進(jìn)行初始化,完成硬件系統(tǒng)準(zhǔn)備工作。
在完成硬件驅(qū)動(dòng)配置后,系統(tǒng)根據(jù)其配置的各采集卡的通道數(shù),自動(dòng)生成一有序的物理通道掃描表,用戶可根據(jù)此表選擇本次試驗(yàn)中用到的物理通道,按用戶習(xí)慣排列組合成一適應(yīng)用戶習(xí)慣的邏輯通道表,當(dāng)然,也可以選擇其硬件配置中所有物理通道。在此邏輯通道表中,用戶還可定義一些其它的非物理通道的參數(shù),如性能計(jì)算通道,邏輯通道表數(shù)據(jù)結(jié)構(gòu)部分內(nèi)容項(xiàng)如下:
typedef struct{
……
short PhyNo; //物理通道編號(hào)
short PrgGain; //程控增益
shortEuTabNo; //工程單位轉(zhuǎn)換類型
char PhyAddr[40]; //物理通道標(biāo)示
A-aa-bb-xx
char ChName[32]; //通道名稱[英文符號(hào)]
char ChName_Std[16];//發(fā)動(dòng)機(jī)標(biāo)準(zhǔn)名稱
char EngUnit[16]; //工程單位
char Range[16]; //信號(hào)量程
char LineNum[16]; //管線號(hào)
char SensorNum[16];//傳感器編號(hào)
char Remark[40]; //通道注釋
}CHANNELDEFINE; //通道定義信息表
其中,與硬件設(shè)備密切相關(guān)項(xiàng)是“物理通道標(biāo)示(PhyAddr)”,它標(biāo)示該邏輯通道項(xiàng)與實(shí)際硬件設(shè)備通道的聯(lián)系,包含有與硬件相關(guān)的物理信息,用于硬件系統(tǒng)識(shí)別,也是區(qū)分非物理通道的標(biāo)示。系統(tǒng)運(yùn)行時(shí),通過“物理通道標(biāo)示(PhyAddr)”獲得硬件系統(tǒng)對(duì)應(yīng)通道的信號(hào)數(shù)據(jù)。圖7是編輯完成的部分邏輯通道表格式實(shí)例。圖中1~4項(xiàng)為物理通道,5、6項(xiàng)為計(jì)算通道(計(jì)算通道中的數(shù)據(jù)由系統(tǒng)通過一系列計(jì)算后得到,計(jì)算中一般都要用到一些物理通道中的數(shù)據(jù))。
圖7 部分邏輯通道表格式實(shí)例Fig.7 Part of the format instance of logic channels
測試系統(tǒng)平臺(tái)軟件在運(yùn)行時(shí),首先根據(jù)裝入的通道表對(duì)物理通道進(jìn)行采集設(shè)備及板卡分類,然后根據(jù)不同的采集設(shè)備和板卡,從系統(tǒng)驅(qū)動(dòng)插件庫中裝入對(duì)應(yīng)的驅(qū)動(dòng)插件,并執(zhí)行采集設(shè)備初始化。數(shù)據(jù)采集開始后,平臺(tái)軟件只需根據(jù)不同的采集設(shè)備和板卡調(diào)用驅(qū)動(dòng)插件采集接口執(zhí)行數(shù)據(jù)采集即可。整個(gè)測試系統(tǒng)插件調(diào)用流程如圖8所示。
本文設(shè)計(jì)并實(shí)現(xiàn)了一種測試系統(tǒng)驅(qū)動(dòng)程序插件機(jī)制的實(shí)現(xiàn)方案,為測試系統(tǒng)驅(qū)動(dòng)插件標(biāo)準(zhǔn)化提供了一個(gè)參考;此方案可以進(jìn)一步擴(kuò)充,實(shí)現(xiàn)更為靈活的實(shí)現(xiàn)方案。
測試系統(tǒng)硬件驅(qū)動(dòng)的插件化使測試系統(tǒng)能夠做到通用化、模塊化、智能化、標(biāo)準(zhǔn)化,可徹底改變現(xiàn)有測試系統(tǒng)標(biāo)準(zhǔn)化程度低、功能單一、品種繁多、可維護(hù)性及保障性差的現(xiàn)狀。該設(shè)計(jì)現(xiàn)已在實(shí)際數(shù)據(jù)采集系統(tǒng)中得到推廣和應(yīng)用,實(shí)踐表明,采用硬件驅(qū)動(dòng)插件技術(shù)極大地提高了測試系統(tǒng)的開發(fā)效率,解決了測試系統(tǒng)的通用化問題。
圖8 測試系統(tǒng)插件調(diào)用流程圖Fig.8 The flow chart of plug-in in measurement system
[1]張寶誠.航空發(fā)動(dòng)機(jī)試驗(yàn)和測試技術(shù)[M].北京:航空航天大學(xué)出版社,2005.