喬伯真, 柳亞冰
中國航發(fā)控制系統(tǒng)研究所,江蘇 無錫 214063)
在航空發(fā)動機(jī)全權(quán)限數(shù)字電子控制(Full Authority Digital Electronic Control,F(xiàn)ADEC)系統(tǒng)中,數(shù)字電子控制器及其搭載的控制軟件是組成這個安全關(guān)鍵系統(tǒng)的核心成附件。為證明其設(shè)計(jì)符合性,針對電子控制器和控制軟件開展子系統(tǒng)級測試驗(yàn)證成為FADEC系統(tǒng)研制過程中的關(guān)鍵環(huán)節(jié),一種有效的測試手段就是充分開展硬件在環(huán)(Hardware-in-Loop,HIL)仿真,這在航空航天、汽車電子和醫(yī)療設(shè)備等領(lǐng)域的系統(tǒng)研發(fā)工作中已被廣泛應(yīng)用。在國內(nèi)航空發(fā)動機(jī)FADEC系統(tǒng)工程研制領(lǐng)域,也已在控制軟件測試和電子子系統(tǒng)集成測試過程中廣泛采用了HIL閉環(huán)仿真驗(yàn)證這一測試手段。
電子控制器作為控制系統(tǒng)的核心硬件產(chǎn)品,需要開展可靠性試驗(yàn),對產(chǎn)品的可靠性進(jìn)行驗(yàn)證。根據(jù)《可靠性鑒定和驗(yàn)收試驗(yàn)》(GJB 899A—2009)的規(guī)定,機(jī)載電子設(shè)備的可靠性測試驗(yàn)證方式已逐步轉(zhuǎn)向含控制軟件的系統(tǒng)級測試[1],即應(yīng)用HIL仿真測試手段模擬電子控制器在典型飛行任務(wù)剖面下的輸入輸出信號,使電子控制器承受典型的運(yùn)行負(fù)荷,并與環(huán)境載荷的模擬過程同步進(jìn)行,從而在系統(tǒng)/子系統(tǒng)層面更真實(shí)有效地驗(yàn)證電子設(shè)備的可靠性。
可靠性試驗(yàn)是按特定的環(huán)境應(yīng)力載荷譜和典型飛行任務(wù)HIL仿真譜執(zhí)行的循環(huán)測試,隨著控制系統(tǒng)研制過程的推進(jìn),單次試驗(yàn)時間從幾百小時到數(shù)千小時不等,因此測試自動化相關(guān)技術(shù)對解決可靠性試驗(yàn)的循環(huán)操作顯得尤為重要。目前環(huán)境應(yīng)力載荷可以通過環(huán)境模擬設(shè)備實(shí)現(xiàn)自動操作,HIL仿真的自動化技術(shù)取決于所用測試設(shè)備的軟硬件環(huán)境,沒有統(tǒng)一的、標(biāo)準(zhǔn)的技術(shù)途徑。黃奕丹[2]介紹了自動化技術(shù)在航空電子設(shè)備自動測試過程中應(yīng)用的現(xiàn)狀;馮亞冬[3]介紹了自動化技術(shù)在FADEC控制軟件適航工作中的應(yīng)用情況;黃勝龍[4]以MATLAB/Simulink的xPC Target構(gòu)建汽車電子控制單元(Electronic Control Unit,ECU)的HIL仿真環(huán)境,用Python語言來編寫自動化測試程序;肖前遠(yuǎn)[5]以Python腳本語言為基礎(chǔ),通過擴(kuò)展Python模塊實(shí)現(xiàn)全數(shù)字仿真環(huán)境中的自動測試腳本。
本文以電子控制器可靠性試驗(yàn)任務(wù)要求為牽引,圍繞測試任務(wù)譜的特點(diǎn),利用基于Python的關(guān)鍵字驅(qū)動測試自動化框架Robot Framework作為自動化使能工具,構(gòu)建HIL仿真自動化技術(shù)方法,從自動腳本分層構(gòu)建、執(zhí)行時間顯形、工具軟件自動整合、自動執(zhí)行流程構(gòu)建等方面,設(shè)計(jì)了適用于可靠性試驗(yàn)任務(wù)譜的仿真自動化技術(shù)方案,并針對以下兩個目標(biāo)開展技術(shù)創(chuàng)新:
① 降低測試任務(wù)譜時間線設(shè)計(jì)實(shí)現(xiàn)和執(zhí)行時間誤差優(yōu)化的難度;
② 實(shí)現(xiàn)非自動化軟件工具的自動化整合。
通過某型FADEC控制器的可靠性摸底試驗(yàn)進(jìn)行了技術(shù)驗(yàn)證,證明所提出方法的試驗(yàn)效率和系統(tǒng)驗(yàn)證的有效性均顯著提高。
本文以某平臺級地面維護(hù)設(shè)備(Ground Maintenance Equipment,GME)作為HIL仿真試驗(yàn)器,該設(shè)備的上位機(jī)利用自動化中控軟件作為自動流程的控制中樞,通過用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)通信形式的自動化接口或批處理調(diào)用方式執(zhí)行自動腳本指令。
GME設(shè)備由3個防振便攜式小型機(jī)柜組成,機(jī)柜內(nèi)安裝有程控電源、綜合測控下位PXI計(jì)算機(jī)、主控PXI計(jì)算機(jī)、信號調(diào)理箱、信號斷連箱和控制器接口適配裝置等設(shè)備,各設(shè)備之間通過電纜連接,由程控電源供電,電子控制器通過電纜和接口適配裝置與GME設(shè)備連接,使控制器和仿真試驗(yàn)器在硬件鏈路層面實(shí)現(xiàn)閉環(huán)。
綜合測控下位PXI計(jì)算機(jī)通過信號負(fù)載箱接收電子控制器的輸出信號,提供給執(zhí)行機(jī)構(gòu)模型和發(fā)動機(jī)模型程序,在LabVIEW RT實(shí)時環(huán)境下進(jìn)行計(jì)算后,將模型計(jì)算結(jié)果和其他仿真信號通過信號調(diào)理箱輸出給電子控制器,實(shí)現(xiàn)HIL閉環(huán)仿真。
此外,主控PXI計(jì)算機(jī)通過以太網(wǎng)與綜合測控下位PXI計(jì)算機(jī)連接,通過試驗(yàn)器仿真軟件實(shí)現(xiàn)人機(jī)交互和上下位機(jī)交互,并實(shí)現(xiàn)HIL仿真測試的相關(guān)外部操作。
仿真試驗(yàn)器的軟件套件主要由HIL環(huán)境仿真軟件、自動化中控軟件、上位機(jī)監(jiān)視軟件、數(shù)據(jù)分析軟件、報表生成工具軟件等組成。
HIL環(huán)境仿真軟件提供數(shù)據(jù)設(shè)備資源監(jiān)視、信號設(shè)定、故障注入、飛發(fā)通信模擬等人機(jī)交互功能,同時,實(shí)現(xiàn)輸入信號采集、模型程序加載、輸出信號設(shè)定、設(shè)備操控等上下位機(jī)交互功能。
自動化中控軟件采用基于Python語言的開源工具Robot Framework開發(fā),包括圖形化操作前端RIDE,通過UDP端口按接口協(xié)議與具備對應(yīng)接口的應(yīng)用軟件進(jìn)行交互,通過批處理調(diào)用方式啟動某個軟件或腳本,進(jìn)而按其語言格式編寫腳本代碼即可實(shí)現(xiàn)自動操作邏輯。
上位機(jī)監(jiān)視軟件可實(shí)現(xiàn)啟動/停止監(jiān)視、數(shù)據(jù)保存、停止保存等功能操作,具備常規(guī)的交互操作接口。
數(shù)據(jù)分析軟件和報表生成工具是C++控制臺應(yīng)用程序,可在后臺自動運(yùn)行,不影響前臺窗口程序,具有執(zhí)行效率高的優(yōu)點(diǎn),適合于控制器可靠性試驗(yàn)的自動執(zhí)行場景。但當(dāng)前的軟件是項(xiàng)目早期的工具軟件,不具備自動化操作接口。
仿真運(yùn)行流程主要涉及仿真環(huán)境部署、飛行任務(wù)剖面的HIL仿真運(yùn)行過程和電子控制器電應(yīng)力循環(huán)操作等幾方面任務(wù)。
電應(yīng)力循環(huán)執(zhí)行周期為24 h,包括3個8 h執(zhí)行周期,每8 h分別按DC 30.8 V、DC 28 V、DC 25.2 V順次設(shè)定電子控制器的輸入電壓。
飛行任務(wù)剖面的運(yùn)行流程以8 h為一個執(zhí)行周期,包括4 h冷天和4 h熱天測試,分別執(zhí)行一次4 h飛行任務(wù)剖面(含冷浸或熱浸階段的30 min),該過程與環(huán)境模擬設(shè)備同步;GJB 899A規(guī)定濕度應(yīng)力循環(huán)和振動應(yīng)力循環(huán)均由環(huán)境模擬設(shè)備自動設(shè)置,包含于8 h執(zhí)行周期內(nèi)。
因此,為了支持整個HIL測試過程隨環(huán)境模擬設(shè)備的周期自動連續(xù)運(yùn)行,需要以完整電應(yīng)力循環(huán)為單位,設(shè)計(jì)以24 h為周期的運(yùn)行流程。同時,為了便于測試數(shù)據(jù)鏈和證據(jù)鏈管理,需要滿足數(shù)據(jù)截取、命名、歸類、分析和報表制作等自動化需求。
綜上,HIL閉環(huán)測試的執(zhí)行流程應(yīng)包含4 h飛行任務(wù)剖面、8 h溫度循環(huán)和24 h電應(yīng)力循環(huán)的嵌套,兼顧數(shù)據(jù)自動截?cái)嗪头治龅墓δ?,其自動運(yùn)行流程可設(shè)計(jì)為仿真運(yùn)行環(huán)境初始化、啟動監(jiān)視、數(shù)據(jù)存儲、任務(wù)執(zhí)行、數(shù)據(jù)截?cái)唷?shù)據(jù)分析調(diào)用、報表制作調(diào)用等執(zhí)行步驟,不同的流程步驟按需接續(xù)執(zhí)行或循環(huán)執(zhí)行,4 h飛行任務(wù)自動測試執(zhí)行流程如表1所示,可靠性試驗(yàn)自動運(yùn)行流程示意圖如圖1所示。
圖1 可靠性試驗(yàn)自動運(yùn)行流程示意圖
表1 4 h飛行任務(wù)自動測試執(zhí)行流程
仿真運(yùn)行自動化由中控軟件Robot Framework通過腳本調(diào)用相關(guān)工具軟件、輔助腳本代碼來實(shí)現(xiàn),在Robot Framework軟件中設(shè)計(jì)開發(fā)腳本實(shí)現(xiàn)仿真流程中的每一步具體操作[6]。
在所使用的工具軟件中,HIL環(huán)境仿真軟件和上位機(jī)監(jiān)視軟件具備UDP通信功能和自動化接口協(xié)議,可由中控軟件Robot Framework直接操作,因此,仿真流程涉及的運(yùn)行環(huán)境初始化、啟動監(jiān)視、執(zhí)行狀態(tài)操作指令、停止監(jiān)視、數(shù)據(jù)截取與命名等操作可通過直接在中控軟件中開發(fā)腳本來實(shí)現(xiàn)。
數(shù)據(jù)分析軟件不具備UDP通信功能和自動化接口,屬于非自動化工具軟件,如果僅通過自動腳本調(diào)用批處理命令的方式直接打開,則無法按需分析指定數(shù)據(jù),因此,需要專門設(shè)計(jì)自動化整合方法。
數(shù)據(jù)分析軟件自動化整合主要有以下3種解決途徑。
① 擴(kuò)充分析軟件的功能,開發(fā)UDP通信功能和接口協(xié)議,實(shí)現(xiàn)與自動化中控軟件的交互功能。
② 改造數(shù)據(jù)分析軟件的功能結(jié)構(gòu),修改分析軟件的數(shù)據(jù)文件加載方式,使軟件啟動后自動分析默認(rèn)目錄下最新的一份數(shù)據(jù)文件,在Robot Framework中通過執(zhí)行批處理文件,間接調(diào)用分析軟件,分析最近一次截取的數(shù)據(jù)段。
③ 開發(fā)一組外部輔助腳本,實(shí)現(xiàn)對分析軟件配置文件的改寫操作,先執(zhí)行輔助腳本改寫配置文件信息,再調(diào)用數(shù)據(jù)分析和報表生成工具,實(shí)現(xiàn)按需對指定數(shù)據(jù)段的分析和報表輸出。
基于投入產(chǎn)出比最優(yōu)的工程思想,為了以最小的軟件開發(fā)投入獲得最優(yōu)的自動化構(gòu)建效率,優(yōu)選途徑③。本文根據(jù)數(shù)據(jù)分析軟件的運(yùn)行原理,運(yùn)用Python腳本語言編寫了一套簡潔的輔助腳本[7],由自動化中控軟件通過批處理指令間接調(diào)用運(yùn)行,通過改寫工具軟件的配置文件,為數(shù)據(jù)分析軟件指定待分析的文件路徑和文件名,建立分析數(shù)據(jù)源輸出目錄,為報表制作軟件指定報表數(shù)據(jù)源、報表模板和報表輸出路徑等信息,實(shí)現(xiàn)對數(shù)據(jù)分析軟件和報表制作軟件的按需操作,進(jìn)而間接實(shí)現(xiàn)該類型非自動化工具軟件的自動化整合。外部輔助腳本流程如圖2所示。
圖2 外部輔助腳本流程圖
綜上,可得出可靠性試驗(yàn)HIL測試的自動化調(diào)用關(guān)系,如圖3所示。中控軟件Robot Framework的腳本操作仿真軟件、上位機(jī)軟件和相關(guān)的批處理指令,不同的批處理指令再間接操作輔助腳本、數(shù)據(jù)分析軟件和報表工具。
圖3 HIL測試自動化調(diào)用關(guān)系設(shè)計(jì)示意圖
2.3.1 腳本分層封裝
中控軟件Robot Framework的腳本語言規(guī)則是以“關(guān)鍵字”代表模塊,可以將有緊密聯(lián)系的若干操作步驟封裝為一個單獨(dú)的模塊,以便于模塊復(fù)用和腳本維護(hù),類似于C語言中的函數(shù)。
基于高內(nèi)聚低耦合的模塊化程序設(shè)計(jì)思想,從有利于頂層應(yīng)用設(shè)計(jì)、底層操作解耦以及有利于腳本復(fù)用和繼承的角度出發(fā),按3層結(jié)構(gòu)規(guī)劃自動化腳本,具體如下。
① 基礎(chǔ)封裝層。該層包括項(xiàng)目、設(shè)備相關(guān)的基礎(chǔ)配置以及對信號資源和各自動化接口的操作封裝。
② 應(yīng)用功能封裝層。該層建立在基礎(chǔ)封裝層之上,包括環(huán)境初始化、上位機(jī)數(shù)據(jù)記錄操作、控制系統(tǒng)功能操作、數(shù)據(jù)分析操作、試驗(yàn)任務(wù)基礎(chǔ)操作等應(yīng)用類事務(wù)操作的模塊化封裝。
③ 測試任務(wù)執(zhí)行層。該層以應(yīng)用功能封裝層為基礎(chǔ),是按測試大綱或試驗(yàn)工藝文件等設(shè)計(jì)實(shí)現(xiàn)的測試任務(wù)腳本集合。
應(yīng)用功能封裝層承上啟下,其模塊化程度越高,測試任務(wù)腳本的開發(fā)效率和質(zhì)量越高,可維護(hù)性越好。
2.3.2 顯形腳本執(zhí)行時間的必要性
從提高測試任務(wù)腳本開發(fā)效率和執(zhí)行時間精度的目標(biāo)出發(fā),需要根據(jù)設(shè)計(jì)的仿真試驗(yàn)流程,對仿真任務(wù)譜的時間編排和腳本模塊實(shí)際執(zhí)行時間進(jìn)行設(shè)計(jì)和統(tǒng)籌。
中控軟件自動腳本的執(zhí)行過程需要花費(fèi)一定時間,這個時間包括中控軟件下發(fā)指令至被控軟件接收到指令的時間和被控軟件響應(yīng)相關(guān)操作的時間。盡管單條基礎(chǔ)操作的腳本一般比較簡單,其執(zhí)行花費(fèi)的時間并不多,一般僅為10 ms級,但是在設(shè)計(jì)應(yīng)用功能封裝層的腳本模塊時,會涉及大量基礎(chǔ)操作腳本的組合和重復(fù)調(diào)用。在設(shè)計(jì)頂層測試任務(wù)腳本時,會涉及應(yīng)用功能封裝層模塊的組合和重復(fù)調(diào)用,從而產(chǎn)生大規(guī)模的腳本嵌套。以本文設(shè)計(jì)的某型控制器可靠性測試任務(wù)腳本為例,按應(yīng)用功能封裝層模塊的單步腳本為最小統(tǒng)計(jì)單位,8 h任務(wù)腳本一共包含1014條腳本,24 h任務(wù)腳本一共包含3066條腳本,如果按基礎(chǔ)封裝層的單步腳本為最小單位統(tǒng)計(jì),腳本數(shù)將成倍增加,可到達(dá)萬條的量級。因此,各條腳本的執(zhí)行時間誤差,無論大小,最終都將通過頂層的測試任務(wù)腳本的執(zhí)行過程累加為一個總的時間誤差,這個誤差可以從單條腳本的10 ms級發(fā)展為1 min量級,甚至可能為10 min量級,導(dǎo)致執(zhí)行時間誤差的累積放大。電子控制器可靠性試驗(yàn)流程對環(huán)境應(yīng)力模擬和HIL仿真的執(zhí)行時間敏感,如果測試任務(wù)譜執(zhí)行時間誤差較大,則會導(dǎo)致HIL仿真過程和環(huán)境應(yīng)力模擬的變化過程在時間軸上錯位,可靠性試驗(yàn)的效果就會偏離試驗(yàn)的設(shè)計(jì)初衷,影響電子軟件子系統(tǒng)的驗(yàn)證有效性。
因此,顯形應(yīng)用功能層的模塊執(zhí)行時間,對于頂層測試任務(wù)譜時間線的設(shè)計(jì)過程是十分必要的,有助于計(jì)算分配各模塊的執(zhí)行時間并統(tǒng)籌優(yōu)化執(zhí)行時間誤差。
2.3.3 按名義執(zhí)行時間模塊化設(shè)計(jì)
本文提出了一種按腳本模塊的理論執(zhí)行時間(即名義執(zhí)行時間)進(jìn)行任務(wù)譜時間線設(shè)計(jì)的方法,在腳本模塊的關(guān)鍵字中顯形注明模塊的名義執(zhí)行時長,相當(dāng)于腳本執(zhí)行時間隨腳本封裝也實(shí)現(xiàn)了模塊化,其實(shí)際執(zhí)行時間和時間誤差隨封裝而確定,由此有利于在頂層任務(wù)譜中設(shè)計(jì)分配時間線,也有利于統(tǒng)計(jì)執(zhí)行時間誤差和顯形時間誤差的組成,便于綜合分配執(zhí)行過程必要的等待時長,從而統(tǒng)籌減小整個任務(wù)譜的執(zhí)行時間誤差。同時,根據(jù)腳本模塊組成的占比情況,可以有針對性地優(yōu)化調(diào)用次數(shù)較多或時間誤差較大的模塊的執(zhí)行時間,進(jìn)而達(dá)到優(yōu)化整個任務(wù)腳本時間線的目的。
在應(yīng)用層模塊設(shè)計(jì)與調(diào)試的方法層面,不僅要提供模塊的集成度和接口設(shè)計(jì),而且要考慮適當(dāng)提高模塊的執(zhí)行時間尺度,在其中適當(dāng)添加執(zhí)行等待時長。一方面利用等待時長湊整模塊的執(zhí)行時間,達(dá)到1 s或10 s量級,以便于調(diào)用模塊時進(jìn)行時間計(jì)算;另一方面通過調(diào)整執(zhí)行等待時長,補(bǔ)償其他腳本執(zhí)行帶來的時間花費(fèi),將名義執(zhí)行時間與實(shí)際執(zhí)行時間的誤差控制在較小范圍內(nèi),等效于降低了單條操作指令執(zhí)行時間誤差及其累計(jì)效應(yīng)對模塊外部產(chǎn)生的關(guān)聯(lián)性影響,這樣更便于模塊的調(diào)用者統(tǒng)計(jì)分配執(zhí)行時間。例如,在本文設(shè)計(jì)的“數(shù)據(jù)分析10s”模塊中,數(shù)據(jù)分析工具的批處理調(diào)用操作實(shí)際花費(fèi)不到0.1 s時間,為了覆蓋分析工具后臺運(yùn)行時間,并實(shí)現(xiàn)模塊執(zhí)行時間尺度擴(kuò)大并湊整,為其封裝一定的等待時長,定義模塊的名義執(zhí)行時間為10 s,通過調(diào)試,將等待時長調(diào)整為9.91 s,使模塊實(shí)際執(zhí)行時間達(dá)到9.97 s,誤差0.03 s,執(zhí)行時間和時間誤差顯形受控。部分腳本模塊執(zhí)行時間統(tǒng)計(jì)如表2所示。
表2 部分腳本模塊執(zhí)行時間統(tǒng)計(jì) 單位:s
按名義執(zhí)行時間進(jìn)行模塊化設(shè)計(jì)的方法,降低了模塊間的時間耦合,進(jìn)一步增強(qiáng)了腳本的模塊化程度,對于強(qiáng)調(diào)執(zhí)行時間精度的頂層測試任務(wù)腳本開發(fā)過程,增強(qiáng)了腳本時間線設(shè)計(jì)的模塊化程度,降低了任務(wù)腳本編寫過程中時間線的控制與優(yōu)化的難度,提高了開發(fā)效率和質(zhì)量。
在某型電子控制器1000 h可靠性試驗(yàn)中,應(yīng)用了本文研究的可靠性試驗(yàn)HIL仿真測試自動化技術(shù)方案,試驗(yàn)執(zhí)行過程流暢,無人值守,數(shù)據(jù)報表輸出完整。根據(jù)Robot Framework軟件的運(yùn)行記錄統(tǒng)計(jì),每8 h試驗(yàn)任務(wù)腳本的執(zhí)行時間誤差預(yù)計(jì)值為93 s,實(shí)際執(zhí)行時間誤差為106±2 s,誤差受控,與理論預(yù)計(jì)值的差異約13 s,該差異主要由未使用名義時間方法封裝的部分腳本執(zhí)行時間累加而來,例如高度、馬赫數(shù)和油門桿等單一參數(shù)設(shè)置腳本,且該誤差不影響自動化測試的結(jié)果判定。部分8 h任務(wù)腳本執(zhí)行時間記錄如表3所示。
表3 部分8 h任務(wù)腳本執(zhí)行時間記錄
以FADEC系統(tǒng)電子控制器可靠性試驗(yàn)為對象,研究了HIL仿真測試自動運(yùn)行流程及其自動腳本設(shè)計(jì)方法,一方面通過開發(fā)輔助腳本實(shí)現(xiàn)了非自動化軟件工具套件的自動化整合,實(shí)現(xiàn)對既有的非自動化工具軟件的有效利用;另一方面,通過按名義執(zhí)行時間封裝腳本模塊的方法,實(shí)現(xiàn)對執(zhí)行時間及其誤差的顯形與控制,滿足了可靠性試驗(yàn)對HIL仿真自動運(yùn)行的需求。
經(jīng)過某型FADEC控制器1000 h可靠性摸底試驗(yàn)應(yīng)用,HIL仿真自動運(yùn)行流程實(shí)施效果良好可靠,每8 h循環(huán)的腳本執(zhí)行時間誤差穩(wěn)定受控。
在后續(xù)工作中,可以將高度、馬赫數(shù)、油門桿角度等一條參數(shù)設(shè)置腳本,依據(jù)其相關(guān)性,按名義執(zhí)行時間方法優(yōu)化封裝,可進(jìn)一步減小頂層測試任務(wù)腳本的執(zhí)行時間誤差,優(yōu)化執(zhí)行時間分配。