孫興華,裴一飛
(北京衛星環境工程研究所,北京 100094)
真空熱試驗是航天器研制過程中必不可缺的試驗項目,它利用空間模擬器模擬航天器在軌運行時所處的真空、冷黑及太陽輻照環境,驗證并考驗航天器各項設計是否滿足要求。其中,外熱流的模擬和溫度數據的獲取是真空熱試驗的兩項關鍵技術,二者的實現都離不開各種測控儀器,主要包括各種型號的數字萬用表和程控電源等。由于不同型號的測控儀器的通訊接口和總線方式不同,使得它們的驅動方式也大不相同,造成了測控應用軟件版本復雜、通用性和繼承性較差等問題。
本文嘗試針對真空熱試驗測控系統中所使用的幾種測控儀器,建立通用的儀器模型,并設計驅動函數庫,以簡化各類儀器的驅動方式,有利于測控系統應用軟件的通用化設計。
目前,航天器真空熱試驗測控系統所使用的儀器主要分為程控電源和數字萬用表兩大類。程控電源主要用于溫度控制和外熱流模擬;包括安捷倫公司的N5750、Sorensen公司的DLM150-4以及惠普公司的6655A和6644A等型號;數字萬用表主要用于溫度和熱流等參數的直接與間接測量,包括Mobrey公司的 3595EA和 3595EH、惠普公司的E1411B和吉時利公司的K2750等型號(見表1)。

表1 真空熱試驗測控儀器Table 1 Measurement & control instruments for vacuum thermal tests
在上述測控儀器中,除了 Mobrey公司的3595EA和3595EH數字萬用表需要專門的接口卡與控制計算機相連,通過一種特殊的 S-NET網絡進行數據交換外,其他測控儀器都可以直接或經過E5810(GPIB/LAN)網關與控制計算機相連,通過以太網進行數據交換。
實現測控儀器的統一驅動,首先需要建立一個通用的儀器模型,下面介紹的是基于 VISA(Virtual Instrument Software Architecture,虛擬儀器軟件結構)和 SCPI(Standard Commands for Programmable Instruments,程控儀器標準指令)標準的通用儀器模型。
真空熱試驗測控系統中應用的儀器雖然來自不同的廠家,并且從功能和通訊方式上存在差異,但是它們都支持SCPI標準命令格式和VISA儀器驅動標準。
SCPI是架構在 IEEE 488.2上的儀器控制語言,它提供了一套明確定義的代碼、格式、協議和公用命令,加強了不同廠家儀器互連使用的兼容性。它的命令字符串不僅可以通過各種儀器接口(例如LAN、GPIB、USB等)發送,而且可以使用各種編程語言把SCPI命令傳送給儀器,這就有利于程序的編制和移植[1],給儀器驅動通用化設計提供了極大的方便。程序開發人員只要根據需求找到要完成功能的指令,通過讀寫操作就可以實現對各類程控儀器的程序控制。例如指令“MEAS:VOLT?”表示測量程控電源的實際輸出,無論對于何種程控電源或者用戶使用何種編程語言,只要把該字符串寫入儀器就可以實現實際輸出電壓的測量功能。
儀器驅動器是指使用標準化的I/O函數與一臺或幾臺儀器設備進行通信的一套或一組程序,主要用于對儀器的程控操作,如設置參數和工作方式、讀/寫數據、觸發及讀回儀器工作狀態等。它相當于一個位于用戶和儀器之間的解析器,把用戶能夠理解的高層函數翻譯成儀器能夠識別的底層命令[2]。對一臺儀器的操作,用戶只需通過初始化、配置和獲取數據等高層命令就可以實現對儀器的控制,節省了從底層命令來寫儀器驅動的時間,從而使得整個開發過程更加方便快捷。
VISA是由著名的泰克、惠普、美國國家儀器等35家儀器儀表公司為確保不同廠商、不同接口標準的儀器能相互兼容,彼此之間可以進行通訊和數據交換,并且能夠給用戶提供方便易用的驅動程序而研制出的一種儀器驅動標準。圖 1為基于VISA的儀器設備的通用驅動流程。
利用VISA標準接口函數開發的儀器驅動器繼承了VISA標準的特點,其控制功能適用于各種類型的儀器而與接口類型無關,無論是LAN、GPIB或USB接口,只需正確設置儀器的VISA地址,就可以實現對儀器的各種操作。表2給出了不同通訊接口的VISA地址格式。

圖 1 基于VISA的儀器驅動流程Fig.1 Instrument driving flow based on VISA

