- 相關(guān)推薦
關(guān)于使用多個同種VXI總線儀器的軟件設(shè)計
基于VXI總線虛擬儀器組建的測試系統(tǒng)作為測試領(lǐng)域里一個新的應(yīng)用方向,引起了我國兵器測試界的關(guān)注,并開發(fā)應(yīng)用了適合兵器行業(yè)的測試系統(tǒng)。本人在對基于VXI總線儀器組建的壓力測試系統(tǒng)進行開發(fā)的過程中,由于系統(tǒng)要求完成多信道壓力信號測試,故將使用到多個同種VXI功能模塊。在VXI測試系統(tǒng)中,每個功能模塊都相當于一個具有獨立面板的傳統(tǒng)儀器,若按該思想方法進行本測試系統(tǒng)應(yīng)用軟件設(shè)計,無疑將重復(fù)設(shè)計并使用同樣的儀器面板和源代碼,造l成軟件的冗長。而利用計算機軟件功能較好地解決了這個問題。
2 壓力測試系統(tǒng)硬件結(jié)構(gòu)
根據(jù)測試任務(wù)的需要,所需的儀器模塊為具有4路通道的電荷放大器模塊和數(shù)據(jù)采集模塊。系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。系統(tǒng)選擇了實現(xiàn)成本低,數(shù)據(jù)傳輸速率快,具有熱插拔和即插即用功能等優(yōu)點的IEEE-1394總線作為外掛控制計算機和VXI機箱的連接總線,相應(yīng)采用HPE8491B作為零槽控制器;主機箱選用測試方便的HP公司的C尺寸6槽高功率主機箱HP E1421B;外掛計算機選用P Ⅱ 266工業(yè)控制計算機;電荷放大器模塊是自主研制開發(fā)的2通道VXI總線寄存器基的高阻抗電荷放大器模塊,其增益連續(xù)可調(diào)并具有濾波功能;數(shù)采模塊選用HP公司的4通道、最高采樣速率為800kSa/s數(shù)字化儀HPE15644A,該模塊能夠滿足一般兵器壓力測試要求,不選用采樣頻率過高的數(shù)采模塊,避免引入高頻干擾。
3 壓力測試系統(tǒng)軟件結(jié)構(gòu)
VXI測試系統(tǒng)軟件開發(fā)所遵循的基本原則是VPP規(guī)范。其中,從通用性和零槽控制器工作環(huán)境要求考慮,操作系統(tǒng)選用32位操作系統(tǒng)Windows95,I/0庫選用HPVISA;數(shù)字化儀的儀器驅(qū)動程序選用商家HP公司提供的,電荷放大器則使用自行編制的符合VPP規(guī)范的儀器驅(qū)動程序;軟件開發(fā)平臺采用美國NI公司的面向儀器交互式C語言的LabWindows/CVI。測試系統(tǒng)軟件的設(shè)計主要集中在用戶界面設(shè)計和源代碼程序編寫兩方面。
3.1 用戶界面(系統(tǒng)多級虛擬面板)設(shè)計
按照功能模塊的應(yīng)用將虛擬面板劃分為一個測試系統(tǒng)主面極和電荷放大器設(shè)置面板、數(shù)字化儀設(shè)置面板兩個子面板。
在設(shè)計電荷放大器設(shè)置面板時,由于有兩塊同種功能的電荷放大器模塊,它們的面板完全相同,為避免用戶界面的重復(fù)設(shè)計以及源代碼程序的重復(fù)編寫,采用的辦法是:針對多個同種功能的VXI模塊,制造一個公用面板,當其中之一模塊被使用時,才享用該面板,不用時即釋放。具體到本壓力測試系統(tǒng),針對兩個功能相同只是邏輯地址不同的電荷放大器模塊,只設(shè)計一個公用的電荷放大器設(shè)置面板。當電荷放大器a或b被使用時,該公用面板即顯現(xiàn)為當前被使用模塊的用戶界面,完成對該模塊硬件的參數(shù)設(shè)置。
3.2 源代碼程序編寫
在此著重介紹如何通過源代碼的編寫來實現(xiàn)用戶界面設(shè)計中的解決思想。
(1)為公用面板上各控件的回調(diào)函數(shù)添加相應(yīng)的代碼。并定義了公用面板的面板句柄chargepanel和儀器通道句柄chargevi。
(2)在變量定義中定義一個結(jié)構(gòu)體數(shù)組:
struct system
{Visession handle;
int panel;
}device[2];
(3)在測試系統(tǒng)初始化過程中:
、俜胖霉秒姾煞糯笃髟O(shè)置面板CHARGE。
chargepanel=LoadPanel(0,“壓力測試系統(tǒng).uir”,CHARGE);
、趯⒐妹姘鍙(fù)制成面板名為VXI charge_1和VXIcharge_2,面板句柄為device[0].panel和device[1].panel兩塊面板,分別對應(yīng)電荷放大器模塊a和b。d
evice[0].panel=DuplicatePanel(0,chazgepane,“VXIcharge_1”,50,80);
device[1].panel=DuplicatePanel(0,chargepane,“VXIcharge_2”,50,80);
(4)在設(shè)置相應(yīng)VXI模塊參數(shù)時:
、俪跏蓟鄳(yīng)模塊(以電荷放大器模塊a為例)。
Charge_init(“VXI0::224::INSTR”,VI_FALSE,VI_FALSE,&device[0].handle);
②顯示相應(yīng)模塊的設(shè)置面板。
DisplayPanel(device[0].panel);
(5)在控制相應(yīng)模塊時(如復(fù)位、發(fā)送設(shè)置參數(shù)等):
①確定正在享用公用面板的模塊。
Panel=GetActivePanel( );
、趯⒃撃K的面板句柄及儀器通道句柄賦給公用面板中定義的面板句柄和儀器通道句柄。
for(i=0;i<2;i++)
{if(Panel=device[i].pane1)
{chazgepanel=device[i].panel;
chargevi=device[i].handle;
}}
當用戶激活面板上某一控件時,程序?qū)⑦\行(1)中對應(yīng)已寫好的回調(diào)函數(shù),從而實現(xiàn)對被激活模塊的操作。在系統(tǒng)應(yīng)用軟件編制完成后,進行了系統(tǒng)軟、硬件聯(lián)調(diào),并將動態(tài)壓力標定裝置接至該系統(tǒng)進行了實驗.圖2所示為同時采集到的四路壓力信號。
4 結(jié)束語
本文結(jié)合自行開發(fā)的多通道壓力測試系統(tǒng),利用計算機軟件功能解決了測試系統(tǒng)中使用多個同種VXI功能模塊的應(yīng)用軟件設(shè)計問題,并通過實驗表明此法的可行性和有效性。這對于組建其它VXI總線測試系統(tǒng)有一定的指導意義和借鑒作用,對于應(yīng)用軟件優(yōu)化設(shè)計提供了一點意見。