魏 許,張怡文
(上海航天控制技術研究所,上海 201109)
飛輪通用測試軟件平臺的設計與實現
魏 許,張怡文
(上海航天控制技術研究所,上海 201109)
針對原有飛輪測試設備復用性差、維護成本高、難以保證多套產品同步自動測試的問題,設計開發了針對多型號飛輪的通用自動化測試系統;通過深入分析,提煉出多個產品在測試過程中功能的一致性和接口的差異性,采用分層架構、抽象工廠的設計模式以及配置文件的方法,解決了測試軟件的通用性問題;提出了基于測試流程表的自動測試解決方案,能夠適應多種測試流程的要求,擴展性強;采用混合多線程并行處理架構,解決了資源沖突,完善了多臺飛輪的并行測試;該測試軟件已在多型號飛輪的批產任務中使用,穩定可靠、適應性強,提高了設備使用率三倍以上,大大提升了飛輪批產測試效率。
通用化;抽象工廠;自動測試;并行測試
隨著衛星型號產品的不斷發展,飛輪批產任務量不斷增大,對飛輪測試設備的需求異常緊迫。飛輪測試設備主要用于飛輪整機的電性能測試,現有飛輪測試臺包括反作用飛輪測試設備,涵蓋了5 Nms、15 Nms和25 Nms三個型號的飛輪測試,還有小飛輪測試設備,用于1 Nms和4 Nms兩個型號的飛輪性能測試。目前的飛輪測試設備都是專用設備,一種型號測試設備只能測試對應型號的飛輪。為各型號定制的測試軟件,模塊耦合性強,復用性和擴展性較差,導致維護成本和難度都非常大。
為了滿足多個型號飛輪的測試要求,提高測試設備的利用率、降低維護成本,同時后期能夠兼容更多飛輪產品的綜合測試擴展性要求,亟需研制一臺通用的測試設備,實現所有飛輪的一體化測試,更好地保障各型號批產任務順利進行。由于不同型號飛輪之間存在功能的一致性和接口的差異性,因此對這套設備提出了3個新的要求:
1)通用化程度:現有測試設備僅能滿足單一型號飛輪的測試,且設備研制差異較大,沒有統一的測試工序和使用方法。因此,新設備的研制必須從硬件上兼容多種型號飛輪的測試接口,同時通過軟件將不同的測試信號轉換為統一的顯示和存儲格式。
2)自動化程度:現有測試設備為純手動測試,測試人員需要按照工藝文件和操作要求執行相應功能,同時手動記錄輸出結果,完成一次試驗耗費大量的時間,效率極低。因此迫切需要一種自動測試方法,減少時間和人力,提高測試效率[1]。
3)并行化程度:在原有測試設備中,硬件上最多允許接入4臺飛輪,但軟件往往只能進行單臺飛輪的手動測試,在多臺飛輪進行測試時,往往會出現單臺飛輪無法受控或者多臺飛輪之間數據相互干擾的情況,因此如何保證多臺飛輪的同步測試是亟待解決的問題。
通用飛輪測試設備主要由以下幾部分組成:硬件機箱(供配電、信號轉換)、測試電纜、測試計算機、通用測試軟件等,設備構成如圖1所示。其中,硬件機箱主要針對28 V電壓降壓采集,電流采集調理、A/D采集調理等,其中直流穩壓電源集成在采集與控制箱內。控制計算機到采集控制箱的電纜都為通用電纜,與飛輪的型號無關,采集與控制箱到飛輪的電纜由于飛輪型號的接插件與節點各不相同,電纜也就各不相同。

圖1 飛輪測試設備構成簡圖
設備通過測試軟件控制飛輪加電和設定飛輪轉速,同時檢測飛輪的實時狀態,對實時數據進行保存,并對飛輪的各項實時參數進行分析。測試設備的主要功能如下:
1)具備同時測試4個飛輪的供配電功能;
2)具備實時采集4個飛輪的電壓電流及各種模擬量的功能;
3)具備實時采集4個飛輪的轉速轉向脈沖的功能;
4)具備4路通訊功能(RS422、CAN),能夠同時與4個飛輪進行通訊,通過測試4個飛輪的返回數據評定飛輪的工作情況;
5)具備數據處理功能,包括數據的采集、計算、與標準值對比分析、保存、回放、生成報表的能力。
如圖2所示,飛輪測試軟件功能模塊包括登錄界面模塊、開關飛輪電源模塊、轉速轉向脈沖采集模塊、電源電壓電流及其他A/D采集模塊、通訊模塊、數據存儲模塊、測試數據分析處理模塊、界面顯示模塊及報表形成模塊。

