技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于虛擬儀器與VME總線的測(cè)試軟件設(shè)計(jì)

基于虛擬儀器與VME總線的測(cè)試軟件設(shè)計(jì)

時(shí)間:2009-01-05 09:48:37來(lái)源:ronggang

導(dǎo)語(yǔ):?該文利用虛擬儀器技術(shù)開(kāi)發(fā)了一套基于VME總線的測(cè)試軟件,已成功地應(yīng)用于北京正負(fù)電子對(duì)撞機(jī)的大型探測(cè)器北京譜儀III主漂移室電子學(xué)測(cè)試中
摘 要:該文利用虛擬儀器技術(shù)開(kāi)發(fā)了一套基于VME總線的測(cè)試軟件,已成功地應(yīng)用于北京正負(fù)電子對(duì)撞機(jī)的大型探測(cè)器北京譜儀III主漂移室電子學(xué)測(cè)試中。該軟件采用LabVIEW提供的動(dòng)態(tài)鏈接庫(kù)調(diào)用機(jī)制,通過(guò)調(diào)用在VC++中編譯生成的動(dòng)態(tài)鏈接庫(kù),完成了對(duì)底層VME總線上各功能板卡的訪問(wèn),從而實(shí)現(xiàn)了LabVIEW與非NI板卡之間的通信,為北京譜儀III主漂移室電子學(xué)測(cè)試系統(tǒng)提供了一套行之有效的測(cè)試軟件。 關(guān)鍵詞:虛擬儀器;VME總線; LabVIEW;動(dòng)態(tài)鏈接庫(kù) Abstract: This paper presents the design of Virtual Instrument technique based VMEbus, Which has been applied in BESIII Main Drift Chamber Electronics successfully. This design, developed in LabVIEW and VC++ 6.0, has realized the communication between LabVIEW and data acquisition card non-NI. LabVIEW and its DLL calling mechanism are introduced briefly. Testing functions of the software, as well as its user interfaces, are described in detail. Key words: Virtual Instruments; VMEbus;, LabVIEW; Dynamic Link Library 1 引言   美國(guó)NI公司提出的虛擬儀器概念,是對(duì)傳統(tǒng)儀器概念的重大突破。所謂虛擬儀器,是將傳統(tǒng)儀器硬件和計(jì)算機(jī)軟件技術(shù)充分結(jié)合起來(lái),以實(shí)現(xiàn)并擴(kuò)展傳統(tǒng)儀器的功能[1]。與傳統(tǒng)儀器相比,虛擬儀器在智能化程度、處理能力、性能價(jià)格比、可操作性等方面均有明顯的技術(shù)優(yōu)勢(shì)。同時(shí)VME總線是目前性能最好、應(yīng)用最廣的國(guó)際總線標(biāo)準(zhǔn)之一,因此,它與虛擬儀器的結(jié)合為自動(dòng)測(cè)試系統(tǒng)提供了一個(gè)更為廣闊的發(fā)展空間。 2 測(cè)試軟件在VME總線上的實(shí)現(xiàn)   本文在VME總線上使用虛擬儀器技術(shù),設(shè)計(jì)了一套行之有效的測(cè)試軟件,實(shí)現(xiàn)了對(duì)BESIII主漂移室電子學(xué)測(cè)試系統(tǒng)的硬件調(diào)試和性能檢測(cè)。   測(cè)試系統(tǒng)使用的SBS公司生產(chǎn)的VP7型嵌入式單板計(jì)算機(jī)是基于VME總線的6U主控制器。VP7集成了CPU、內(nèi)存、硬盤(pán)、顯示卡、USB接口、串口、并口、10/100M以太網(wǎng)卡接口,可以運(yùn)行Windows 2000/NT/98,VxWorks,Linux,MS-DOS等操作系統(tǒng),并且向Windows操作系統(tǒng)提供了一套UniSDK_NT工具包。UniSDK_NT工具包的核心部分是UniAPI接口函數(shù),采用標(biāo)準(zhǔn)C語(yǔ)言編寫(xiě)。UniAPI實(shí)現(xiàn)了對(duì)VME總線的訪問(wèn)和控制,本設(shè)計(jì)用到的接口函數(shù)主要有:   API_RESULT VmeMasterOpen(VME_MASTER_CHANNEL *pMasterChannel);   API_RESULT VmeMasterClose(VME_MASTER_CHANNEL *pMasterChannel);   API_RESULT VmeWrite32(VME_MASTER_CHANNEL MasterChannel, U32 VmeAddress, U32 Data);   U32 VmeRead32(VME_MASTER_CHANNEL MasterChannel, U32 VmeAddress, API_RESULT* pResult)   等等。   測(cè)試軟件采用Visual C++ 6.0作為調(diào)用VP7 API的開(kāi)發(fā)工具,對(duì)VME總線執(zhí)行讀、寫(xiě)操作以及響應(yīng)中斷,并生成動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library,DLL),供上層用戶(hù)程序調(diào)用。   由于需要實(shí)現(xiàn)參數(shù)設(shè)置、數(shù)據(jù)顯示等功能,希望在測(cè)試過(guò)程中像對(duì)真實(shí)儀器一樣對(duì)面板操作,測(cè)試軟件使用虛擬儀器軟件開(kāi)發(fā)平臺(tái)LabVIEW編寫(xiě)上層用戶(hù)程序。LabVIEW作為一種圖形化編程語(yǔ)言,它的一個(gè)極為方便之處就是提供了大量的和實(shí)際儀器控制面板類(lèi)似的圖形組件, 這使得界面編程極其簡(jiǎn)單, 并且在計(jì)算機(jī)上操作這些圖形界面和在現(xiàn)實(shí)中操作實(shí)際儀器幾乎完全一樣。但是LabVIEW在訪問(wèn)底層硬件,尤其是用戶(hù)自行設(shè)計(jì)的硬件方面,卻不如C語(yǔ)言功能強(qiáng)大。為此LabVIEW通過(guò)DLL、共享庫(kù)等途徑實(shí)現(xiàn)了與外部程序代碼相連接,將其自身無(wú)法或不易實(shí)現(xiàn)的任務(wù)通過(guò)能夠或更適于完成此類(lèi)任務(wù)的外部代碼來(lái)實(shí)現(xiàn)[2]。該軟件采用LabVIEW提供的動(dòng)態(tài)鏈接庫(kù)機(jī)制,通過(guò)調(diào)用VC++編譯生成的DLL,實(shí)現(xiàn)對(duì)底層各功能插件的訪問(wèn)。調(diào)用動(dòng)態(tài)鏈接庫(kù)機(jī)制是該測(cè)試軟件使用的關(guān)鍵技術(shù),具體用LabVIEW功能模板中的“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(Call Library Function Node,CLF)”實(shí)現(xiàn)。   實(shí)現(xiàn)方法如圖1所示。 [align=center] 圖1 測(cè)試軟件實(shí)現(xiàn)方法示意圖[/align]   2.1在VC++環(huán)境中使用VP7 API編寫(xiě)動(dòng)態(tài)鏈接庫(kù)   測(cè)試軟件使用VP7提供的UniSDK_NT中的接口函數(shù)編寫(xiě)和動(dòng)態(tài)鏈接庫(kù)的鏈接。DLL文件的生成過(guò)程如下:   1) 在菜單中選擇File\New\Project新建一個(gè)工程,工程名設(shè)為DAQdll;   2) 在工程列表中選擇Win32 Dynamic-Link Library;   3) 選擇存放目錄,這樣就創(chuàng)建了DAQdll.dll工程;   4) 在DAQdll工程中,選擇Add\Add New File,新建一個(gè)文件DAQdll.cpp;   5) 編輯DAQdll.cpp文件:   #include   ……   void GetWaveform(VME_MASTER_CHANNEL channel, int nModuleNum,   int nChannel, unsigned long waveform[])  ?。?   API_RESULT Api_Result;   ……   for(int i=0; i<63; i++)  ?。?   waveform[i] = VmeRead32(channel, chnAddr, &Api_Result) ;  ?。?   return 0;   }   ……   6) 在DAQdll工程中,選擇Add\Add New File,新建一個(gè)文件為DAQdll.def;   7) 編輯DAQdll.def文件:   LIBRARY DAQdll   EXPORTS   ;Explicit exports can go here   GetWaveForm @1   這些代碼描述了DLL的屬性。第一句給出DLL的名稱(chēng);第二句用EXPORTS語(yǔ)句列出導(dǎo)出函數(shù)列表;第三句是注釋語(yǔ)句;第四句是DLL中可被調(diào)用的函數(shù)名。   8) 編譯程序,就成功生成了DAQdll.dll動(dòng)態(tài)鏈接庫(kù)文件以供調(diào)用。   2.2 LabVIEW調(diào)用動(dòng)態(tài)鏈接庫(kù)   LabVIEW提供了4種調(diào)用外部程序代碼的途徑,其中動(dòng)態(tài)鏈接庫(kù)機(jī)制是LabVIEW調(diào)用標(biāo)準(zhǔn)共享庫(kù)和用戶(hù)自定義庫(kù)函數(shù)的通用方法。具體實(shí)現(xiàn)時(shí),是使用LabVIEW功能模板中“Advanced”子模板里的“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)(Call Library Function Node)”。本設(shè)計(jì)中中對(duì)此節(jié)點(diǎn)的配置如圖2所示。 [align=center] 圖2 調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)配置對(duì)話(huà)框[/align]   其中,需要配置的項(xiàng)目有:   1)在“Library Name or Path”選項(xiàng)中鍵入此節(jié)點(diǎn)所要鏈接的DLL路徑名D:\DAQdll;   2)在“Function Name”選項(xiàng)中鍵入DLL文件中將要調(diào)用的函數(shù)名GetWaveForm;   3)在“Calling Conventions”選項(xiàng)中選擇“C”,即所調(diào)用的庫(kù)為使用C語(yǔ)言自己創(chuàng)建的庫(kù);   4)在“Brouse”按鈕下方的選項(xiàng)中選擇“Run in UI Thread”,即該調(diào)用過(guò)程運(yùn)行在用戶(hù)接口線程中;   5)參數(shù)設(shè)置和返回值設(shè)置中,有三個(gè)選項(xiàng):參數(shù)名稱(chēng)(Parameter)、參數(shù)類(lèi)型(Type)和數(shù)據(jù)類(lèi)型(Data Type)。參數(shù)類(lèi)型和數(shù)據(jù)類(lèi)型設(shè)置成與被調(diào)用函數(shù)的類(lèi)型完全一致。第一個(gè)參數(shù)是被調(diào)用函數(shù)的返回值,單擊右側(cè)的Add Parameter After可以給函數(shù)添加輸入?yún)?shù)和輸出結(jié)果,每個(gè)參數(shù)都要設(shè)置自己的參數(shù)類(lèi)型和數(shù)據(jù)類(lèi)型。設(shè)置完成后,被調(diào)用的函數(shù)原型會(huì)顯示在“Function Prototype”框中。 3 測(cè)試軟件在實(shí)際中的應(yīng)用   本設(shè)計(jì)使用上述虛擬儀器技術(shù),實(shí)現(xiàn)了BESIII主漂移室電子學(xué)測(cè)試系統(tǒng)的軟件設(shè)計(jì),對(duì)測(cè)試系統(tǒng)進(jìn)行了數(shù)據(jù)的采集與顯示,完成了測(cè)試系統(tǒng)的波形重建功能,得到如圖3所示結(jié)果。使用此軟件時(shí),可以通過(guò)改變左邊的參數(shù),對(duì)輸入波形進(jìn)行調(diào)節(jié),調(diào)節(jié)的結(jié)果均能在虛擬儀器前面板中重建的波形上及時(shí)反映出來(lái)。對(duì)同一輸入波形,示波器觀測(cè)結(jié)果和在顯示器上虛擬儀器顯示的重建結(jié)果能夠很好地吻合。 [align=center] 圖3 波形重建虛擬儀器程序[/align] 4 結(jié)束語(yǔ)   虛擬儀器技術(shù)是計(jì)算機(jī)技術(shù)、軟件技術(shù)、電子技術(shù)的完美組合,其中軟件是虛擬儀器的核心。利用LabVIEW調(diào)用由VC++編譯的動(dòng)態(tài)鏈接庫(kù)機(jī)制,在VME總線上建立了一套實(shí)用、可靠的測(cè)試系統(tǒng),運(yùn)用在BESIII主漂移室電子學(xué)測(cè)試系統(tǒng)上,為系統(tǒng)提供了一種有效的測(cè)試方案,得到了良好的效果。 5 本文作者創(chuàng)新點(diǎn)   1)通過(guò)調(diào)用動(dòng)態(tài)鏈接庫(kù),在LabVIEW開(kāi)發(fā)環(huán)境中使用非NI板卡實(shí)現(xiàn)VME總線上的數(shù)據(jù)采集,可以降低開(kāi)發(fā)測(cè)試系統(tǒng)時(shí),用于購(gòu)置數(shù)據(jù)采集硬件的成本。   2)詳細(xì)介紹了在使用CFLN過(guò)程中的步驟和注意點(diǎn),提高了開(kāi)發(fā)者的程序調(diào)試成功率。 參考文獻(xiàn):   [1]. 薛得鳳.基于圖形化編程語(yǔ)言Labview的一種虛擬儀器的實(shí)現(xiàn)[J]. 自動(dòng)化與儀器儀表,2003年,109(5): 24~26   [2]. 吉順祥,劉旺鎖等.LabVIEW的外部代碼接口技術(shù)應(yīng)用[J]. 微計(jì)算機(jī)信息,2006年,11-1:205~207

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于LabVIEW的虛擬心電記錄系...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。