魏 許,張怡文
(上海航天控制技術(shù)研究所,上海 201109)
飛輪通用測試軟件平臺的設(shè)計與實(shí)現(xiàn)
魏 許,張怡文
(上海航天控制技術(shù)研究所,上海 201109)
針對原有飛輪測試設(shè)備復(fù)用性差、維護(hù)成本高、難以保證多套產(chǎn)品同步自動測試的問題,設(shè)計開發(fā)了針對多型號飛輪的通用自動化測試系統(tǒng);通過深入分析,提煉出多個產(chǎn)品在測試過程中功能的一致性和接口的差異性,采用分層架構(gòu)、抽象工廠的設(shè)計模式以及配置文件的方法,解決了測試軟件的通用性問題;提出了基于測試流程表的自動測試解決方案,能夠適應(yīng)多種測試流程的要求,擴(kuò)展性強(qiáng);采用混合多線程并行處理架構(gòu),解決了資源沖突,完善了多臺飛輪的并行測試;該測試軟件已在多型號飛輪的批產(chǎn)任務(wù)中使用,穩(wěn)定可靠、適應(yīng)性強(qiáng),提高了設(shè)備使用率三倍以上,大大提升了飛輪批產(chǎn)測試效率。
通用化;抽象工廠;自動測試;并行測試
隨著衛(wèi)星型號產(chǎn)品的不斷發(fā)展,飛輪批產(chǎn)任務(wù)量不斷增大,對飛輪測試設(shè)備的需求異常緊迫。飛輪測試設(shè)備主要用于飛輪整機(jī)的電性能測試,現(xiàn)有飛輪測試臺包括反作用飛輪測試設(shè)備,涵蓋了5 Nms、15 Nms和25 Nms三個型號的飛輪測試,還有小飛輪測試設(shè)備,用于1 Nms和4 Nms兩個型號的飛輪性能測試。目前的飛輪測試設(shè)備都是專用設(shè)備,一種型號測試設(shè)備只能測試對應(yīng)型號的飛輪。為各型號定制的測試軟件,模塊耦合性強(qiáng),復(fù)用性和擴(kuò)展性較差,導(dǎo)致維護(hù)成本和難度都非常大。
為了滿足多個型號飛輪的測試要求,提高測試設(shè)備的利用率、降低維護(hù)成本,同時后期能夠兼容更多飛輪產(chǎn)品的綜合測試擴(kuò)展性要求,亟需研制一臺通用的測試設(shè)備,實(shí)現(xiàn)所有飛輪的一體化測試,更好地保障各型號批產(chǎn)任務(wù)順利進(jìn)行。由于不同型號飛輪之間存在功能的一致性和接口的差異性,因此對這套設(shè)備提出了3個新的要求:
1)通用化程度:現(xiàn)有測試設(shè)備僅能滿足單一型號飛輪的測試,且設(shè)備研制差異較大,沒有統(tǒng)一的測試工序和使用方法。因此,新設(shè)備的研制必須從硬件上兼容多種型號飛輪的測試接口,同時通過軟件將不同的測試信號轉(zhuǎn)換為統(tǒng)一的顯示和存儲格式。
2)自動化程度:現(xiàn)有測試設(shè)備為純手動測試,測試人員需要按照工藝文件和操作要求執(zhí)行相應(yīng)功能,同時手動記錄輸出結(jié)果,完成一次試驗(yàn)耗費(fèi)大量的時間,效率極低。因此迫切需要一種自動測試方法,減少時間和人力,提高測試效率[1]。
3)并行化程度:在原有測試設(shè)備中,硬件上最多允許接入4臺飛輪,但軟件往往只能進(jìn)行單臺飛輪的手動測試,在多臺飛輪進(jìn)行測試時,往往會出現(xiàn)單臺飛輪無法受控或者多臺飛輪之間數(shù)據(jù)相互干擾的情況,因此如何保證多臺飛輪的同步測試是亟待解決的問題。
通用飛輪測試設(shè)備主要由以下幾部分組成:硬件機(jī)箱(供配電、信號轉(zhuǎn)換)、測試電纜、測試計算機(jī)、通用測試軟件等,設(shè)備構(gòu)成如圖1所示。其中,硬件機(jī)箱主要針對28 V電壓降壓采集,電流采集調(diào)理、A/D采集調(diào)理等,其中直流穩(wěn)壓電源集成在采集與控制箱內(nèi)。控制計算機(jī)到采集控制箱的電纜都為通用電纜,與飛輪的型號無關(guān),采集與控制箱到飛輪的電纜由于飛輪型號的接插件與節(jié)點(diǎn)各不相同,電纜也就各不相同。
圖1 飛輪測試設(shè)備構(gòu)成簡圖
設(shè)備通過測試軟件控制飛輪加電和設(shè)定飛輪轉(zhuǎn)速,同時檢測飛輪的實(shí)時狀態(tài),對實(shí)時數(shù)據(jù)進(jìn)行保存,并對飛輪的各項(xiàng)實(shí)時參數(shù)進(jìn)行分析。測試設(shè)備的主要功能如下:
1)具備同時測試4個飛輪的供配電功能;
2)具備實(shí)時采集4個飛輪的電壓電流及各種模擬量的功能;
3)具備實(shí)時采集4個飛輪的轉(zhuǎn)速轉(zhuǎn)向脈沖的功能;
4)具備4路通訊功能(RS422、CAN),能夠同時與4個飛輪進(jìn)行通訊,通過測試4個飛輪的返回數(shù)據(jù)評定飛輪的工作情況;
5)具備數(shù)據(jù)處理功能,包括數(shù)據(jù)的采集、計算、與標(biāo)準(zhǔn)值對比分析、保存、回放、生成報表的能力。
如圖2所示,飛輪測試軟件功能模塊包括登錄界面模塊、開關(guān)飛輪電源模塊、轉(zhuǎn)速轉(zhuǎn)向脈沖采集模塊、電源電壓電流及其他A/D采集模塊、通訊模塊、數(shù)據(jù)存儲模塊、測試數(shù)據(jù)分析處理模塊、界面顯示模塊及報表形成模塊。
圖2 飛輪測試軟件功能模塊
針對通用設(shè)備需要解決的三大問題,本文在軟件方面對具體問題開展深入分析。
對于不同型號的被測產(chǎn)品,測試流程存在著諸多相同的業(yè)務(wù)邏輯,其中各個環(huán)節(jié)的實(shí)現(xiàn)間又存在著一定的差異,如何從各產(chǎn)品測試流程中抽取出相同的業(yè)務(wù)邏輯,同時解耦隔離出不同的動作和屬性成為設(shè)計該通用測試軟件主要解決的問題。表1羅列出了各種型號產(chǎn)品間硬件接口、控制模式和輸入輸出方面的比較情況。
通過比較可以發(fā)現(xiàn),不同型號飛輪之間共用硬件模塊,采用相同的方式進(jìn)行供電、數(shù)據(jù)采集等,僅通訊方式隨著型號不同而有差異;在控制方法上,不同飛輪間有共性也有差異,這些控制模式完全根據(jù)協(xié)議進(jìn)行定制;在輸入輸出方面,飛輪的主要返回信息、返回結(jié)果的數(shù)據(jù)處理方法和存入數(shù)據(jù)庫和報表的內(nèi)容都是一致的,不同點(diǎn)只存在于每一個型號的配置參數(shù)。
對飛輪測試的硬件接口進(jìn)行抽象和剝離,可以得到飛輪測試產(chǎn)品類、硬件接口類關(guān)系的UML類圖,如圖3所示。
目前為止,飛輪測試依然停留在手動測試階段,操作人員根據(jù)工藝規(guī)程操作軟件得到測試結(jié)果,測試時間冗長,操作過程復(fù)雜,大大影響了單機(jī)測試和產(chǎn)品批產(chǎn)的效率。隨著自動化測試技術(shù)的發(fā)展,以軟件為核心的系統(tǒng),能夠自動實(shí)現(xiàn)復(fù)雜測
表1 各型號產(chǎn)品測試情況比較列表
圖3 飛輪測試產(chǎn)品類、接口類UML類圖
試功能,對減少人力、縮短測試時間及降低成本有著明顯的提高[2]。依據(jù)飛輪的特點(diǎn)和測試特性,同時參照測試人員的操作經(jīng)驗(yàn),整理出了多份自動測試流程表,每一份流程表都對應(yīng)著一份飛輪測試報告。測試流程結(jié)束后,提取相應(yīng)處理結(jié)果存入測試報告中,就形成了測試記錄文檔,避免了手動填寫,提高了效率,減少了人為錯誤。圖4截取了15 Nms飛輪交付測試的部分流程表。
圖4 15Nms飛輪交付測試流程
如圖4所示,飛輪可按照表格順序依次執(zhí)行轉(zhuǎn)速指令,在相應(yīng)操作完成后,實(shí)現(xiàn)數(shù)據(jù)回讀和計算,等當(dāng)前步驟執(zhí)行完畢,自動產(chǎn)生表格中要求的處理結(jié)果。
并行測試即使用單臺測試設(shè)備支持多臺產(chǎn)品的同時測試。并行測試在產(chǎn)線測試中是一個非常重要的特性,在不增加或者增加很少成本投入的情況下大大提高測試效率,從而滿足產(chǎn)能要求。引入并行測試將帶來多方面的問題,包括多線程管理、數(shù)據(jù)安全以及避免競爭和資源沖突[3]。現(xiàn)有飛輪測試設(shè)備在硬件上是支持多產(chǎn)品測試的,但同時測試過程中,數(shù)據(jù)往往會相互影響,這是典型的沒有處理好數(shù)據(jù)安全和資源沖突的問題。
針對現(xiàn)存的三大問題,本文給出了以下解決方案。
該通用測試平臺需要整合各型號間相同的業(yè)務(wù)邏輯,對于不同的邏輯需采用分層架構(gòu)和合適的設(shè)計模式進(jìn)行抽象層隔離,從而在具體的繼承接口中實(shí)現(xiàn)各自特定的業(yè)務(wù)代碼。同時,需要采用基于配置文件的方式來解耦型號產(chǎn)品間的不同屬性,從而解除業(yè)務(wù)邏輯層與特征屬性間的依賴關(guān)系。以上都是該通用軟件在做通用化設(shè)計時需要解決的問題。
3.1.1 基于抽象工廠的程序架構(gòu)
為了達(dá)到通用化的目的,軟件設(shè)計以相同的業(yè)務(wù)邏輯模塊可復(fù)用為原則,提高代碼的適應(yīng)性和通用性為目標(biāo)。軟件將所有產(chǎn)品間相同的測試業(yè)務(wù)邏輯和流程整合到主體測試軟件中,同時將和特定產(chǎn)品有依賴關(guān)系的業(yè)務(wù)邏輯與主體軟件隔離,將這部分邏輯代碼委托給具體的產(chǎn)品類來實(shí)現(xiàn)。為了實(shí)現(xiàn)這些功能,本軟件運(yùn)用了分層架構(gòu)和多種設(shè)計模式來解決。
首先針對多個型號之間硬件接口的調(diào)用問題,本文借鑒了抽象工廠模式[4],這樣做最大的好處就是易于交換產(chǎn)品系列,只需要改變具體工廠就可以使用不同的產(chǎn)品配置。第二大好處就是將具體的業(yè)務(wù)代碼和主程序分離,主程序通過它們的抽象接口操縱實(shí)例,產(chǎn)品的具體類名也與具體工廠的實(shí)現(xiàn)分離,不會出現(xiàn)在客戶代碼中。在測試軟件中,將飛輪作為基類,工廠類(IFactory)包含1 Nms、4 Nms、5 Nms、15 Nms和25 Nms等具體產(chǎn)品工廠,接口類(Interface)包括了CAN、RS422、AD、Pulse等具體業(yè)務(wù)接口,實(shí)例化工廠后,具體業(yè)務(wù)代碼也就確定了。整個測試軟件的架構(gòu)設(shè)計如圖5所示。
圖5 測試軟件架構(gòu)圖
3.1.2 基于配置文件的參數(shù)輸入
產(chǎn)品測試過程中的相同業(yè)務(wù)邏輯、測試流程管理、資源管理等,均固化在主體程序中,但不同型號的輸入?yún)?shù)中,絕大多數(shù)是不同的。通過研究原有測試設(shè)備軟件發(fā)現(xiàn),無論是模型參數(shù)、解析協(xié)議、硬件參數(shù)等都體現(xiàn)在原代碼中,這樣的做法會帶來兩個問題:1)不同產(chǎn)品的測試程序很難統(tǒng)一,由于參數(shù)在原代碼中相對分散,無法對代碼進(jìn)行模塊解耦、整合;2)維護(hù)代碼成本相當(dāng)大,即使很簡單的參數(shù)修改亦需要閱讀源程序、逐一修改變量值、解決聯(lián)動依賴、編譯等。這些問題都導(dǎo)致后期維護(hù)工作越來越難,對于新型號產(chǎn)品的測試功能擴(kuò)展更加困難。
本文研究發(fā)現(xiàn),這些產(chǎn)品間、測試項(xiàng)目間、測試步間存在差異的參數(shù)無外乎幾個層次關(guān)系:與硬件資源相關(guān)聯(lián)的參數(shù)屬性,如硬件板卡的配置信息、采集信號的修正比例系數(shù)等;與被測產(chǎn)品相關(guān)聯(lián)的特征屬性,如模型參數(shù)、試驗(yàn)環(huán)境信息、判讀指標(biāo)、時間點(diǎn)等;與測試項(xiàng)目關(guān)聯(lián)的特征屬性,如存儲文件名稱、格式參數(shù)等。由于屬性信息不會影響業(yè)務(wù)邏輯的實(shí)現(xiàn)只會影響其執(zhí)行結(jié)果,因此這部分差異可以從程序中隔離出來以配置文件的形式在程序執(zhí)行過程中訪問。這種屬性基于配置文件、屬性和行為分離的方法正是本程序?qū)崿F(xiàn)通用化、提高適應(yīng)性的另一種重要方法。
基于以上的分析,本軟件將不依賴于被測產(chǎn)品和測試項(xiàng)目的屬性作為公共屬性,放置于上層目錄中供主程序訪問;將依賴于特定產(chǎn)品的參數(shù)屬性(如串口配置、測試分辨率、模型參數(shù)等)從相應(yīng)業(yè)務(wù)代碼中分離出來,放置于單個產(chǎn)品的配置文件中。這種設(shè)計方式實(shí)現(xiàn)了公共屬性與產(chǎn)品屬性的隔離,從而使得軟件架構(gòu)更加靈活。
在上一節(jié)分析中發(fā)現(xiàn),飛輪測試可以按照指定流程自動完成整個測試過程,不需要工作人員一直對測試過程進(jìn)行監(jiān)測,測試系統(tǒng)會按照設(shè)定好的程序,自動完成整個測試,完整的測試流程如圖6所示。
圖6 自動測試流程圖
軟件實(shí)現(xiàn)時考慮采用Excel配置表的方式解決自動流程問題。首先,為每一個自動測試流程編輯測試列表,列表格式為Excel,列表中的測試信息都可以供用戶進(jìn)行編輯和更改;然后,當(dāng)用戶選好相應(yīng)的測試列表,程序自動加載測試項(xiàng)目,并按照順序依次進(jìn)行,控制飛輪執(zhí)行以及采集所有數(shù)據(jù)進(jìn)行處理、保存和顯示等,程序運(yùn)行過程中無需任何手動操作;最后,測試完成后,會自動提示用戶進(jìn)行后續(xù)操作。
本軟件最多支持四臺飛輪的同時測試,單臺飛輪擁有各自的獨(dú)立資源,如單獨(dú)的通信接口(RS422或CAN),獨(dú)立的數(shù)據(jù)處理、保存和顯示;也共享測試設(shè)備的其他硬件資源,如公共的AD采集卡和脈沖采集卡等。因此本文采用了經(jīng)典的混合多線程并行處理架構(gòu),以提高程序的并行處理能力并充分利用多核處理器的硬件資源。圖7為測試軟件中使用的混合多線程模式:
圖7 混合多線程模式
在進(jìn)行測試時,軟件開辟了獨(dú)立的測試管理引擎和公共數(shù)據(jù)引擎。測試管理引擎通過用戶選擇調(diào)用相應(yīng)的測試單元,每一個測試單元獨(dú)立運(yùn)行,含有多個線程,通過上鎖/解鎖等手段避免競爭和資源沖突。數(shù)據(jù)管理引擎用來管理所有公共資源,只有該線程能夠?qū)λ腥肿兞窟M(jìn)行寫操作,對所有采集數(shù)據(jù)進(jìn)行更新,而每一個測試單元需要訪問數(shù)據(jù)時,只能讀取文件內(nèi)容,而不能對文件進(jìn)行更改,從而保證了數(shù)據(jù)空間的安全。
軟件完成后已在多個型號中試運(yùn)行使用,軟件開始運(yùn)行會提示用戶選擇產(chǎn)品個數(shù)和產(chǎn)品編號,通過用戶選擇自動加載相應(yīng)的測試單元,每一個測試單元對應(yīng)了一個飛輪產(chǎn)品,同時加載時,產(chǎn)品測試并行不沖突。圖8是測試軟件主界面圖,在該界面上,可以控制飛輪的運(yùn)動模式,實(shí)時監(jiān)控飛輪狀態(tài),獲取所有返回信息和處理后的結(jié)果,同時加載自動測試過程。
圖8 測試軟件主界面
飛輪在使用自動測試功能時需要對測試序列進(jìn)行自定義配置,所有測試項(xiàng)目都通過Excel表格編輯進(jìn)行實(shí)現(xiàn),序列編輯完成后可重復(fù)調(diào)用和修改。在自動測試開始前,需要填寫環(huán)境信息和產(chǎn)品信息,這些信息將會和測試結(jié)果一起填入最后的測試報表中。
飛輪通用測試設(shè)備及配套測試軟件交付用戶使用至今,分別完成了15 Nms、25 Nms等產(chǎn)品批產(chǎn)驗(yàn)收測試任務(wù)。軟件性能穩(wěn)定可靠、適應(yīng)性強(qiáng)、維護(hù)方便。測試系統(tǒng)及軟件實(shí)現(xiàn)了產(chǎn)品的通用化測試要求,提高了設(shè)備利用率三倍以上。從交付驗(yàn)收后進(jìn)行的維護(hù)來看,局部需求變更引起的代碼維護(hù)量很小,體現(xiàn)了該通用軟件良好的易維護(hù)性。另外,從擴(kuò)展性來看,設(shè)備對于硬件接口和測試項(xiàng)目的增加也可以在較短時間內(nèi)實(shí)現(xiàn),證明了該測試系統(tǒng)及配套軟件良好的易擴(kuò)展性。
本文詳細(xì)介紹了多型號飛輪通用測試軟件的設(shè)計方法。從多型號產(chǎn)品的測試需求出發(fā),通過深入分析多產(chǎn)品間測試業(yè)務(wù)邏輯和參數(shù)屬性的共性與差異,使用抽象工廠設(shè)計模式、架構(gòu)分層設(shè)計、配置文件等方法設(shè)計出了靈活、通用的測試軟件。較以往單一產(chǎn)品的定制軟件相比,該軟件的適應(yīng)性和通用性有明顯提高。經(jīng)過實(shí)際使用,該軟件能夠圓滿兼容多個型號的自動化測試,從而在很大程度上解決了飛輪測試自動化程度不高、人為誤差大等問題, 并滿足了自動化、快速測試和長期穩(wěn)定運(yùn)行的要求。通過大量的實(shí)驗(yàn)證明,該系統(tǒng)完全能作為飛輪產(chǎn)線測試設(shè)備進(jìn)行使用。
[1] 張志文.多慣組同步測試系統(tǒng)設(shè)計[J].國外電子測量技術(shù),2013,32(11):53-56.
[2] 王 爽.生產(chǎn)型自動化測試系統(tǒng)的發(fā)展趨勢[J].電子測量技術(shù),2013,36(5):123-125.
[3] 孔維萍.基于TestStand的檢波功率放大器測試軟件的開發(fā)應(yīng)用[J].計算機(jī)測量與控制,2016,24(11):120-123.
[4] 程 杰.大話設(shè)計模式[M].北京:清華大學(xué)出版社,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-),男,江蘇丹陽人,碩士,工程師,主要從事運(yùn)載、戰(zhàn)術(shù)、衛(wèi)星等領(lǐng)域的測試設(shè)備軟件研發(fā)方向的研究。
1671-4598(2017)12-0129-04
10.16526/j.cnki.11-4762/tp.2017.12.034
TP3
A