袁 偉,張 帥,姜 毅
(上海無線電設備研究所,上海 200090)
基于LabVIEW的激光引信自動化測試系統軟件設計
袁 偉,張 帥,姜 毅
(上海無線電設備研究所,上海 200090)
在激光引信自動化測試系統中,測試參數繁多,測試過程復雜,基于LabVIEW傳統設計模式的測試軟件在功能擴展、后期維護方面顯現出明顯不足;針對此問題,提出LabVIEW擴展型生產者/消費者設計模式,以測試儀器為基礎,將復雜測試過程分解成多個單一測試步驟,采用面向對象技術降低測試步驟間的耦合度,利用隊列狀態機控制多儀器協同工作與多線程并行執行,實現測試步驟的有效組合,最終完成復雜的測試過程;通過在激光引信自動化測試系統中的運用表明,基于LabVIEW擴展型生產者/消費者模式的測試軟件可擴展性強、維護方便,具有較高的實際運用價值;該設計模式可推廣至其他復雜測控軟件的設計中。
自動測試;LabVIEW;擴展型生產者/消費者模式; 激光引信
LabVIEW是一種圖形化編程應用開發環境,結合標準虛擬儀器測試平臺(如NI公司的PXI平臺),可以實現快速測試系統的搭建,成為了當前測試測量領域重要的軟件開發語言[1-3]。標準狀態機設計模式、簡單生產者/消費者設計模式、簡單主從設計模式等由于便捷性成為了測試軟件主流設計模式[4]。然而,激光引信測試參數繁多,過程復雜,需要多種儀器協同工作,多線程并行執行。基于上述設計模式進行開發,LabVIEW程序后面板占用面積將急劇提升,內部中間變量增加,軟件可維護性降低,魯棒性較差。
本文針對上述傳統設計模式存在的局限性,結合激光引信自動化測試系統實際應用需求,提出了擴展型生產者/消費者設計模式,并基于此模式開發了激光引信自動化測試系統軟件。
激光引信自動化測試系統通過模擬引信工作環境,測試激光引信產品性能。測試系統需要實現以下功能。
1)自動加載產品測試信息;
2)為激光引信產品供電,實時監測產品消耗電流;
3)模擬彈上計算機,與激光引信不間斷通訊,實現目標信息裝訂與引信工作狀態監測;
4)模擬目標回波,可實時對回波信號特性(幅度、延時等)進行調節;
5)實時采集與分析激光引信多種輸出信號,根據分析結果,控制測試流程;
6)將測試數據保存至數據庫,同時自動生成數據測試報表。
功能1)和功能6)與其他功能相對獨立,其余功能之間相互耦合程度高,例如當功能5)中產品輸出信號不正常時,軟件需要在功能2)中切斷產品供電。本文主要關注功能2)至功能5)的實現與有效整合。激光引信自動化測試系統硬件結構圖如圖1所示。自動化測試系統由PXI測控系統、4路程控直流電源、光衰減器、示波器、信號調理與測試接口和顯示單元等組成。PXI測控系統包括萬用表卡、開關矩陣卡、CAN通訊卡、8路485串口通訊卡和多通道數據采集卡。