圖2 飛輪測試軟件功能模塊
針對通用設備需要解決的三大問題,本文在軟件方面對具體問題開展深入分析。
對于不同型號的被測產品,測試流程存在著諸多相同的業務邏輯,其中各個環節的實現間又存在著一定的差異,如何從各產品測試流程中抽取出相同的業務邏輯,同時解耦隔離出不同的動作和屬性成為設計該通用測試軟件主要解決的問題。表1羅列出了各種型號產品間硬件接口、控制模式和輸入輸出方面的比較情況。
通過比較可以發現,不同型號飛輪之間共用硬件模塊,采用相同的方式進行供電、數據采集等,僅通訊方式隨著型號不同而有差異;在控制方法上,不同飛輪間有共性也有差異,這些控制模式完全根據協議進行定制;在輸入輸出方面,飛輪的主要返回信息、返回結果的數據處理方法和存入數據庫和報表的內容都是一致的,不同點只存在于每一個型號的配置參數。
對飛輪測試的硬件接口進行抽象和剝離,可以得到飛輪測試產品類、硬件接口類關系的UML類圖,如圖3所示。
目前為止,飛輪測試依然停留在手動測試階段,操作人員根據工藝規程操作軟件得到測試結果,測試時間冗長,操作過程復雜,大大影響了單機測試和產品批產的效率。隨著自動化測試技術的發展,以軟件為核心的系統,能夠自動實現復雜測

表1 各型號產品測試情況比較列表

圖3 飛輪測試產品類、接口類UML類圖
試功能,對減少人力、縮短測試時間及降低成本有著明顯的提高[2]。依據飛輪的特點和測試特性,同時參照測試人員的操作經驗,整理出了多份自動測試流程表,每一份流程表都對應著一份飛輪測試報告。測試流程結束后,提取相應處理結果存入測試報告中,就形成了測試記錄文檔,避免了手動填寫,提高了效率,減少了人為錯誤。圖4截取了15 Nms飛輪交付測試的部分流程表。

圖4 15Nms飛輪交付測試流程
如圖4所示,飛輪可按照表格順序依次執行轉速指令,在相應操作完成后,實現數據回讀和計算,等當前步驟執行完畢,自動產生表格中要求的處理結果。
并行測試即使用單臺測試設備支持多臺產品的同時測試。并行測試在產線測試中是一個非常重要的特性,在不增加或者增加很少成本投入的情況下大大提高測試效率,從而滿足產能要求。引入并行測試將帶來多方面的問題,包括多線程管理、數據安全以及避免競爭和資源沖突[3]。現有飛輪測試設備在硬件上是支持多產品測試的,但同時測試過程中,數據往往會相互影響,這是典型的沒有處理好數據安全和資源沖突的問題。
針對現存的三大問題,本文給出了以下解決方案。
該通用測試平臺需要整合各型號間相同的業務邏輯,對于不同的邏輯需采用分層架構和合適的設計模式進行抽象層隔離,從而在具體的繼承接口中實現各自特定的業務代碼。同時,需要采用基于配置文件的方式來解耦型號產品間的不同屬性,從而解除業務邏輯層與特征屬性間的依賴關系。以上都是該通用軟件在做通用化設計時需要解決的問題。
3.1.1 基于抽象工廠的程序架構
為了達到通用化的目的,軟件設計以相同的業務邏輯模塊可復用為原則,提高代碼的適應性和通用性為目標。軟件將所有產品間相同的測試業務邏輯和流程整合到主體測試軟件中,同時將和特定產品有依賴關系的業務邏輯與主體軟件隔離,將這部分邏輯代碼委托給具體的產品類來實現。為了實現這些功能,本軟件運用了分層架構和多種設計模式來解決。
首先針對多個型號之間硬件接口的調用問題,本文借鑒了抽象工廠模式[4],這樣做最大的好處就是易于交換產品系列,只需要改變具體工廠就可以使用不同的產品配置。第二大好處就是將具體的業務代碼和主程序分離,主程序通過它們的抽象接口操縱實例,產品的具體類名也與具體工廠的實現分離,不會出現在客戶代碼中。在測試軟件中,將飛輪作為基類,工廠類(IFactory)包含1 Nms、4 Nms、5 Nms、15 Nms和25 Nms等具體產品工廠,接口類(Interface)包括了CAN、RS422、AD、Pulse等具體業務接口,實例化工廠后,具體業務代碼也就確定了。整個測試軟件的架構設計如圖5所示。

