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

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