圖1 激光引信自動化測試系統硬件結構圖
4路程控直流電源為產品提供所需工作電壓;產品加電后,利用CAN通訊卡與RS485串口通訊卡模擬彈上計算機與激光引信的通訊,完成激光引信自檢、參數裝訂和狀態監測等工作;自檢與裝訂成功后,引信響應外界發射地信號驅動內部激光器發射激光,經過光纖與光衰減器組成的光學回路被激光引信接收并處理,此時激光引信將針對回波信號輸出多種不同的信號,這些信號被數據采集卡、示波器實時采集與分析。該過程中,通過改變光衰減器的衰減值,結合激光引信報警信號測試激光引信的靈敏度[2];通過控制激光回波的延時,結合激光引信輸出信號測試激光引信的引戰延時。萬用表卡測試產品靜態電阻,開關矩陣負責完成各個信號間的測試切換。為了保證測試過程中產品的安全,測試軟件需要實時監測電源輸出,同時對引信狀態參數進行不間斷監測,當電源輸出或引信狀態發生異常時,軟件需要立即切斷電源輸出。
由系統測試原理可知,激光引信測試軟件需要協調多種儀器工作,并行執行多個線程,包括多種參數測試與狀態監測,測試過程復雜。傳統測試軟件設計以功能實現為出發點,按照功能開辟線程,劃分軟件模塊,每個模塊中包含多種儀器操作,模塊之間耦合度高,線程的并行執行可能出現不同模塊同時訪問同臺儀器的問題,導致儀器響應出錯,自動化測試無法正常進行。同時,多個模塊的并行執行將導致程序后面板循環數量增加,不同循環之間的數據交換也將增加程序內部中間變量,造成軟件可維護性降低,魯棒性變差。針對上述問題,充分考慮可維護性,本系統軟件設計采用擴展型生產者/消費者設計模式。
生產者/消費者模式是軟件人機交互的重要設計模式之一[5-7],生產者/消費者模式包含一個生產者循環與一個消費者循環,利用基于事件結構的生產者循環響應用戶界面事件,利用消費者循環處理界面事件,循環之間通過隊列進行數據交換。多線程的并行執行需要增加消費者循環數量,各消費者循環之間的數據交換通過增加隊列或增加中間變量實現,而隊列與中間變量的增加,將導致儀器之間協調控制繁瑣,程序紊亂,可維護性差。為了解決上述問題,借鑒MVC模式設計思想[8],將界面層、控制層、模型層解耦,考慮多線程并行執行能力,以測試儀器為出發點,提出擴展型生產者/消費者設計模式。該模式以測試儀器為基礎,為每臺測試儀器開辟獨立線程,將復雜功能測試分解成多個單一測試步驟在不同儀器線程中執行,同時在相關儀器線程中完成狀態參數的監測,頂層程序僅負責測試步驟的分解與測試結果的收集與顯示。分層設計將避免不同線程同時訪問同臺儀器的問題,各個儀器線程間相互獨立,沒有直接的數據交換,程序間的耦合度降低,可維護性提高。圖2給出了該模式的體系結構,從下至上依次為Driver層、Test層、Controller層、UI層。Driver層,為底層儀器控制驅動層,利用VISA函數進行控制指令發送與數據反饋接收,控制儀器單一動作;Test層響應來自Controller層的指令,負責整合儀器動作,完成簡單的單一測試步驟,例如電源的打開與電流的讀取;Controller層負責解析來自UI層的測試指令,將解析后的指令分發給Test層;UI層負責與用戶交互。跨越層級之間無法直接進行數據與信息交換,各層級之間相互獨立,耦合度低。

圖2 擴展型生產者/消費者模式體系結構
如圖2所示,UI層響應用戶界面操作后,將相關測試任務傳遞給Controller層,Controller層將復雜測試任務按照測試儀器進行分解,然后分發給Test層相關的儀器線程,通過調用Driver層的底層vi完成任務。各層級之間均采取雙向通訊機制,保證通訊的正確性。
Driver層為底層儀器控制層,利用VISA函數控制儀器單一動作。擴展型生產者/消費者設計模式以測試儀器為基礎,采用面向對象技術將不同儀器封裝成類,儀器VISA資源名稱與相關測試參數為該儀器類的私有數據,相關動作被封裝成該儀器類的方法。增加儀器動作只需增加類的相應方法,程序可擴展性增強。激光引信自動化測試系統軟件中,將電源、示波器、光衰減器、數據采集卡、通訊卡、萬用表卡、開關矩陣卡等封裝成不同的類,所有儀器動作都被封裝成類的方法。以電源為例,封裝電源類如圖3所示。

圖3 電源類封裝
根據類的私有特性,各臺測試儀器、板卡之間嚴格相互獨立,面向對象技術的引入從最底層降低了測試軟件的耦合度,同時提高了軟件的內聚性與安全性。
Test層需要響應來自Controller層的命令,通過調用Driver層vi執行動作。Test層中,對每一臺儀器開發獨立線程,采用事件驅動的隊列狀態機組織程序,每個線程擁有各自獨立的通訊隊列,該隊列與Controller層雙向通訊,接收命令后引導線程實現狀態切換與動作執行。Test層的執行動作與條件分支一一對應,增加動作,只需增加相應條件分支即可,程序可擴展性增強。同時,利用事件結構中的超時分支可以實現信號的連續采集,采集時間間隔與超時時間對應。Test層工作流程如圖4所示。

圖4 Test層工作流程
以電源線程為例,激光引信自動化測試系統中,需要反復重啟電源,同時需要實時監測電源輸出狀態,保證系統供電正常。程序設計中,超時時間設置為100ms,即電源輸出采樣頻率為10Hz。電源線程具體程序設計如圖5所示。

圖5 電源線程程序框圖
Controller層控制多臺測試儀器協同工作,將來自UI層的復雜測試過程按照測試儀器分解至Test層不同儀器線程中執行。該層通過靜態調用的方法加載運行所有儀器線程,同時獲取所有線程的特定隊列,通過隊列與Test層雙向通訊,程序設計如圖6所示。