圖5 測試軟件架構圖
3.1.2 基于配置文件的參數輸入
產品測試過程中的相同業務邏輯、測試流程管理、資源管理等,均固化在主體程序中,但不同型號的輸入參數中,絕大多數是不同的。通過研究原有測試設備軟件發現,無論是模型參數、解析協議、硬件參數等都體現在原代碼中,這樣的做法會帶來兩個問題:1)不同產品的測試程序很難統一,由于參數在原代碼中相對分散,無法對代碼進行模塊解耦、整合;2)維護代碼成本相當大,即使很簡單的參數修改亦需要閱讀源程序、逐一修改變量值、解決聯動依賴、編譯等。這些問題都導致后期維護工作越來越難,對于新型號產品的測試功能擴展更加困難。
本文研究發現,這些產品間、測試項目間、測試步間存在差異的參數無外乎幾個層次關系:與硬件資源相關聯的參數屬性,如硬件板卡的配置信息、采集信號的修正比例系數等;與被測產品相關聯的特征屬性,如模型參數、試驗環境信息、判讀指標、時間點等;與測試項目關聯的特征屬性,如存儲文件名稱、格式參數等。由于屬性信息不會影響業務邏輯的實現只會影響其執行結果,因此這部分差異可以從程序中隔離出來以配置文件的形式在程序執行過程中訪問。這種屬性基于配置文件、屬性和行為分離的方法正是本程序實現通用化、提高適應性的另一種重要方法。
基于以上的分析,本軟件將不依賴于被測產品和測試項目的屬性作為公共屬性,放置于上層目錄中供主程序訪問;將依賴于特定產品的參數屬性(如串口配置、測試分辨率、模型參數等)從相應業務代碼中分離出來,放置于單個產品的配置文件中。這種設計方式實現了公共屬性與產品屬性的隔離,從而使得軟件架構更加靈活。
在上一節分析中發現,飛輪測試可以按照指定流程自動完成整個測試過程,不需要工作人員一直對測試過程進行監測,測試系統會按照設定好的程序,自動完成整個測試,完整的測試流程如圖6所示。

圖6 自動測試流程圖
軟件實現時考慮采用Excel配置表的方式解決自動流程問題。首先,為每一個自動測試流程編輯測試列表,列表格式為Excel,列表中的測試信息都可以供用戶進行編輯和更改;然后,當用戶選好相應的測試列表,程序自動加載測試項目,并按照順序依次進行,控制飛輪執行以及采集所有數據進行處理、保存和顯示等,程序運行過程中無需任何手動操作;最后,測試完成后,會自動提示用戶進行后續操作。
本軟件最多支持四臺飛輪的同時測試,單臺飛輪擁有各自的獨立資源,如單獨的通信接口(RS422或CAN),獨立的數據處理、保存和顯示;也共享測試設備的其他硬件資源,如公共的AD采集卡和脈沖采集卡等。因此本文采用了經典的混合多線程并行處理架構,以提高程序的并行處理能力并充分利用多核處理器的硬件資源。圖7為測試軟件中使用的混合多線程模式:

