測試系統(tǒng)的儀器可互換性配置實(shí)現(xiàn)
關(guān)鍵詞:可互換性;虛擬儀器;測試系統(tǒng);LabWindows/CVI
引言
實(shí)現(xiàn)測試系統(tǒng)的儀器可互換性是長期以來許多工程師特別是軍事和航空電子行業(yè)工程師所致力于的一個目標(biāo)。1997年建立的IVI(Interchangeable Virtual Instruments,可互換性)基金會,致力于在VPP(VXI plug&play,VXI即插即用)規(guī)范的基礎(chǔ)上建立可互換、高性能、更易于維護(hù)的儀器編程模型,并在VPP儀器廠商共同支持的框架標(biāo)準(zhǔn)基礎(chǔ)上定義儀器的通用結(jié)構(gòu)和實(shí)現(xiàn)方法,為測試系統(tǒng)開發(fā)者服務(wù)。目前,IVI基金會已經(jīng)制定了大量IVI技術(shù)規(guī)范,許多儀器生產(chǎn)廠商也遵循這些規(guī)范開發(fā)儀器并提供符合IVI技術(shù)規(guī)范的儀器驅(qū)動器。因此,使用IVI驅(qū)動器開發(fā)儀器可互換性測試系統(tǒng)就成為主流。
為了確保測試系統(tǒng)完全的儀器可互換性,用戶需要直接對儀器類API編程而不能直接對IVI類兼容專用驅(qū)動器進(jìn)行編程。在測試程序中也不能直接對與特定儀器相關(guān)的驅(qū)動器和硬件資源進(jìn)行配置,需要借助于外部“配置倉”,對特定儀器驅(qū)動器進(jìn)行動態(tài)加載。為了實(shí)現(xiàn)這種功能,用戶需要定義一個邏輯名,通過邏輯名調(diào)用IVI驅(qū)動器,然后從配置倉中查找匹配信息,得到實(shí)際的IVI類兼容專用驅(qū)動器指針,動態(tài)加載該驅(qū)動器,鏈接相應(yīng)函數(shù)和屬性,使應(yīng)用程序可以間接訪問這些函數(shù)和屬性。邏輯名以及配置倉中與邏輯名匹配的相關(guān)信息都需要作為測試系統(tǒng)信息進(jìn)行配置。本文介紹了使用LabWindows/CVI進(jìn)行系統(tǒng)儀器可互換性配置的兩種方法,并設(shè)計(jì)了“測試系統(tǒng)儀器可互換性配置子系統(tǒng)”。
1 使用MAX配置儀器可互換性
Measurement & Automation Explorer(MAX)是NI公司提供的所有硬件和相關(guān)驅(qū)動軟件的標(biāo)準(zhǔn)配置工具,可以對IVI引擎配置倉進(jìn)行配置,使類驅(qū)動器可以與專用儀器驅(qū)動器通信。在MAX中需要配置的有四項(xiàng):Devices、Instrument Drivers、Virtual Instruments和Logical Names。
(1)Devices:包含了以VISA源描述符號形式表示的儀器物理硬件地址信息。它顯示了測試系統(tǒng)已經(jīng)定義的儀器。比如,用戶可以定義“DAQ::1::INSTR”位置的儀器為“nidmm”。儀器名可以任意定義,但是如果在物理硬件地址不存在實(shí)際儀器,則此儀器名在非仿真狀態(tài)下無法使用。
(2)Instrument Drivers:包含了測試系統(tǒng)所安裝的所有類驅(qū)動器、仿真驅(qū)動器和專用驅(qū)動器信息。當(dāng)系統(tǒng)安裝新的IVI驅(qū)動器,這些信息相應(yīng)進(jìn)行更新。類驅(qū)動器可以手動加入,專用儀器驅(qū)動器則只能在安裝了IVI驅(qū)動器時(shí)自動加入。
(3)Virtual Instruments:虛擬儀器,是物理儀器、儀器驅(qū)動器和選項(xiàng)設(shè)置的綜合。它包含了當(dāng)前系統(tǒng)中所安裝的每一個IVI專用儀器驅(qū)動器的信息。這些信息包括驅(qū)動中IVI屬性的初始化設(shè)置,如狀態(tài)緩存,仿真等等。Virtual Instruments項(xiàng)包括仿真虛擬儀器和儀器專用虛擬儀器。虛擬儀器可以手動加入,但必須指定類和專用儀器驅(qū)動器以及相關(guān)設(shè)置。
(4)Logical Names:邏輯名,即在應(yīng)用程序中將使用的虛擬儀器。包含了在程序中識別儀器所定義的所有邏輯名。Logical Names項(xiàng)可以手動加入,指定所用的虛擬儀器即可。因此,當(dāng)更換儀器時(shí),直接修改與邏輯名相對應(yīng)的專用驅(qū)動就可以了,儀器本身與測試程序就完全隔離了,從而實(shí)現(xiàn)了儀器互換性。
使用MAX配置好系統(tǒng)的邏輯名后,就可以直接調(diào)用IVI類驅(qū)動器開發(fā)測試系統(tǒng),從而使系統(tǒng)與同儀器通信的專用驅(qū)動器完全獨(dú)立,達(dá)到儀器的可互換性。例如,定義了名為“NIDMM”的萬用表卡邏輯名,則調(diào)用如下函數(shù):
IviDmm_Initialize (“NIDMM”, &dmmHandle);
此函數(shù)初始化萬用表,得到虛擬儀器句柄“dmmHandle”,在儀器配置和測量中通過句柄進(jìn)行鏈接,擺脫了對儀器的直接操作。
2 使用CVI Run-Time配置儀器可互換性
使用MAX配置測試系統(tǒng),邏輯名、虛擬儀器名等信息都在測試前已經(jīng)配置完畢。當(dāng)計(jì)算機(jī)平臺重新安裝系統(tǒng)時(shí),則必須為系統(tǒng)安裝MAX,并重新定義邏輯名及相關(guān)信息。使用LabWindows/CVI的Run-Time函數(shù)則可以在程序運(yùn)行中對系統(tǒng)進(jìn)行配置。CVI Run-Time可以為IVI驅(qū)動器配置以下項(xiàng)目:
Hardware entry:硬件項(xiàng)。硬件項(xiàng)指定物理設(shè)備。每一個VInstr項(xiàng)引用一個硬件項(xiàng)。
Driver entry:驅(qū)動器項(xiàng)。驅(qū)動器項(xiàng)指定專用儀器驅(qū)動器軟件模塊。每個VInstr配置項(xiàng)引用一個驅(qū)動器項(xiàng)。
VInstr entry:虛擬儀器項(xiàng)。VInstr項(xiàng)指定由物理設(shè)備和軟件驅(qū)動器模塊組成的虛擬儀器。可以傳遞VInstr名到類驅(qū)動器初始化函數(shù)識別將使用的設(shè)備和驅(qū)動器,或者定義一個邏輯名引用VInstr項(xiàng),然后把邏輯名傳遞給類驅(qū)動器初始化函數(shù)。
Class entry:儀器類項(xiàng)目。儀器類項(xiàng)目為儀器類指定默認(rèn)仿真驅(qū)動器的VInstr。如果通過類驅(qū)動器啟動一個IVI會話,則類驅(qū)動器首先通過專用儀器的VInstr項(xiàng)查找仿真驅(qū)動器。如果專用儀器的VInstr項(xiàng)沒有指定仿真驅(qū)動器,那么類驅(qū)動器使用你在類項(xiàng)目中指定的默認(rèn)仿真驅(qū)動器。如果類項(xiàng)目不存在或者它沒有指定默認(rèn)仿真驅(qū)動器,類驅(qū)動器使用默認(rèn)仿真驅(qū)動器的硬性編碼的VInstr項(xiàng)。
Logical entry:邏輯名項(xiàng)。邏輯名引用VInstr,VInstr則指定物理設(shè)備和專用驅(qū)動器模塊。
在系統(tǒng)安裝了新的IVI驅(qū)動器以后,系統(tǒng)中的Hardware entry、Driver entry、VInstr entry都自動得到了更新,因此使用Run-Time我們可以查找到新安裝的儀器驅(qū)動器以及自帶的虛擬儀器名,然后在程序運(yùn)行時(shí)定義邏輯名就可以了。此程序步驟如下:
第一步:定位配置倉位置,讀取所有的項(xiàng)目列表。
第二步:從項(xiàng)目列表中讀取一項(xiàng),判斷是否VInstr項(xiàng)。如果不是,重復(fù)讀取下一項(xiàng)。
第三步:通過VInstr項(xiàng)的“Driver”節(jié)讀取Driver項(xiàng),從Driver項(xiàng)的“Class”節(jié)值判斷VInstr項(xiàng)所屬的儀器類。
第四步:判斷VInstr項(xiàng)是否符合所要使用的儀器種類。如果不是,則重復(fù)第二步;如果符合,則得到VInstr entry。
第五步:使用Ivi_DefineVInstr函數(shù)定義邏輯名,然后進(jìn)行儀器初始化、屬性配置,執(zhí)行測量任務(wù)。
3 IVI儀器配置程序的設(shè)計(jì)
使用CVI Run-Time對系統(tǒng)進(jìn)行配置,在每一次測量前都需要進(jìn)行復(fù)雜的儀器驅(qū)動器查找,占用了測試時(shí)間,不利于提高系統(tǒng)的測試效率。為了解決這個問題,用LabWindows/CVI編寫了測試系統(tǒng)儀器可互換性配置程序。該程序?yàn)闇y試系統(tǒng)生成了一個儀器配置文件SystemConfigure.ini,此文件存儲了系統(tǒng)所使用儀器類的儀器虛擬名,測量前直接讀取,然后用CVI Run-Time定義邏輯名,從而節(jié)省了配置時(shí)間。
3.1 SystemConfigure.ini文件的內(nèi)容
此文件存儲了系統(tǒng)所使用儀器的類和各儀器類所指定的虛擬儀器名。例如:
[InstrClass]
Class1 = "IviScope"
Class1Lable = "示波器"
Count = 1
[IviScope]
Driver = "Driver->tkds30xx"
VInstr = "VInstr->tkds30xx"
由[InstrClass]確定系統(tǒng)所使用的儀器類,其中“Count = 1”表示系統(tǒng)中用到的儀器類為一個。由此儀器類的“Class1”標(biāo)記得到類名稱“IviScope”,進(jìn)一步則可以查找到此儀器類指定的虛擬儀器名和專用驅(qū)動器,然后就可以使用Run-Time的Ivi_DefineLogicalName函數(shù)為系統(tǒng)定義邏輯名。
3.2 配置程序的設(shè)計(jì)
SystemConfigure.ini文件存儲了測試系統(tǒng)所使用的IVI儀器類和類所指定的虛擬儀器名及驅(qū)動器。當(dāng)系統(tǒng)所使用的儀器改變時(shí),運(yùn)行“測試系統(tǒng)儀器可互換性配置”對SystemConfigure.ini文件進(jìn)行更新。“測試系統(tǒng)儀器可互換性配置”子系統(tǒng)運(yùn)行界面如圖1所示。

