鐘建林,齊玉東,辛旭光,何 友
(海軍航空工程學(xué)院,山東 煙臺(tái) 264001)
開關(guān)系統(tǒng)是ATS(自動(dòng)測試系統(tǒng))中信號(hào)傳輸與分配的中樞,測試程序通過開關(guān)對(duì)測試資源與UUT(被測設(shè)備)之間的信號(hào)通道或激勵(lì)通道進(jìn)行控制,實(shí)現(xiàn)測試過程的自動(dòng)化和程序化。為了降低開發(fā)、維護(hù)和升級(jí)的成本,大型裝備自動(dòng)測試系統(tǒng)在測試軟件中采取儀器可互換技術(shù)。一方面可以利用現(xiàn)有的物理資源,減少采購費(fèi)用;另一方面,當(dāng)測試資源升級(jí)、更換時(shí),測試程序無需更改,大大減少了開發(fā)和維護(hù)費(fèi)用。大型裝備自動(dòng)測試系統(tǒng)通常包含多個(gè)開關(guān)資源,這些開關(guān)資源可能來自不同的廠商,總線形式不一,軟件控制接口各異,需要對(duì)這些開關(guān)資源的軟件接口進(jìn)行統(tǒng)一,實(shí)現(xiàn)測試程序TPS與具體開關(guān)資源的無關(guān),進(jìn)而實(shí)現(xiàn)開關(guān)類儀器的可互換。
基于ini配置文件的自動(dòng)測試系統(tǒng)實(shí)現(xiàn)了儀器可互換,其軟件體系結(jié)構(gòu)如圖1。其中資源需求描述是一個(gè)ini文件,描述了儀器所屬類的類名、邏輯儀器名、物理儀器名、資源描述符、物理驅(qū)動(dòng)程序名等,物理儀器在該文件中進(jìn)行“軟注冊”。系統(tǒng)在啟動(dòng)時(shí)根據(jù)儀器類名搜索與測試主機(jī)相連的該類物理儀器,并使該類物理儀器處于待機(jī)狀態(tài),隨時(shí)等待程控指令。測試程序通過邏輯儀器名對(duì)物理儀器進(jìn)行控制,因而測試程序中不會(huì)出現(xiàn)物理儀器有關(guān)的信息,實(shí)現(xiàn)了測試程序與具體物理儀器無關(guān)[1]。
測試項(xiàng)目定義文件以ini文件的格式定義了當(dāng)前UUT的測試項(xiàng)目信息,一個(gè)TPS(測試程序集)對(duì)應(yīng)一個(gè)測試項(xiàng)目定義文件。每個(gè)測試項(xiàng)目具有標(biāo)準(zhǔn)格式的信息,如測試項(xiàng)目代號(hào)、(子)測試項(xiàng)目名稱、測試項(xiàng)目級(jí)別、對(duì)應(yīng)測試函數(shù)名、函數(shù)調(diào)用參數(shù)、是否加電測試等。測試程序主框架根據(jù)測試項(xiàng)目定義文件實(shí)現(xiàn)對(duì)TPS測試項(xiàng)目的屬性識(shí)別和有效管理。
測試數(shù)據(jù)模板是一個(gè)Excel表格,測試程序主框架根據(jù)該表數(shù)據(jù)與相應(yīng)測試項(xiàng)目的測試數(shù)據(jù)進(jìn)行比較,判斷測試是否通過,并通過測試項(xiàng)目列表格式化顯示測試結(jié)果。
測試主框架內(nèi)核包括測試引擎、測試數(shù)據(jù)管理等與軟件平臺(tái)有關(guān)的函數(shù),其中測試引擎主要包括測試程序主框架的函數(shù),實(shí)現(xiàn)對(duì)類驅(qū)動(dòng)的動(dòng)態(tài)調(diào)用,完成TPS的儀器無關(guān)性及系統(tǒng)集成[2]。
圖1 自動(dòng)測試系統(tǒng)軟件結(jié)構(gòu)
儀器可互換技術(shù)最初由IVI聯(lián)盟提出,其核心是將儀器驅(qū)動(dòng)程序分為上下兩層,即上層的儀器類驅(qū)動(dòng)程序和下層的儀器物理驅(qū)動(dòng)程序。圖1中,TPS與類驅(qū)動(dòng)動(dòng)態(tài)鏈接庫DLL之間通過隱含連接方式調(diào)用DLL中定義的導(dǎo)出變量和導(dǎo)出函數(shù)。而類驅(qū)動(dòng)與物理驅(qū)動(dòng)動(dòng)態(tài)庫采用顯式鏈接方式。底層代碼由儀器供貨商提供,直接與儀器會(huì)話,并被物理驅(qū)動(dòng)程序所調(diào)用。物理驅(qū)動(dòng)導(dǎo)出函數(shù)與類驅(qū)動(dòng)導(dǎo)出函數(shù)是一一對(duì)應(yīng)的,它們的函數(shù)名以及參數(shù)的數(shù)量、定義均相同,但函數(shù)名的前綴不同(函數(shù)名前綴在資源需求描述文件中定義)[3-4]。測試程序只與類驅(qū)動(dòng)打交道,不包含物理驅(qū)動(dòng)中的函數(shù)和變量名,使得測試程序與具體儀器無關(guān),當(dāng)需要更換儀器資源時(shí),只需要在資源需求描述ini文件中進(jìn)行注冊,并將類驅(qū)動(dòng)與相應(yīng)的物理驅(qū)動(dòng)重新鏈接即可,實(shí)現(xiàn)了儀器的可互換。
NI公司的LabWindows/CVI以ANSI C為核心,它的集成化開發(fā)平臺(tái)、交互式編程方法、豐富的面板功能以及訪問ini文件、多線程、創(chuàng)建庫文件、DDE動(dòng)態(tài)數(shù)據(jù)交換等高級(jí)編程手段使其自身功能強(qiáng)大,應(yīng)用方便,成為工程技術(shù)開發(fā)人員建立ATS首選的軟件開發(fā)工具[5]。在某大型ATS項(xiàng)目開發(fā)中,除了矩陣開關(guān)之外,使用了單刀單擲開關(guān)SPST、單刀雙擲開關(guān)SPDT、單刀四擲開關(guān)SP4T、單刀六擲開關(guān)SP6T共4類、5個(gè)PXI開關(guān)模塊,它們同屬于Switch開關(guān)類儀器,實(shí)際型號(hào)分別是NI PXI 2568,NI PXI 2566,NI PXI 2594,CETC PXI AV6943,其中 NI PXI 2566模塊兩個(gè),其他模塊各一個(gè)。這些開關(guān)模塊包含的開關(guān)個(gè)數(shù)不相同,不同的開關(guān)模塊提供的軟件接口也不相同。
在熟悉儀器類的共有功能和現(xiàn)有或?qū)砜赡芤玫降膬x器特有功能的基礎(chǔ)上,對(duì)類驅(qū)動(dòng)進(jìn)行統(tǒng)一規(guī)劃、構(gòu)造類公共函數(shù)和類特有函數(shù)是類驅(qū)動(dòng)函數(shù)設(shè)計(jì)的第一步。其中類公共函數(shù)是儀器共有的函數(shù),如初始化、復(fù)位、自檢、關(guān)閉等操作,而類特有函數(shù)是該類儀器特有的函數(shù)。開關(guān)類特有函數(shù)一般有連接、斷開和狀態(tài)查詢3種。
在開關(guān)類驅(qū)動(dòng)函數(shù)的設(shè)計(jì)中,應(yīng)注意參數(shù)數(shù)量和類型盡可能統(tǒng)一、合理、簡單。在盡量覆蓋下層物理驅(qū)動(dòng)參數(shù)的基礎(chǔ)上,有所歸納和提煉,便于測試程序編寫人員對(duì)函數(shù)的理解和TPS調(diào)用。具體到開關(guān)驅(qū)動(dòng),尤其要清楚每個(gè)驅(qū)動(dòng)函數(shù)對(duì)開關(guān)操作后的狀態(tài),即確保開關(guān)狀態(tài)的可控和可觀,使程序?qū)π盘?hào)通道和激勵(lì)通道實(shí)現(xiàn)有效且準(zhǔn)確的控制。
類驅(qū)動(dòng)的公共函數(shù)包括 Init(),Reset(),Selftest(),Close()。通常,儀器供應(yīng)商都提供了相應(yīng)的底層驅(qū)動(dòng)程序,因此這些類公共函數(shù)的實(shí)現(xiàn)比較簡單,直接根據(jù)邏輯儀器名加載相應(yīng)的物理驅(qū)動(dòng)程序即可。但是要注意Init(),Reset()函數(shù)執(zhí)行后儀器的狀態(tài),例如,NI 2594(SP4T)初始化后 ch0通道接通,ch1,ch2,ch3 通道斷開;AV6943(SP6T)初始化后全部通道處于斷開狀態(tài);2566(SPDT)初始化后全部NO(常開端)斷開,NC(常閉端)閉合;2568(SPST)初始化后全部開關(guān)斷開。測試程序的編寫人員必須掌握這些情況。
在類驅(qū)動(dòng)的設(shè)計(jì)中,將重點(diǎn)放在類特有函數(shù)上。對(duì)TPS而言,在該系統(tǒng)中用到的開關(guān)功能包括連接、斷開和狀態(tài)查詢,因此分別設(shè)立Connect,Disconnect,Getstate 3種類特有函數(shù),其定義分別為:
其中,LogiSess是邏輯儀器句柄,Channel是指定的開關(guān),Pol是該開關(guān)的某一通道號(hào),PolConnected返回接通的通道號(hào)。規(guī)定開關(guān)Channel和通道Pol均從整數(shù)0開始編號(hào)。對(duì)于不同類型的開關(guān),其參數(shù)含義如表1。其中,X表示0~N的某一整數(shù),Y表示0~M的某一整數(shù)。SPDT的連接或斷開指的是連接或斷開NO端,其查詢函數(shù)返回1則表明NO處于接通狀態(tài),其NC端的控制狀態(tài)可以完全由NO的控制和狀態(tài)確定。
表1 開關(guān)函數(shù)的參數(shù)范圍
在下層的物理驅(qū)動(dòng)中,則必須根據(jù)類驅(qū)動(dòng)的參數(shù)對(duì)儀器廠商提供的底層驅(qū)動(dòng)進(jìn)行適當(dāng)?shù)姆庋b,通常包括參數(shù)的重新定義、類型轉(zhuǎn)換、統(tǒng)一約定等。例如,儀器供貨商為PXI AV6943模塊提供的底層連接函數(shù)為:AV6943_switchStatus(Handle hHandle,ViUInt32 unSwitchNum,ViUInt32 unStatus,ViString strErrMsg)。hHandle為儀器句柄,unSwitchNum為開關(guān)號(hào),unStatus參數(shù)范圍為 0~6(0:全部斷開;1~6:選通一路),由于儀器句柄、通道參數(shù)類型與相應(yīng)的類驅(qū)動(dòng)函數(shù)均不同,這要在物理驅(qū)動(dòng)函數(shù)中進(jìn)行類型轉(zhuǎn)換。另外,類驅(qū)動(dòng)中通道Pol從0開始編號(hào),必須將unStatus參數(shù)的0~5定義為6個(gè)選通通道,而全部斷開可定義為6,從而保持與類驅(qū)動(dòng)參數(shù)定義的一致性。
以下是AV6943開關(guān)連接函數(shù)的實(shí)現(xiàn)代碼:
基于IVI的儀器類驅(qū)動(dòng)器對(duì)物理儀器功能進(jìn)行了合理的歸納和提煉,為TPS提供統(tǒng)一、易用的軟件接口。物理驅(qū)動(dòng)程序?qū)Φ讓域?qū)動(dòng)程序進(jìn)行適當(dāng)?shù)姆庋b,CVI測試引擎實(shí)現(xiàn)類驅(qū)動(dòng)與物理儀器之間的動(dòng)態(tài)鏈接。當(dāng)增加或更換新的開關(guān)模塊時(shí),測試程序無需更改,只需在程序中添加新模塊對(duì)應(yīng)的物理驅(qū)動(dòng)程序并編譯鏈接即可,其相應(yīng)的類驅(qū)動(dòng)程序也無需改動(dòng),實(shí)現(xiàn)了TPS的硬件無關(guān)性和儀器的可互換[6]。
[1]劉金寧,孟 晨,崔少輝.基于配置文件的虛擬儀器測試軟件設(shè)計(jì)與實(shí)現(xiàn)[J].電力自動(dòng)化設(shè)備,2005(1):50-53.
[2]鐘建林,何 友,任獻(xiàn)彬.基于LabWindows/CVI的ATS軟件框架[J].電子技術(shù)應(yīng)用,2008(4):70-72.
[3]牛雙誠,任獻(xiàn)彬.儀器可互換技術(shù)研究[J].測控技術(shù),2003(2):1-3.
[4]王國華,孟曉風(fēng),趙瑞賢.一種基于開放式系統(tǒng)的儀器互換性實(shí)現(xiàn)[J].中國測試技術(shù),2006,32(4):11-14.
[5]宋宇峰.LabWindows/CVI逐步深入與開發(fā)實(shí)例[M].北京:機(jī)械工業(yè)出版社,2003.
[6]任獻(xiàn)彬,許愛強(qiáng).TPS重用性及互操作性設(shè)計(jì)技術(shù)[J].電子測量技術(shù),2003(2):13-14.