圖7 混合多線程模式
在進行測試時,軟件開辟了獨立的測試管理引擎和公共數據引擎。測試管理引擎通過用戶選擇調用相應的測試單元,每一個測試單元獨立運行,含有多個線程,通過上鎖/解鎖等手段避免競爭和資源沖突。數據管理引擎用來管理所有公共資源,只有該線程能夠對所有全局變量進行寫操作,對所有采集數據進行更新,而每一個測試單元需要訪問數據時,只能讀取文件內容,而不能對文件進行更改,從而保證了數據空間的安全。
軟件完成后已在多個型號中試運行使用,軟件開始運行會提示用戶選擇產品個數和產品編號,通過用戶選擇自動加載相應的測試單元,每一個測試單元對應了一個飛輪產品,同時加載時,產品測試并行不沖突。圖8是測試軟件主界面圖,在該界面上,可以控制飛輪的運動模式,實時監控飛輪狀態,獲取所有返回信息和處理后的結果,同時加載自動測試過程。

圖8 測試軟件主界面
飛輪在使用自動測試功能時需要對測試序列進行自定義配置,所有測試項目都通過Excel表格編輯進行實現,序列編輯完成后可重復調用和修改。在自動測試開始前,需要填寫環境信息和產品信息,這些信息將會和測試結果一起填入最后的測試報表中。
飛輪通用測試設備及配套測試軟件交付用戶使用至今,分別完成了15 Nms、25 Nms等產品批產驗收測試任務。軟件性能穩定可靠、適應性強、維護方便。測試系統及軟件實現了產品的通用化測試要求,提高了設備利用率三倍以上。從交付驗收后進行的維護來看,局部需求變更引起的代碼維護量很小,體現了該通用軟件良好的易維護性。另外,從擴展性來看,設備對于硬件接口和測試項目的增加也可以在較短時間內實現,證明了該測試系統及配套軟件良好的易擴展性。
本文詳細介紹了多型號飛輪通用測試軟件的設計方法。從多型號產品的測試需求出發,通過深入分析多產品間測試業務邏輯和參數屬性的共性與差異,使用抽象工廠設計模式、架構分層設計、配置文件等方法設計出了靈活、通用的測試軟件。較以往單一產品的定制軟件相比,該軟件的適應性和通用性有明顯提高。經過實際使用,該軟件能夠圓滿兼容多個型號的自動化測試,從而在很大程度上解決了飛輪測試自動化程度不高、人為誤差大等問題, 并滿足了自動化、快速測試和長期穩定運行的要求。通過大量的實驗證明,該系統完全能作為飛輪產線測試設備進行使用。
[1] 張志文.多慣組同步測試系統設計[J].國外電子測量技術,2013,32(11):53-56.
[2] 王 爽.生產型自動化測試系統的發展趨勢[J].電子測量技術,2013,36(5):123-125.
[3] 孔維萍.基于TestStand的檢波功率放大器測試軟件的開發應用[J].計算機測量與控制,2016,24(11):120-123.
[4] 程 杰.大話設計模式[M].北京:清華大學出版社,2012.
Design and Realization of Universal Testing Software Platform for Flywheel
Wei Xu,Zhang Yiwen
(Shanghai Aerospace Control Technology Institute,Shanghai 201109,China)
According to the fact that original testing equipments for flywheel are low reusability, high maintenance and unable to realize synchronous automatic test, the universal testing system for series kind of flywheel is designed. By analyzing the similarities of function and differences of interface between multiple products in the testing process, the testing software takes advantage of hierarchical structure, abstract factory design pattern and configuration files to improve the adaptability and versatility which accommodate different types of flywheel. Based on test flow table, the auto test scheme is raised to adapt multiple requests for testing. With multi-threaded parallel processing architecture, the resource conflict is solved and consummate parallel test of multiple flywheels. At present, the universal testing software has been widely used in the flywheel production with stable performance and high flexibility. The usage of testing equipment has increased by three times and the test efficiency of flywheel has been greatly improved.
universal; abstract factory; automatic test; parallel test
2017-06-13;
2017-07-08。
魏 許(1987-),男,江蘇丹陽人,碩士,工程師,主要從事運載、戰術、衛星等領域的測試設備軟件研發方向的研究。
1671-4598(2017)12-0129-04
10.16526/j.cnki.11-4762/tp.2017.12.034
TP3
A