隨著科學(xué)技術(shù)的發(fā)展,特別是Pc機(jī)的普及,對(duì)測(cè)控系統(tǒng)的設(shè)計(jì)要求越來越高。在國(guó)際上應(yīng)用較廣泛的一種組建測(cè)控系統(tǒng)的方法是:采用“虛擬儀器”來取代傳統(tǒng)儀器.即利用數(shù)據(jù)采集卡、信號(hào)調(diào)理卡或其他計(jì)算機(jī)外圍硬件進(jìn)行信號(hào)的采集與檢測(cè),然后由計(jì)算機(jī)來實(shí)現(xiàn)對(duì)信號(hào)的處理、計(jì)算和分析以及測(cè)試結(jié)果的顯示。但是,由于虛擬儀器設(shè)計(jì)語言LabvIEw的專用性,它只支持NI公司的產(chǎn)品,非NI公司的產(chǎn)品不可以直接使用LabVIEw進(jìn)行開發(fā)。另外用VC,VB等文本編程語言開發(fā)測(cè)控系統(tǒng)用戶界面缺乏靈活性,這兩個(gè)主要方面導(dǎo)致虛擬儀器的應(yīng)用受到很大的限制。而且成本昂貴。本文研究目的就是尋求一種通用而且簡(jiǎn)單的方法使用LabVIEw開發(fā)環(huán)境.把非NI公司的產(chǎn)品(即這里所指的普通數(shù)據(jù)采集卡)與Labview的完美結(jié)合起來。實(shí)現(xiàn)基于虛擬儀器的測(cè)控系統(tǒng)的設(shè)計(jì)。 1、驅(qū)動(dòng)程序的設(shè)計(jì) 本文研究采用北京優(yōu)采公司生產(chǎn)的uA20lD數(shù)據(jù)采集卡作為底層硬件,與Pc機(jī)組成PC—DAQ方式的虛擬儀器。按照驅(qū)動(dòng)程序模型來分,可分為vxD(Vinual Device D而ver)式驅(qū)動(dòng)程序,KMD(Kemel Mode Driver)式驅(qū)動(dòng)程序以及wDM(Windows Driver Model)驅(qū)動(dòng)程序,本文設(shè)計(jì)的平臺(tái)是windowsxP,而且是在PCI總線的基礎(chǔ)上進(jìn)行設(shè)計(jì).根據(jù)三種模型的特點(diǎn)采用wDM驅(qū)動(dòng)程序是最理想的選擇。windows下驅(qū)動(dòng)程序開發(fā)語言通常采用兩種方式,匯編語言和C,C++語言,并且結(jié)合第三方公司提供的驅(qū)動(dòng)程序開發(fā)工具。目前使用最廣泛的是WinDriver和Driverstudio。本文設(shè)計(jì)中采用了Driverstudio中的DriverWorks。 首先利用DriverWorks的驅(qū)動(dòng)程序向?qū)В沈?qū)動(dòng)程序的基本框架,在生成框架過程中添加與設(shè)備緊密相關(guān)的信息。框架生成的詳細(xì)步驟:打開Vc,出現(xiàn)DriverStudio在vC中嵌入的工具欄:?jiǎn)螕舭粹oLaunch DriverWorks Driver wizard打開向?qū)У牡谝豁摚诘谝豁撝刑钊隩程名.以及在Pc機(jī)中的保存位置;在第二頁中,選擇wDM Driver;在第三頁中,選擇wDM功能驅(qū)動(dòng)程序;在第四頁中,在select Hardware Bus中選擇PcI,出現(xiàn)PCI總線的各種設(shè)置。設(shè)置PcI vander ID為O“348等等;在第五頁輸人驅(qū)動(dòng)程序類的類名和文件名。一般采用默認(rèn)設(shè)置;在第六頁中,主要是選擇驅(qū)動(dòng)程序處理的請(qǐng)求類型;在第七頁中,選擇IRP串行處理的類型和串行處理的函數(shù);在第八頁中,添加需要存儲(chǔ)在系統(tǒng)注冊(cè)表中的內(nèi)容。當(dāng)驅(qū)動(dòng)程序開始運(yùn)行,就將信息從注冊(cè)表中讀出,當(dāng)驅(qū)動(dòng)程序卸載后,就存入注冊(cè)表;在第九頁中,設(shè)置PcI設(shè)備類的信息;在第十頁中,要添加自定義的10crI’L.驅(qū)動(dòng)程序向?qū)?huì)自動(dòng)生成與之相對(duì)應(yīng)的派遣例程;在第十一頁,I)一verWorks可以為驅(qū)動(dòng)程序生成簡(jiǎn)單的應(yīng)用程序,用于調(diào)試驅(qū)動(dòng)程序;最后點(diǎn)擊Finish,一個(gè)驅(qū)動(dòng)程序的框架就完全產(chǎn)生.這也是一個(gè)完整的驅(qū)動(dòng)程序。但是無法實(shí)現(xiàn)任何功能,接下來要作的T作就是完善這個(gè)框架,也就編寫功能函數(shù),主要就是完成不同IRP的處理工作。其中包括兩個(gè)類,uA20lD和uA201DDevice,其中最主要的函數(shù)包括三個(gè),分別是:OnStartDevice、Devicecontrol和startIo。 驅(qū)動(dòng)程序的執(zhí)行過程包括兩個(gè)方面。一是驅(qū)動(dòng)程序的硬件資源的分配;二是驅(qū)動(dòng)程序控制硬件功能的實(shí)現(xiàn)。具體過程如圖1、圖2所示: 圖1 驅(qū)動(dòng)程序的資源的獲取與分配 圖2 驅(qū)動(dòng)程序控制硬件 2、動(dòng)態(tài)鏈接庫的設(shè)計(jì) 動(dòng)態(tài)鏈接庫(Dynamic Link Library,簡(jiǎn)稱DLL)是一個(gè)可執(zhí)行的windows程序的一種函數(shù)形式。本文設(shè)計(jì)的用戶界面程序是采用圖形化語言LabVIEW設(shè)計(jì)的,因此LabVIEW專門提供了兩個(gè)的節(jié)點(diǎn)函數(shù)CIN(code Interface Mode)和CLFN(call library Function Mode)來處理與C語言的接口問題,而對(duì)于不熟悉LabVIEw的人員來說很難開發(fā)cIN的程序。而且經(jīng)過大量的實(shí)驗(yàn)證明采用CLFN。即編寫動(dòng)態(tài)鏈接庫是最理想的選擇。 在本文研究中,根據(jù)功能的不同把動(dòng)態(tài)鏈接庫的設(shè)計(jì)劃分為打開和關(guān)閉設(shè)備、數(shù)據(jù)采集、模擬輸出、數(shù)字I/0和定時(shí),計(jì)數(shù)四大模塊。首先,用戶界面調(diào)用動(dòng)態(tài)鏈接庫*能函數(shù),傳遞控制參數(shù)和數(shù)據(jù)。然后,功能函數(shù)根據(jù)參數(shù)不同,在調(diào)用具體的函數(shù),具體函數(shù)把傳遞來的參數(shù)經(jīng)過處理,調(diào)用DeviceIoControl向驅(qū)動(dòng)程序發(fā)送參數(shù).并從驅(qū)動(dòng)程序中獲得用戶界面需要的數(shù)據(jù),數(shù)據(jù)經(jīng)過處理后傳遞給功能函數(shù)。最后,功能函數(shù)把數(shù)據(jù)返回用戶界面。 3、用戶界面設(shè)計(jì) 本文設(shè)計(jì)是在Pc機(jī)上采用虛擬儀器技術(shù)設(shè)計(jì)完成的,與設(shè)計(jì)傳統(tǒng)儀器的操作控制面板完全不同。LabvIEw之所以會(huì)受到虛擬儀器設(shè)計(jì)者的青睞.很重要的原因就是因?yàn)樗梢栽诤芏痰臅r(shí)間里開發(fā)出很完美的控制與顯示面板,這些仿真的控件是其他編程語言所無法比擬的。控制界面的設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì),一一是控制面板的設(shè)計(jì),另一個(gè)是后臺(tái)流程圖的設(shè)計(jì)。采集數(shù)據(jù)的處理與顯示、模擬量的輸出、數(shù)字量的輸出與輸人以及定時(shí)/技術(shù)功能等工作都是通過編寫軟件來實(shí)現(xiàn)。這正體現(xiàn)了虛擬儀器的“軟件就是儀器”的設(shè)計(jì)思想。對(duì)于普通用戶來說,采用圖形化編成語言LabVIEW應(yīng)該是設(shè)計(jì)控制界面的最佳選擇。 4、遠(yuǎn)程測(cè)控的實(shí)現(xiàn) 要實(shí)現(xiàn)遠(yuǎn)程測(cè)控功能主要是要實(shí)現(xiàn)測(cè)控系統(tǒng)的網(wǎng)絡(luò)功能,利用LabVIEW提供的網(wǎng)絡(luò)通信節(jié)點(diǎn),例如TCP/IP,Remote Data Acquisition(RDA),Internet Toolkit,VI Server,F(xiàn)ront Panel Web Publishing,Datasocket,Remote Panel等,加上一些高級(jí)編程技術(shù)和技巧,都可以實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)控。大多數(shù)用戶都希望通過簡(jiǎn)單快捷的方式來實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)控功能,利用LabVlEw的遠(yuǎn)程面板 (Remote Panel)技術(shù),不需要任何編程,只需要在LabVIEw中設(shè)置幾個(gè)參數(shù).就可以輕松解決這個(gè)問題。 Remote Panel技術(shù),允許用戶直接在本地(Client端)計(jì)算機(jī)上打開并操作位于遠(yuǎn)程(web server)計(jì)算機(jī)上的VI的前面板。IJabvIEw集成了Remote Panel技術(shù),用戶可以用極為簡(jiǎn)單的方式直接在本地(client端)計(jì)算機(jī)上打開并操作位于遠(yuǎn)程(web Server端)計(jì)算機(jī)上的vI的前面板。甚至可以將LabVIEw的前面板窗口嵌入到一個(gè)網(wǎng)頁中并在網(wǎng)頁中直接操作它。在LabvIEw中使用Remote Panel只需要兩個(gè)步驟: 第一步,在hbvIEw web server端的計(jì)算機(jī)上開啟LabVIEW Web Server服務(wù)。 第二步,在client端計(jì)算機(jī)上連接并運(yùn)行Remote Panel。 完成web server端相應(yīng)的配置后,就可以在client端的LabvIEw環(huán)境中運(yùn)行一個(gè)Remote Panel了。Remote Panel還可以通過瀏覽器控制遠(yuǎn)端vI的前面板,只要在client端安裝LabVIEW Run-Time Engine即可實(shí)現(xiàn)這個(gè)功能。 5、結(jié)束語 本文的創(chuàng)新之處是把非NI公司的數(shù)據(jù)采集卡與LabVlEW完美結(jié)合起來,實(shí)現(xiàn)基于虛擬儀器的測(cè)控系統(tǒng)的設(shè)計(jì)。設(shè)計(jì)思想是低一層的軟件為高一層的軟件提供接口,供高一層的軟件使用,也就是驅(qū)動(dòng)程序給動(dòng)態(tài)鏈接庫提供接口,動(dòng)態(tài)鏈接庫給用戶界面提供接口,實(shí)現(xiàn)三者的完美結(jié)合。此外,利用LabVIEW強(qiáng)大的網(wǎng)絡(luò)編程功能,實(shí)現(xiàn)了同一局域網(wǎng)內(nèi)基于Remote Panel的web環(huán)境的網(wǎng)絡(luò)測(cè)控。因此此系統(tǒng)在測(cè)試領(lǐng)域中將會(huì)有廣闊的應(yīng)用前景。 |