圖6 靜態調用多個線程
Controller層將復雜測試過程分解成多個儀器動作的集合,并建立對應測試數組,測試開始時,將測試數組中的所有測試步驟壓入測試隊列,通過元素出隊列將數組元素(測試步驟)在不同分支分發給不同的儀器線程。測試過程復雜度與數組大小對應,更改或擴展測試過程只需更改或擴展其對應數組,避免了復雜測試過程帶來的程序后面板占用面積急劇增加的問題,代碼可維護性得到較大提高。Controller層基于生產者/消費者設計構建,事件結構的生產者循環用于響應UI層的操作。激光引信自動化測試系統Controller層整體程序如圖7所示。

圖7 Controller層程序框圖
UI層負責與用戶交互,通過按鈕、開關和儀器儀表等控件控制系統的運行,并且可以實時、直觀地觀測動態數據的變化[9],需要簡潔直觀。激光引信測試系統UI界面如圖8所示,包括:1)自定義菜單;2)測試進度欄,可以監視測試進程;3)信號采集顯示區;4)測試數據顯示區;5)電流監測區,保證系統供電安全;6)測試選項區。UI界面操作僅僅包括全選、開始與結束按鈕,簡化用戶操作,實現一鍵測試功能。

圖8 激光引信自動化測試軟件主界面
激光引信自動化測試系統主要對產品進行電阻測試、靈敏度測試、開機延時測試以及引戰延時測試,同時為了保證產品安全,需要對產品工作狀態與消耗電流進行監測。
為了避免產品短路,加電前,必須對其進行靜態電阻測試。電阻的自動化測試涉及兩個線程,分別為開關矩陣線程與萬用表線程。開關矩陣實現測試點之間的切換,萬用表卡實現電阻的測量,二者協同工作。在Controller層中,將電阻測試任務分解,建立測試數組,測試時將測試數組中的所有元素(測試步驟)壓入測試隊列,測試步驟在不同分支被傳遞至上述兩個線程。首先通知Test層中的開關矩陣線程完成測試點的硬件連接,收到完成連接的反饋后,通知Test層萬用表卡線程開始電阻測試,測試結果回傳給Controller層繼而在UI界面上顯示,然后通知開關矩陣線程切換測試點,重復上述過程,直至完成所有測試點電阻測試。
靈敏度體現了激光引信產品的探測能力,是重要的技術指標之一。利用光衰減器模擬激光回波在大氣中的傳輸損耗,通過改變光衰減器的衰減值改變激光回波的能量,找出使激光引信報警的臨界光衰減值作為引信的靈敏度值。靈敏度測試涉及電源線程、光衰減器線程與數據采集卡線程。同樣在Controller層中將該任務分解,建立測試數組壓入測試隊列。首先通知Test層中的電源線程打開電源,接收電源開啟成功反饋后,通知光衰減器線程設置初始光衰減值,接收設置完成的反饋后,查看采集卡線程采集的激光引信輸出報警信號,如果報警信號正常輸出,則通知光衰減器線程增加光衰減值,重復上述操作,直至報警信號消失,將此時的光衰減值作為系統的靈敏度值。然后通知光衰減器線程切換光衰減器,重復上述過程,直至完成所有6路窗口的靈敏度測試。
開機延時的設置是為了保證引信在安全距離內處于關機狀態,確保發射裝置與人員的安全性;而引戰延時的設置是為了給目標造成最大殺傷效果,提高引戰配合效率。開機延時與引戰延時測試涉及電源線程、示波器線程與CAN通訊卡線程。測試開始時,在Controller層中將各自測試步驟以測試數組的形式壓入測試隊列。開機延時測試時,首先通知電源線程打開電源,接收到電源開啟反饋后,通知示波器線程切換至單次觸發采集模式,采集引信發射地信號與開機信號,二者的延時即為開機延時。引戰延時測試時,首先通知CAN通訊卡線程完成目標狀態信息(高低溫、目標速度等)的裝訂,裝訂完成后通知電源線程打開電源,接收到電源開啟反饋后,通知示波器線程切換至單次觸發采集模式,采集引信報警信號與引信起爆信號,二者的延時即為引戰延時。隨后,通知CAN通訊卡線程更改目標狀態裝訂信息,重復上述測試過程,直至完成所有目標狀態的引戰延時測試。
測試過程中,為了保證被測產品的安全,需要實時監測引信的工作狀態與電流消耗。利用RS485串口通訊卡模擬彈上計算機與激光引信的通訊,在RS485串口通訊卡線程中按照既定通訊協議實時解析引信上傳的狀態信息,并回傳給UI界面層顯示。電流監測通過Test層中電源線程的超時分支實現,監測采樣頻率為10 Hz。
參數測試與狀態監測過程中,測試結果不合格或激光引信狀態出現異常時,程序將立即通知電源線程切斷電源輸出,隨后清空Controller層測試隊列,終止測試,同時在UI界面中給出相應測試異常提示。
軟件實現一鍵測試功能,只需點擊“開始測試”按鈕,即可完成激光引信的全自動化測試,操作簡單、方便。測試主界面如圖9所示,測試顯示區實時顯示了電阻、開機延時、靈敏度以及引戰延時的測試結果,測試進度欄顯示實時測試進程,人機交互友好。軟件擁有故障定位功能,對產品植入故障時,軟件能準確分析并定位出故障位置。系統目前運行超過一年,在長時間的測試過程中,軟件運行穩定。

