孫興華,裴一飛
(北京衛(wèi)星環(huán)境工程研究所,北京 100094)
真空熱試驗(yàn)是航天器研制過程中必不可缺的試驗(yàn)項(xiàng)目,它利用空間模擬器模擬航天器在軌運(yùn)行時(shí)所處的真空、冷黑及太陽(yáng)輻照環(huán)境,驗(yàn)證并考驗(yàn)航天器各項(xiàng)設(shè)計(jì)是否滿足要求。其中,外熱流的模擬和溫度數(shù)據(jù)的獲取是真空熱試驗(yàn)的兩項(xiàng)關(guān)鍵技術(shù),二者的實(shí)現(xiàn)都離不開各種測(cè)控儀器,主要包括各種型號(hào)的數(shù)字萬(wàn)用表和程控電源等。由于不同型號(hào)的測(cè)控儀器的通訊接口和總線方式不同,使得它們的驅(qū)動(dòng)方式也大不相同,造成了測(cè)控應(yīng)用軟件版本復(fù)雜、通用性和繼承性較差等問題。
本文嘗試針對(duì)真空熱試驗(yàn)測(cè)控系統(tǒng)中所使用的幾種測(cè)控儀器,建立通用的儀器模型,并設(shè)計(jì)驅(qū)動(dòng)函數(shù)庫(kù),以簡(jiǎn)化各類儀器的驅(qū)動(dòng)方式,有利于測(cè)控系統(tǒng)應(yīng)用軟件的通用化設(shè)計(jì)。
目前,航天器真空熱試驗(yàn)測(cè)控系統(tǒng)所使用的儀器主要分為程控電源和數(shù)字萬(wàn)用表兩大類。程控電源主要用于溫度控制和外熱流模擬;包括安捷倫公司的N5750、Sorensen公司的DLM150-4以及惠普公司的6655A和6644A等型號(hào);數(shù)字萬(wàn)用表主要用于溫度和熱流等參數(shù)的直接與間接測(cè)量,包括Mobrey公司的 3595EA和 3595EH、惠普公司的E1411B和吉時(shí)利公司的K2750等型號(hào)(見表1)。
表1 真空熱試驗(yàn)測(cè)控儀器Table 1 Measurement & control instruments for vacuum thermal tests
在上述測(cè)控儀器中,除了 Mobrey公司的3595EA和3595EH數(shù)字萬(wàn)用表需要專門的接口卡與控制計(jì)算機(jī)相連,通過一種特殊的 S-NET網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換外,其他測(cè)控儀器都可以直接或經(jīng)過E5810(GPIB/LAN)網(wǎng)關(guān)與控制計(jì)算機(jī)相連,通過以太網(wǎng)進(jìn)行數(shù)據(jù)交換。
實(shí)現(xiàn)測(cè)控儀器的統(tǒng)一驅(qū)動(dòng),首先需要建立一個(gè)通用的儀器模型,下面介紹的是基于 VISA(Virtual Instrument Software Architecture,虛擬儀器軟件結(jié)構(gòu))和 SCPI(Standard Commands for Programmable Instruments,程控儀器標(biāo)準(zhǔn)指令)標(biāo)準(zhǔn)的通用儀器模型。
真空熱試驗(yàn)測(cè)控系統(tǒng)中應(yīng)用的儀器雖然來自不同的廠家,并且從功能和通訊方式上存在差異,但是它們都支持SCPI標(biāo)準(zhǔn)命令格式和VISA儀器驅(qū)動(dòng)標(biāo)準(zhǔn)。
SCPI是架構(gòu)在 IEEE 488.2上的儀器控制語(yǔ)言,它提供了一套明確定義的代碼、格式、協(xié)議和公用命令,加強(qiáng)了不同廠家儀器互連使用的兼容性。它的命令字符串不僅可以通過各種儀器接口(例如LAN、GPIB、USB等)發(fā)送,而且可以使用各種編程語(yǔ)言把SCPI命令傳送給儀器,這就有利于程序的編制和移植[1],給儀器驅(qū)動(dòng)通用化設(shè)計(jì)提供了極大的方便。程序開發(fā)人員只要根據(jù)需求找到要完成功能的指令,通過讀寫操作就可以實(shí)現(xiàn)對(duì)各類程控儀器的程序控制。例如指令“MEAS:VOLT?”表示測(cè)量程控電源的實(shí)際輸出,無論對(duì)于何種程控電源或者用戶使用何種編程語(yǔ)言,只要把該字符串寫入儀器就可以實(shí)現(xiàn)實(shí)際輸出電壓的測(cè)量功能。
儀器驅(qū)動(dòng)器是指使用標(biāo)準(zhǔn)化的I/O函數(shù)與一臺(tái)或幾臺(tái)儀器設(shè)備進(jìn)行通信的一套或一組程序,主要用于對(duì)儀器的程控操作,如設(shè)置參數(shù)和工作方式、讀/寫數(shù)據(jù)、觸發(fā)及讀回儀器工作狀態(tài)等。它相當(dāng)于一個(gè)位于用戶和儀器之間的解析器,把用戶能夠理解的高層函數(shù)翻譯成儀器能夠識(shí)別的底層命令[2]。對(duì)一臺(tái)儀器的操作,用戶只需通過初始化、配置和獲取數(shù)據(jù)等高層命令就可以實(shí)現(xiàn)對(duì)儀器的控制,節(jié)省了從底層命令來寫儀器驅(qū)動(dòng)的時(shí)間,從而使得整個(gè)開發(fā)過程更加方便快捷。
VISA是由著名的泰克、惠普、美國(guó)國(guó)家儀器等35家儀器儀表公司為確保不同廠商、不同接口標(biāo)準(zhǔn)的儀器能相互兼容,彼此之間可以進(jìn)行通訊和數(shù)據(jù)交換,并且能夠給用戶提供方便易用的驅(qū)動(dòng)程序而研制出的一種儀器驅(qū)動(dòng)標(biāo)準(zhǔn)。圖 1為基于VISA的儀器設(shè)備的通用驅(qū)動(dòng)流程。
利用VISA標(biāo)準(zhǔn)接口函數(shù)開發(fā)的儀器驅(qū)動(dòng)器繼承了VISA標(biāo)準(zhǔn)的特點(diǎn),其控制功能適用于各種類型的儀器而與接口類型無關(guān),無論是LAN、GPIB或USB接口,只需正確設(shè)置儀器的VISA地址,就可以實(shí)現(xiàn)對(duì)儀器的各種操作。表2給出了不同通訊接口的VISA地址格式。
圖 1 基于VISA的儀器驅(qū)動(dòng)流程Fig.1 Instrument driving flow based on VISA
表2 不同通訊接口儀器的VISA地址Table 2 VISA address for different communication interface of different instruments
基于SCPI和VISA標(biāo)準(zhǔn),可以用統(tǒng)一的方式來描述各種各樣的測(cè)控儀器,而與儀器的硬件組成、面板控制等無關(guān),構(gòu)造通用模型如圖2所示。
圖2 通用儀器模型示意圖Fig.2 Universal model for instruments
由圖2可以看出,任何一種測(cè)控儀器都可以被看作是一個(gè)可以用VISA地址進(jìn)行直接訪問、用標(biāo)準(zhǔn)SCPI指令進(jìn)行控制的執(zhí)行器。要實(shí)現(xiàn)對(duì)該執(zhí)行器的控制,就必須設(shè)計(jì)一個(gè)通用的驅(qū)動(dòng)器,用于把指令正確地下達(dá)到儀器中。
實(shí)現(xiàn)多種測(cè)控儀器的通用化驅(qū)動(dòng)就要建立一個(gè)統(tǒng)一的驅(qū)動(dòng)函數(shù)庫(kù)。根據(jù)應(yīng)用范圍和實(shí)現(xiàn)功能,驅(qū)動(dòng)函數(shù)可分為通用功能函數(shù)和特定功能函數(shù)。通用功能函數(shù)適用于所有儀器,主要用于建立或中止驅(qū)動(dòng)程序與儀器的通信聯(lián)系、儀器設(shè)備的狀態(tài)配置和各類信息查詢等;特定功能函數(shù)主要包括測(cè)量類的功能函數(shù)和電源類的功能函數(shù),用于實(shí)現(xiàn)測(cè)控儀器的特有功能。本文利用Visual Basic語(yǔ)言編寫了相關(guān)的驅(qū)動(dòng)函數(shù),并用動(dòng)態(tài)鏈接庫(kù)技術(shù)將其進(jìn)行統(tǒng)一封裝,可供調(diào)用進(jìn)行二次開發(fā)。圖3為測(cè)控儀器通用驅(qū)動(dòng)器結(jié)構(gòu)。
圖3 測(cè)控儀器通用驅(qū)動(dòng)器Fig.3 Universal drivers for measurement & control instruments
實(shí)現(xiàn)測(cè)控儀器程序控制是為建立控制計(jì)算機(jī)與儀器的連接并不斷完成二者之間讀寫操作的過程,儀器驅(qū)動(dòng)函數(shù)就是要完成以上功能。下面以具體的通用功能函數(shù)和特定功能函數(shù)為例,介紹驅(qū)動(dòng)函數(shù)的實(shí)現(xiàn)過程。
3.1.1 通用功能函數(shù)
1)儀器初始化函數(shù)
主要用于VISA資源檢查和測(cè)控儀器通訊狀態(tài)檢查,該函數(shù)返回字符串來表征檢查和測(cè)試結(jié)果,詳細(xì)代碼及注釋如下:
2)儀器通用讀寫函數(shù)
主要用于與測(cè)控儀器的指令發(fā)送和數(shù)據(jù)交換,并分別返回一個(gè)布爾數(shù),表示讀寫操作是否成功完成,代碼如下:
3.1.2 特定功能函數(shù)
特定功能函數(shù)主要是針對(duì)不同測(cè)控儀器在真空熱試驗(yàn)過程中實(shí)現(xiàn)某種特定功能(如數(shù)字萬(wàn)用表進(jìn)行電壓、電阻測(cè)量,程控電源進(jìn)行回路電阻測(cè)量等)的函數(shù)。特定功能函數(shù)庫(kù)的建立為測(cè)控軟件的開發(fā)提供了很大便利。例如在某些試驗(yàn)中對(duì)測(cè)量周期或者對(duì)程控電源的輸出有特殊要求,都可以編寫相應(yīng)的特定功能函數(shù),將其添加到驅(qū)動(dòng)函數(shù)庫(kù)中以供調(diào)用。
動(dòng)態(tài)鏈接庫(kù)(即DLL)是Windows操作系統(tǒng)提供的共享可執(zhí)行代碼數(shù)據(jù)的基本手段,是一種過程庫(kù),可以被多個(gè)程序共享調(diào)用,大大節(jié)省了對(duì)系統(tǒng)資源的占用[3]。使用Visual Basic將前面所編寫的通用功能函數(shù)和特定功能函數(shù)統(tǒng)一封裝生成一個(gè)名為“InstrumentDriver.dll”的動(dòng)態(tài)鏈接庫(kù)文件,這樣用戶只需載入這個(gè)函數(shù)庫(kù)并聲明函數(shù),就可以實(shí)現(xiàn)對(duì)測(cè)控儀器程序控制。另外,這是一個(gè)開放的函數(shù)庫(kù),隨著以后測(cè)控儀器種類的增加以及對(duì)各種功能的進(jìn)一步需求,可以不斷加入新的函數(shù)。
為驗(yàn)證前面所建立的函數(shù)庫(kù)可以實(shí)現(xiàn)對(duì)真空熱試驗(yàn)測(cè)控流程中應(yīng)用的各類儀器的驅(qū)動(dòng),利用Excel VBA引用“InstrumentDriver.dll”動(dòng)態(tài)鏈接庫(kù)中的相關(guān)函數(shù)實(shí)現(xiàn)程控電源和數(shù)字萬(wàn)用表測(cè)量電阻的功能,如圖4所示為調(diào)用結(jié)果??梢钥闯?,只要正確設(shè)置各類儀器的VISA地址,不論儀器的種類、廠家和型號(hào),通過調(diào)用該函數(shù)庫(kù)的相關(guān)函數(shù)都可以實(shí)現(xiàn)對(duì)儀器的驅(qū)動(dòng);并且通過編寫特定功能函數(shù),用戶可以輕松調(diào)用,有利于測(cè)控軟件的二次開發(fā)。
圖4 驅(qū)動(dòng)函數(shù)調(diào)用結(jié)果Fig.4 Calling result of the drivers function
本文針對(duì)目前真空熱試驗(yàn)測(cè)控系統(tǒng)應(yīng)用的各種測(cè)控儀器,建立了通用的儀器模型,基于VISA和SCPI標(biāo)準(zhǔn)編寫了通用驅(qū)動(dòng)函數(shù),并以動(dòng)態(tài)鏈接庫(kù)的形式進(jìn)行封裝,用戶只需要進(jìn)行簡(jiǎn)單的函數(shù)調(diào)用就可以實(shí)現(xiàn)不同廠家、不同型號(hào)測(cè)控儀器的各類功能,簡(jiǎn)化了儀器驅(qū)動(dòng)的配置過程,縮減了測(cè)控應(yīng)用軟件開發(fā)的工作量。
(References)
[1]王學(xué)偉, 相艷, 陳小容.數(shù)據(jù)采集模塊 SCPI解釋器的研究與實(shí)現(xiàn)[J].電測(cè)與儀表, 2008, 45(1): 31
[2]李揚(yáng), 趙葛霄, 汪仁煌.基于VISA標(biāo)準(zhǔn)的儀器驅(qū)動(dòng)器設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置, 2001, 6: 59
[3]伊翠香, 孫玲玲, 張富強(qiáng).動(dòng)態(tài)鏈接庫(kù) DLL編程的相關(guān)應(yīng)用技術(shù)與探討[J].試驗(yàn)技術(shù)與試驗(yàn)機(jī), 2008, 48(1): 56