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

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

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

表1 各型號(hào)產(chǎn)品測試情況比較列表

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

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

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

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

圖7 混合多線程模式
在進(jìn)行測試時(shí),軟件開辟了獨(dú)立的測試管理引擎和公共數(shù)據(jù)引擎。測試管理引擎通過用戶選擇調(diào)用相應(yīng)的測試單元,每一個(gè)測試單元獨(dú)立運(yùn)行,含有多個(gè)線程,通過上鎖/解鎖等手段避免競爭和資源沖突。數(shù)據(jù)管理引擎用來管理所有公共資源,只有該線程能夠?qū)λ腥肿兞窟M(jìn)行寫操作,對所有采集數(shù)據(jù)進(jìn)行更新,而每一個(gè)測試單元需要訪問數(shù)據(jù)時(shí),只能讀取文件內(nèi)容,而不能對文件進(jìn)行更改,從而保證了數(shù)據(jù)空間的安全。
軟件完成后已在多個(gè)型號(hào)中試運(yùn)行使用,軟件開始運(yùn)行會(huì)提示用戶選擇產(chǎn)品個(gè)數(shù)和產(chǎn)品編號(hào),通過用戶選擇自動(dòng)加載相應(yīng)的測試單元,每一個(gè)測試單元對應(yīng)了一個(gè)飛輪產(chǎn)品,同時(shí)加載時(shí),產(chǎn)品測試并行不沖突。圖8是測試軟件主界面圖,在該界面上,可以控制飛輪的運(yùn)動(dòng)模式,實(shí)時(shí)監(jiān)控飛輪狀態(tài),獲取所有返回信息和處理后的結(jié)果,同時(shí)加載自動(dòng)測試過程。

圖8 測試軟件主界面
飛輪在使用自動(dòng)測試功能時(shí)需要對測試序列進(jìn)行自定義配置,所有測試項(xiàng)目都通過Excel表格編輯進(jìn)行實(shí)現(xiàn),序列編輯完成后可重復(fù)調(diào)用和修改。在自動(dòng)測試開始前,需要填寫環(huán)境信息和產(chǎn)品信息,這些信息將會(huì)和測試結(jié)果一起填入最后的測試報(bào)表中。
飛輪通用測試設(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)目的增加也可以在較短時(shí)間內(nèi)實(shí)現(xiàn),證明了該測試系統(tǒng)及配套軟件良好的易擴(kuò)展性。
本文詳細(xì)介紹了多型號(hào)飛輪通用測試軟件的設(shè)計(jì)方法。從多型號(hào)產(chǎn)品的測試需求出發(fā),通過深入分析多產(chǎn)品間測試業(yè)務(wù)邏輯和參數(shù)屬性的共性與差異,使用抽象工廠設(shè)計(jì)模式、架構(gòu)分層設(shè)計(jì)、配置文件等方法設(shè)計(jì)出了靈活、通用的測試軟件。較以往單一產(chǎn)品的定制軟件相比,該軟件的適應(yīng)性和通用性有明顯提高。經(jīng)過實(shí)際使用,該軟件能夠圓滿兼容多個(gè)型號(hào)的自動(dòng)化測試,從而在很大程度上解決了飛輪測試自動(dòng)化程度不高、人為誤差大等問題, 并滿足了自動(dòng)化、快速測試和長期穩(wěn)定運(yùn)行的要求。通過大量的實(shí)驗(yàn)證明,該系統(tǒng)完全能作為飛輪產(chǎn)線測試設(shè)備進(jìn)行使用。
[1] 張志文.多慣組同步測試系統(tǒng)設(shè)計(jì)[J].國外電子測量技術(shù),2013,32(11):53-56.
[2] 王 爽.生產(chǎn)型自動(dòng)化測試系統(tǒng)的發(fā)展趨勢[J].電子測量技術(shù),2013,36(5):123-125.
[3] 孔維萍.基于TestStand的檢波功率放大器測試軟件的開發(fā)應(yīng)用[J].計(jì)算機(jī)測量與控制,2016,24(11):120-123.
[4] 程 杰.大話設(shè)計(jì)模式[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