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