圖1 “儀器可互換性配置”子系統(tǒng)運(yùn)行界面
子系統(tǒng)從SystemConfigure.ini文件中的[InstrClass]讀取系統(tǒng)所使用的IVI類,同時(shí)也可以加入新的IVI類,顯示在“IVI類選擇”框中。選中某一類后,子系統(tǒng)從配置倉ivi.ini文件中讀取該類已安裝的驅(qū)動器,由用戶確定系統(tǒng)將要使用的專用驅(qū)動器則系統(tǒng)自動配置虛擬儀器名。配置步驟如下:
第一步:從配置文件SystemConfigure.ini中讀取IVI儀器類;
第二步:根據(jù)所選擇的IVI類,從配置倉ivi.ini文件讀取該類已安裝驅(qū)動器;
第三步:由用戶選擇所要使用的驅(qū)動器,配置虛擬儀器名,并寫入SystemConfigure.ini文件,供測試程序調(diào)用。
此程序可以作為測試系統(tǒng)的一個子系統(tǒng),在系統(tǒng)儀器發(fā)生更換時(shí)對SystemConfigure.ini文件進(jìn)行配置。
4 影響儀器互換性的一些因素
盡管大部分儀器廠商都遵循IVI規(guī)范開發(fā)儀器和IVI驅(qū)動器,但是不同廠商之間還是會存在差異,從而影響儀器可互換性的實(shí)現(xiàn)。在系統(tǒng)開發(fā)過程中,用戶要考慮到這些因素,并努力避免。
(1)儀器物理標(biāo)識與虛擬標(biāo)識符的對應(yīng)。系統(tǒng)安裝IVI驅(qū)動器后,都會自動生成相應(yīng)的虛擬標(biāo)識符,但默認(rèn)情況下都沒有指定儀器物理標(biāo)識。在仿真狀態(tài)下,程序可以正常執(zhí)行;在非仿真狀態(tài)下,則會出現(xiàn)運(yùn)行時(shí)警告甚至無法運(yùn)行。因此,在安裝IVI驅(qū)動器后,應(yīng)該為虛擬標(biāo)識符指定儀器物理標(biāo)識。另外,對于具有重復(fù)重功能或重復(fù)資源的儀器,用戶更應(yīng)該為定義的虛擬標(biāo)識符指定物理標(biāo)識。
(2)儀器特殊屬性的初始化配置。廠商提供的儀器可能具有IVI儀器類規(guī)范之外的特性,這些特性的不同設(shè)置方式可能會影響可互換性的實(shí)現(xiàn)。為解決這種問題,用戶需要在IVI配置倉中對這些特殊屬性進(jìn)行初始化配置。
(3)“強(qiáng)制數(shù)據(jù)轉(zhuǎn)換記錄”功能的使用。“強(qiáng)制數(shù)據(jù)轉(zhuǎn)換記錄”功能是對IVI專用驅(qū)動器執(zhí)行的強(qiáng)制數(shù)據(jù)轉(zhuǎn)換過程進(jìn)行記錄。IVI類規(guī)范允許在連續(xù)實(shí)數(shù)區(qū)中對一些參數(shù)或?qū)傩赃M(jìn)行取值,但是有些儀器僅能使用其中的一些離散數(shù)值。因此,需要IVI專用驅(qū)動器完成對用戶設(shè)置的參數(shù)值或?qū)傩灾颠M(jìn)行數(shù)據(jù)強(qiáng)制轉(zhuǎn)換,使儀器可以接收所設(shè)定的值。用戶在程序執(zhí)行前使用此功能,并利用專用驅(qū)動器提供的“記錄讀取”函數(shù)讀出記錄數(shù)據(jù),判斷強(qiáng)制數(shù)據(jù)轉(zhuǎn)換是否符合實(shí)際要求。
(4)IVI驅(qū)動器“互換性檢查”功能的使用。該功能對程序進(jìn)行檢查,并對存在潛在危險(xiǎn)的地方提出警告。“互換性檢查”功能在程序調(diào)試過程中使用,調(diào)試完畢后應(yīng)該禁止。
(5)儀器功能與程序設(shè)置的合適選擇。不同廠商或者不同型號的同類儀器,某些性能可能不同,在程序開發(fā)設(shè)置中應(yīng)該盡可能考慮所有儀器最普遍的性能。同樣,在互換儀器時(shí),也一定要選擇性能與程序開發(fā)設(shè)置相同的儀器。比如,程序開發(fā)中量程設(shè)置為250V的DMM儀器,用最大量程為200V的儀器互換,就可能出現(xiàn)執(zhí)行中錯誤了。
5 結(jié)論
測試系統(tǒng)的儀器可互換性配置是使用IVI驅(qū)動器實(shí)現(xiàn)儀器完全可互換性不可或缺的重要環(huán)節(jié),是保證測試程序安全運(yùn)行的重要前提。本文設(shè)計(jì)的“儀器可互換性配置”子系統(tǒng)面向測試程序最終用戶,提供了簡捷直觀的儀器可互換性配置方法,并且可以把影響儀器可互換性實(shí)現(xiàn)的因素考慮其中,提起解決。
參考文獻(xiàn):
[1] 楊鎖昌,孟晨,黃考利. 儀器無關(guān)測試系統(tǒng)IVI配置文件的管理[J]. 計(jì)算機(jī)自動測量與控制,2001,9(4): 4-6.
[2] 趙會兵. 虛擬儀器技術(shù)規(guī)范與系統(tǒng)集成[M].北京:清華大學(xué)出版社,2003.
[3] 張毅剛. LabWindows/CVI6.0編程指南[M].北京:機(jī)械工業(yè)出版社,2002.
[4] IVI Driver Toolset User Manual[DB/OL].http:// www.ivifoundation.com.
[5] LabWindows/CVI Instrument Driver Developer Guide[M].National Instrument Corportion, 1998.
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。