表2 不同通訊接口儀器的VISA地址Table 2 VISA address for different communication interface of different instruments
基于SCPI和VISA標準,可以用統一的方式來描述各種各樣的測控儀器,而與儀器的硬件組成、面板控制等無關,構造通用模型如圖2所示。

圖2 通用儀器模型示意圖Fig.2 Universal model for instruments
由圖2可以看出,任何一種測控儀器都可以被看作是一個可以用VISA地址進行直接訪問、用標準SCPI指令進行控制的執行器。要實現對該執行器的控制,就必須設計一個通用的驅動器,用于把指令正確地下達到儀器中。
實現多種測控儀器的通用化驅動就要建立一個統一的驅動函數庫。根據應用范圍和實現功能,驅動函數可分為通用功能函數和特定功能函數。通用功能函數適用于所有儀器,主要用于建立或中止驅動程序與儀器的通信聯系、儀器設備的狀態配置和各類信息查詢等;特定功能函數主要包括測量類的功能函數和電源類的功能函數,用于實現測控儀器的特有功能。本文利用Visual Basic語言編寫了相關的驅動函數,并用動態鏈接庫技術將其進行統一封裝,可供調用進行二次開發。圖3為測控儀器通用驅動器結構。

圖3 測控儀器通用驅動器Fig.3 Universal drivers for measurement & control instruments
實現測控儀器程序控制是為建立控制計算機與儀器的連接并不斷完成二者之間讀寫操作的過程,儀器驅動函數就是要完成以上功能。下面以具體的通用功能函數和特定功能函數為例,介紹驅動函數的實現過程。
3.1.1 通用功能函數
1)儀器初始化函數
主要用于VISA資源檢查和測控儀器通訊狀態檢查,該函數返回字符串來表征檢查和測試結果,詳細代碼及注釋如下:


2)儀器通用讀寫函數
主要用于與測控儀器的指令發送和數據交換,并分別返回一個布爾數,表示讀寫操作是否成功完成,代碼如下:


3.1.2 特定功能函數
特定功能函數主要是針對不同測控儀器在真空熱試驗過程中實現某種特定功能(如數字萬用表進行電壓、電阻測量,程控電源進行回路電阻測量等)的函數。特定功能函數庫的建立為測控軟件的開發提供了很大便利。例如在某些試驗中對測量周期或者對程控電源的輸出有特殊要求,都可以編寫相應的特定功能函數,將其添加到驅動函數庫中以供調用。
動態鏈接庫(即DLL)是Windows操作系統提供的共享可執行代碼數據的基本手段,是一種過程庫,可以被多個程序共享調用,大大節省了對系統資源的占用[3]。使用Visual Basic將前面所編寫的通用功能函數和特定功能函數統一封裝生成一個名為“InstrumentDriver.dll”的動態鏈接庫文件,這樣用戶只需載入這個函數庫并聲明函數,就可以實現對測控儀器程序控制。另外,這是一個開放的函數庫,隨著以后測控儀器種類的增加以及對各種功能的進一步需求,可以不斷加入新的函數。
為驗證前面所建立的函數庫可以實現對真空熱試驗測控流程中應用的各類儀器的驅動,利用Excel VBA引用“InstrumentDriver.dll”動態鏈接庫中的相關函數實現程控電源和數字萬用表測量電阻的功能,如圖4所示為調用結果。可以看出,只要正確設置各類儀器的VISA地址,不論儀器的種類、廠家和型號,通過調用該函數庫的相關函數都可以實現對儀器的驅動;并且通過編寫特定功能函數,用戶可以輕松調用,有利于測控軟件的二次開發。

圖4 驅動函數調用結果Fig.4 Calling result of the drivers function
本文針對目前真空熱試驗測控系統應用的各種測控儀器,建立了通用的儀器模型,基于VISA和SCPI標準編寫了通用驅動函數,并以動態鏈接庫的形式進行封裝,用戶只需要進行簡單的函數調用就可以實現不同廠家、不同型號測控儀器的各類功能,簡化了儀器驅動的配置過程,縮減了測控應用軟件開發的工作量。
(References)
[1]王學偉, 相艷, 陳小容.數據采集模塊 SCPI解釋器的研究與實現[J].電測與儀表, 2008, 45(1): 31
[2]李揚, 趙葛霄, 汪仁煌.基于VISA標準的儀器驅動器設計[J].工業儀表與自動化裝置, 2001, 6: 59
[3]伊翠香, 孫玲玲, 張富強.動態鏈接庫 DLL編程的相關應用技術與探討[J].試驗技術與試驗機, 2008, 48(1): 56