圖9 激光引信自動化測試軟件運行界面
抽取一套正常激光引信產品(傳統手動測試方法測試通過)進行測試,部分參數軟件自動測試結果與傳統方法測試結果對比如表1所示。可以看出,軟件自動測試結果準確,與傳統手動測試結果符合較好。

表1 自動測試結果與傳統測試結果對比
從激光引信自動化測試系統實際需求出發,開發了基于擴展型生產者/消費者模式的激光引信自動化測試軟件,引入MVC模式設計思想與面向對象技術,軟件可擴展性、可維護性提高。經測試證明,軟件界面友好、運行穩定、便于維護、可擴展性強。本文提出的擴展型生產者/消費者模式對復雜自動化測控軟件開發具有一定的參考意義,基于此模式的激光引信測試軟件具有較高的實際運用價值。該設計模式可推廣至其他復雜的測控軟件設計中。
[1] 廖開俊,劉志飛.虛擬儀器技術綜述[J]. 國外電子測量技術,2006,25(2):6-8.
[2]吳廣業,趙忠偉,張玉鈞.基于LabVIEW激光引信回波模擬裝置設計[J].光學與光電技術,2012,10(1):59-61.
[3]吳 暉,祁曉野.基于PXI和LabVIEW的通用數據采集系統設計[J].計算機測量與控制,2015,23(5):1686-1688.
[4]陳樹學,劉 萱.LabVIEW寶典[M].北京:電子工業出版社,2011.
[5]黃文君,王華忠,楊 飛.MDPlus實時數據采集系統[J].測控技術,2014,33(2):16-19.
[6]董延軍,李興生.LabVIEW多核編程技術在局域網文件傳輸中的應用[J].測控技術,2014,33(9): 113-115.
[7]馮冬芹,廖智軍,金建祥.基于以太網的工業控制網絡實時通訊模型研究[J].儀器儀表學報,2005,26(9):891-894.
[8]任中方,張 華,閆明松.MVC 模式研究的綜述[J].計算機應用研究,2004,10:1-4.
[9]林若波.基于LabVIEW的電機調速數據采集與處理系統[J].測控技術,2012,31(7):16-19.
Software Design for Laser Fuze Automatic Test System Based on LabVIEW
Yuan Wei, Zhang Shuai, Jiang Yi
(Shanghai Radio Equipment Research Institute, Shanghai 200090,China)
In the laser fuze automatic test system, the test parameters are numerous and the testing process is complex. The test software based on traditional design patterns of LabVIEW is obviously deficient in the scalability and maintainability. In order to solve this problem, an extended producer/consumer design pattern of LabVIEW is presented. Based on the test instrument, the complex test process is decomposed into multiple single test steps. Object-oriented programming is introduced to effectively reduce the coupling between test steps. The queue state machine is used to ensure multi-instrument coordination and multi-threaded parallel execution. In this way, an effective combination of test steps is achieved and the complex test process can be ultimately completed. Software based on the extended producer/consumer model has been applied to laser fuze automatic test system, and its scalability and maintainability are verified. The software has a high practical value. Furthermore, the proposed design pattern can also be used in complex measurement and control software developing.
automatic measurement; LabVIEW; extended producer/consumer model; laser fuze
2017-05-04;
2017-05-19。
袁 偉(1991-),男,湖北隨州人,碩士,主要從事自動化測控技術方向的研究。
1671-4598(2017)12-0125-04
10.16526/j.cnki.11-4762/tp.2017.12.033
TP274
A