方 偉,周彰毅
(中航工業(yè)航空動(dòng)力控制系統(tǒng)研究所,江蘇無錫214063)
SCADE在航空發(fā)動(dòng)機(jī)FADEC軟件開發(fā)中的應(yīng)用
方偉,周彰毅
(中航工業(yè)航空動(dòng)力控制系統(tǒng)研究所,江蘇無錫214063)
為了探索SCA D E開發(fā)環(huán)境在基于模型設(shè)計(jì)(M BD)的軟件開發(fā)中的優(yōu)勢(shì),理解其建模和自動(dòng)代碼生成機(jī)制,研究其在基于模型的測(cè)試和覆蓋率分析中的實(shí)現(xiàn)方法,基于某型航空發(fā)動(dòng)機(jī)FA D EC系統(tǒng)的健康管理軟件開發(fā),應(yīng)用了SCA D E開發(fā)環(huán)境的建模、仿真、測(cè)試及覆蓋率分析、代碼生成與集成的全流程的M BD開發(fā)方法,并進(jìn)行了完整的系統(tǒng)測(cè)試,測(cè)試用例全部通過。系統(tǒng)測(cè)試的結(jié)果驗(yàn)證了基于SCA D E開發(fā)環(huán)境進(jìn)行FAD EC軟件開發(fā)的正確性和可靠性,為SCA D E開發(fā)環(huán)境在航空發(fā)動(dòng)機(jī)FA D EC軟件開發(fā)中的應(yīng)用提供了技術(shù)指導(dǎo)和工程借鑒。
MBD;覆蓋率分析;自動(dòng)代碼生成;SCA D E;航空發(fā)動(dòng)機(jī)
傳統(tǒng)的軟件開發(fā)是以代碼為中心的V型開發(fā)流程,軟件生命周期的重點(diǎn)是編碼。以編碼為核心的軟件開發(fā)嚴(yán)重依賴編碼者的項(xiàng)目經(jīng)驗(yàn)和編碼水平,容易引入語法和邏輯錯(cuò)誤,可靠性和效率較低,在軟件開發(fā)早期很難及時(shí)發(fā)現(xiàn)軟件中潛在的錯(cuò)誤;調(diào)試工作繁瑣復(fù)雜,開發(fā)周期長,且需要借助復(fù)雜的專業(yè)工具軟件進(jìn)行單元測(cè)試和覆蓋率分析,增加了軟件開發(fā)的成本。驗(yàn)證工作在軟件開發(fā)的后期進(jìn)行,工作量大、難度高,且無法對(duì)驗(yàn)證工作進(jìn)行定量評(píng)價(jià),導(dǎo)致軟件交付的周期長、成本高。
在基于模型的開發(fā)(MBD)中,設(shè)計(jì)人員根據(jù)系統(tǒng)需求建立模型,并對(duì)模型進(jìn)行仿真測(cè)試,及早發(fā)現(xiàn)其中的缺陷并不斷進(jìn)行修正和驗(yàn)證迭代,最后直接通過模型生成和移植可執(zhí)行的嵌入式代碼?;谀P偷拈_發(fā)在設(shè)計(jì)階段就能不斷暴露軟件缺陷并進(jìn)行封閉,且省去了手工編碼和單元測(cè)試的工作,開發(fā)人員把更多精力集中到軟件設(shè)計(jì)和控制算法優(yōu)化上。
SCADE(Safety Critical Application Development Environment)是1個(gè)基于模型的應(yīng)用開發(fā)環(huán)境,專注于高安全性系統(tǒng)的開發(fā)[1]。GE、PW和RR公司基于SCADE開發(fā)了多款航空發(fā)動(dòng)機(jī)的FADEC系統(tǒng)。在基于SCADE進(jìn)行航空發(fā)動(dòng)機(jī)FADEC系統(tǒng)開發(fā)方面,國內(nèi)尚未見使用,探索SCADE在航空發(fā)動(dòng)機(jī)控制領(lǐng)域的應(yīng)用,建立1套以SCADE為核心的FADEC軟件開發(fā)方法具有十分重要的意義。
本文深入分析SCADE開發(fā)環(huán)境的建模機(jī)制,并結(jié)合其在某型航空發(fā)動(dòng)機(jī)健康管理軟件中的具體應(yīng)用,探索了基于SCADE進(jìn)行FADEC軟件開發(fā)的基本流程和技術(shù)要點(diǎn),驗(yàn)證了基于SCADE進(jìn)行FADEC軟件開發(fā)的正確性和可靠性,為其在航空發(fā)動(dòng)機(jī)FADEC軟件開發(fā)中的應(yīng)用提供了工程借鑒。
1.1SCADE的優(yōu)勢(shì)
SCADE作為高安全性嵌入式軟件開發(fā)環(huán)境,覆蓋了嵌入式開發(fā)的整個(gè)流程:需求建模、圖形化模型搭建、靜態(tài)檢查、模擬仿真、形式驗(yàn)證、覆蓋率分析、代碼自動(dòng)生成、文檔生成等[2]。多個(gè)客戶的實(shí)踐經(jīng)驗(yàn)表明,使用SCADE工具,可以生成70%以上的嵌入式代碼,節(jié)約50%以上的開發(fā)時(shí)間[3]。相比于傳統(tǒng)的手工編碼開發(fā)流程,其具有如下的特點(diǎn)和優(yōu)勢(shì):
(1)采用形式化設(shè)計(jì)方法[4],以嚴(yán)格的數(shù)學(xué)理論保證了設(shè)計(jì)的完整性和無二義性;
(2)使用圖形化建模方式[5],易學(xué)易用,降低了對(duì)開發(fā)人員編程經(jīng)驗(yàn)和熟練度的依賴,也減少了開發(fā)人員的工作量;
(3)通過DO-178B質(zhì)量認(rèn)證的代碼生成器KCG,可以自動(dòng)生成高質(zhì)量的產(chǎn)品級(jí)C代碼,代碼與模型嚴(yán)格一致。簡(jiǎn)化了傳統(tǒng)開發(fā)模式中的編碼過程,且避免了手工編寫代碼引入的人工錯(cuò)誤,提高了軟件的可靠性。此外,無需對(duì)所生成的代碼進(jìn)行單元測(cè)試,節(jié)省了開發(fā)時(shí)間,提高了開發(fā)效率[6];
(4)提供高效可靠的仿真和測(cè)試手段,可對(duì)各軟件開發(fā)階段進(jìn)行定量的驗(yàn)證[7]。
1.2SCADE的建模機(jī)制
SCADE建模的核心是同步設(shè)計(jì)程序語言LUSTRE。LUSTRE語言基于反應(yīng)式系統(tǒng)和同步假設(shè)的概念,構(gòu)成了SCADE建模的基礎(chǔ),在此之上進(jìn)行模型構(gòu)建、靜態(tài)檢查、模擬仿真、形式驗(yàn)證、覆蓋率分析、代碼自動(dòng)生成等工作[8]。SCADE提供建模的方式主要有2種:數(shù)據(jù)流圖和安全狀態(tài)機(jī)。
采用面向過程的思想描述系統(tǒng)數(shù)據(jù)流圖。首先將系統(tǒng)模型描述為從輸入到輸出的信息流和數(shù)據(jù)變換過程,然后應(yīng)用圖形化的操作符搭建模型。這種方式適合于連續(xù)控制系統(tǒng)的建模,以用戶定義的輸入輸出變量為接口,采用類似于C語言中函數(shù)概念的操作符為基本功能單元,在操作符內(nèi)部選擇使用圖形或文本方式實(shí)現(xiàn)邏輯處理。操作符之間通過運(yùn)算符,如算術(shù)運(yùn)算符、邏輯運(yùn)算符、比較運(yùn)算符、時(shí)序運(yùn)算符、選擇操作符等組成更加復(fù)雜的層次結(jié)構(gòu),相互連接組成大的節(jié)點(diǎn),最終實(shí)現(xiàn)以圖形化的方法搭建軟件模型。
安全狀態(tài)機(jī)是有限狀態(tài)機(jī)的圖形化實(shí)現(xiàn)。通過引入豐富的形式化方法[9]來處理復(fù)雜的狀態(tài)結(jié)構(gòu),適用于離散化控制邏輯。它提供了順序、優(yōu)先級(jí)、層次、并行的狀態(tài)結(jié)構(gòu)。安全狀態(tài)機(jī)的圖形化方法可以很好地對(duì)反應(yīng)系統(tǒng)建模,用一系列的狀態(tài)、轉(zhuǎn)移和信號(hào)來表示反應(yīng)系統(tǒng)的控制邏輯。用狀態(tài)間的轉(zhuǎn)移來表示系統(tǒng)的進(jìn)展,用外部中斷或內(nèi)部事件處理結(jié)果來觸發(fā)轉(zhuǎn)移。狀態(tài)代表系統(tǒng)的模式,分為“激活”和“不激活”2種狀態(tài)。不同的狀態(tài)之間有互斥和并行2種組合關(guān)系:互斥意味著同一時(shí)刻僅有1個(gè)狀態(tài)處于激活狀態(tài);并行則代表所有的狀態(tài)都可能在同一時(shí)刻處于激活狀態(tài)。并行的狀態(tài)應(yīng)該在其父狀態(tài)被激活時(shí)同時(shí)被激活,激活順序一般按照“從外至里,從上至下”的規(guī)則進(jìn)行[10]。
1.3SCADE的代碼生成機(jī)制
SCADE代碼自動(dòng)生成的原理是根據(jù)建模平臺(tái)的當(dāng)前目標(biāo)系統(tǒng)模型,由代碼生成器KCG自動(dòng)生成某種語言的源代碼[11]。具體來說,生成代碼的信息來源有2個(gè):模型屬性(控制代碼生成方式)和元素規(guī)范(控制代碼生成內(nèi)容)[12]。由SCADE圖形開發(fā)界面生成高質(zhì)量的嵌入式代碼。先將圖形轉(zhuǎn)換為LUSTRE語言[13],如前文所述,SCADE的圖形描述符實(shí)質(zhì)上是建立在LUSTRE語言基礎(chǔ)上的,這一步就是把參數(shù)塊、方程式等圖形轉(zhuǎn)化為LUSTRE語言描述,后刪除圖形信息,并將多個(gè)文件進(jìn)行整合;再將LUSTRE描述文件轉(zhuǎn)換為C代碼,并生成可追蹤文件。
可控制的生成過程如圖1所示。將用于生成代碼的SCADE模型作為KCG的輸入文件,根據(jù)目標(biāo)平臺(tái)選擇相應(yīng)的KCG版本及所需的優(yōu)化選項(xiàng),最后一鍵式或者用命令行方式生成代碼,其間會(huì)同時(shí)產(chǎn)生代碼生成日志和錯(cuò)誤信息以供參考。
根據(jù)高層需求建立的可視化SCADE模型,是對(duì)控制邏輯和控制算法的詳細(xì)描述,模型可用于早期的驗(yàn)證和測(cè)試,并進(jìn)行覆蓋率分析[14]。SCADE基于模型的測(cè)試與基于源代碼的測(cè)試不同?;谠创a的測(cè)試中,測(cè)試者忽視需求,僅確認(rèn)代碼完成其行為(甚至是錯(cuò)誤行為),不能找出未實(shí)現(xiàn)的需求。SCADE基于模型的測(cè)試則是基于高層需求的測(cè)試,測(cè)試者基于高層需求編寫測(cè)試場(chǎng)景,通過SCADE的工具集QTE(Qualified Testing Environment)和MTC(Model Test Coverage)對(duì)模型進(jìn)行測(cè)試和覆蓋率分析。覆蓋率分析包括模型對(duì)系統(tǒng)需求的覆蓋(驗(yàn)證所有系統(tǒng)需求已通過SCADE模型實(shí)現(xiàn))和SCADE模型的結(jié)構(gòu)覆蓋(驗(yàn)證SCADE沒有實(shí)現(xiàn)非預(yù)期的功能)。在軟件級(jí)別為A級(jí)的航空發(fā)動(dòng)機(jī)控制軟件中,DO-178B要求的模型結(jié)構(gòu)覆蓋目標(biāo)為MC/DC準(zhǔn)則100%覆蓋。模型測(cè)試和覆蓋率分析流程如圖2所示。
圖1 KCG生成代碼過程
圖2 模型測(cè)試和覆蓋率分析流程
某項(xiàng)目的健康管理模塊主要實(shí)現(xiàn)發(fā)動(dòng)機(jī)故障診斷、監(jiān)視告警、壽命統(tǒng)計(jì)等功能,是發(fā)動(dòng)機(jī)全權(quán)限數(shù)字電子控制系統(tǒng)控制軟件的重要組成部分。健康管理模塊分為應(yīng)用層(AS)和操作系統(tǒng)層(OS),應(yīng)用層作為控制律層,實(shí)現(xiàn)發(fā)動(dòng)機(jī)健康管理和壽命統(tǒng)計(jì)功能。本節(jié)基于SCADE環(huán)境,采用基于模型設(shè)計(jì)的開發(fā)方式對(duì)AS層進(jìn)行開發(fā),探索SCADE在基于模型設(shè)計(jì)中的建模、仿真驗(yàn)證、測(cè)試及覆蓋率分析、代碼生成和集成驗(yàn)證的完整MBD解決方案。
3.1控制律建模
首先利用SCADE提供的基本模塊,搭建所需的自定義模型庫,主要包括計(jì)數(shù)器模型(Counter)、故障確認(rèn)和清除模型(Confirm And Restore)。故障確認(rèn)和清除模型,用于監(jiān)視告警模塊中的故障確認(rèn)和故障清除,利用計(jì)數(shù)器模型,當(dāng)輸入連續(xù)Confirm Periods個(gè)周期都為True時(shí),輸出結(jié)果為True,確認(rèn)故障;當(dāng)輸入值連續(xù)Restore Periods個(gè)周期都為False時(shí),輸出結(jié)果為False,清除故障。其結(jié)構(gòu)如圖3所示。
圖3 故障確認(rèn)和清除模型
應(yīng)用層模型采用層級(jí)結(jié)構(gòu),自底向上建模,底層使用自定義的模塊庫或SCADE自帶的模塊庫,對(duì)各層級(jí)的模型進(jìn)行封裝,形成功能清晰的操作符,每個(gè)操作符對(duì)應(yīng)嵌入式代碼的1個(gè)源文件。頂層模型分為Life Manage和Monitor2大模塊,如圖4所示。對(duì)于控制軟件中常用的可調(diào)整參數(shù),在SCADE模型用Sensor類型參數(shù)來定義。
圖4 頂層模型結(jié)構(gòu)
3.2基于需求的模型仿真
SCADE的仿真器能仿真調(diào)試SCADE模型。SCADE仿真是1種基于后臺(tái)代碼的仿真,在起動(dòng)仿真前,SCADE首先將模型生成代碼,在代碼層級(jí)上進(jìn)行仿真,而不是在對(duì)模型解析基礎(chǔ)上的仿真[15]。針對(duì)健康管理模塊中壽命統(tǒng)計(jì)模塊的起動(dòng)工作時(shí)間,根據(jù)需求設(shè)置對(duì)應(yīng)的輸入,仿真結(jié)果如圖5所示。
圖5 起動(dòng)工作時(shí)間模塊仿真結(jié)果
3.3模型測(cè)試和覆蓋率分析
仿真結(jié)束后,針對(duì)AS層的軟件需求,編寫測(cè)試場(chǎng)景,對(duì)模型進(jìn)行測(cè)試和覆蓋率分析,覆蓋率準(zhǔn)則為MC/DC覆蓋準(zhǔn)則,部分測(cè)試場(chǎng)景腳本如圖6所示。根據(jù)獲取的覆蓋率數(shù)據(jù),針對(duì)未覆蓋的分支增加測(cè)試場(chǎng)景,對(duì)確定不需要經(jīng)過的分支增加說明。根據(jù)MC/DC覆蓋率準(zhǔn)則,AS層模型需要覆蓋的分支為651個(gè),滿足100%覆蓋率編寫的測(cè)試腳本為812行,并需增加46個(gè)說明。
圖6 測(cè)試腳本
3.4代碼生成和集成驗(yàn)證
SCADE的代碼生成器KCG通過了航空航天與防務(wù)領(lǐng)域的DO-178B A級(jí)標(biāo)準(zhǔn)。在經(jīng)過模型仿真和測(cè)試后,通過KCG生成的代碼與模型保持嚴(yán)格的一致性,生成的代碼不需要作軟件單元測(cè)試,可直接用于代碼集成和系統(tǒng)驗(yàn)證。在KCG的配置時(shí),為減少代碼規(guī)模,對(duì)頂層模型外的所有模塊進(jìn)行擴(kuò)展,以頂層模型的操作符為根節(jié)點(diǎn),輸入輸出變量作為參數(shù)傳遞給根節(jié)點(diǎn)函數(shù),只生成1個(gè)源文件。為輸入輸出變量配置接口函數(shù),Sensor類型的參數(shù)在生成的代碼中沒有定義,只進(jìn)行了聲明,所以需對(duì)該類型的參數(shù)進(jìn)行定義。生成的代碼作為嵌入式軟件的一部分直接集成到軟件中,在數(shù)控系統(tǒng)地檢驗(yàn)證環(huán)境中對(duì)健康管理模塊進(jìn)行系統(tǒng)測(cè)試,應(yīng)用層軟件需求對(duì)應(yīng)的測(cè)試用例全部通過驗(yàn)證,驗(yàn)證了模型和代碼的正確性。
(1)通過對(duì)SCADE開發(fā)環(huán)境的機(jī)理分析,驗(yàn)證了SCADE開發(fā)環(huán)境所具備的易學(xué)易用、設(shè)計(jì)完整無二義的特點(diǎn),加之其擁有通過DO-178B A級(jí)標(biāo)準(zhǔn)認(rèn)證的代碼生成器和完整可靠的仿真測(cè)試工具鏈等優(yōu)勢(shì),極大的提高了軟件開發(fā)效率、提升了軟件安全性。
(2)在具體項(xiàng)目上的應(yīng)用也證實(shí)了基于SCADE開發(fā)環(huán)境進(jìn)行FADEC軟件開發(fā)的正確性和可靠性,對(duì)其應(yīng)用于FADEC軟件開發(fā)具有工程指導(dǎo)意義。
[1]Jean-Louis C.Efficient development of airborne software with SCADE auite[M].Elancourt:Esterel Technologies,2003:1-2.
[2]Berry G.The constructive semantics of pure esterel draft V3[M].Elancourt:Esterel Technologies,1999:4-6.
[3]林楓.基于SCADE的形式化驗(yàn)證技術(shù)研究[J].測(cè)控技術(shù),2011,30(12):71-74. LIN Feng.Research on SCADE-based formal verification technology[J]. Measurement andControl Technology,2011,30(12):71-74.(in Chinese)
[4]李耀,郭進(jìn),孔令晶,等.基于SCADE的形式化驗(yàn)證技術(shù)的改進(jìn)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(6):2026-2030. LI Yao,GUO Jin,KONG LingJing,et al.Research on improvement of SCADE-based formal verification technology[J].Computer Engineering and Design,2013,34(6):2026-2030.(in Chinese)
[5]吳成富,侯曉梅,段曉軍.基于SCADE的機(jī)載余度管理軟件開發(fā)[J].電子設(shè)計(jì)工程,2013,21(3):96-98. WU Chengfu,HOU Xiaomei,DUAN Xiaojun.Development of the redundancy management software based on SCADE[J].Electronic Design Engineering,2013,21(3):96-98.(in Chinese)
[6]林楓.基于模型的民用飛機(jī)軟件開發(fā)技術(shù)研究[J].工業(yè)控制計(jì)算機(jī),2011,24(12):37-41. LIN Feng.Research for model-based development technology of civil aircraft's software[J].Industrial Control Computer[J].2011,24(12):37-41.
[7]胡鋼偉,李振水,高亞奎.SCADE軟件開發(fā)方法研究[J].系統(tǒng)仿真學(xué)報(bào),2009(20):286-288. HU Gangwei,LI Zhenshui,GAO Yakui.A research on software development methods with SCADE[J].Journal of System Simulation,2009(20):286-288.(in Chinese)
[8]杜道山,李從心.模型驅(qū)動(dòng)在數(shù)控系統(tǒng)開發(fā)中的應(yīng)用研究[J].青島大學(xué)學(xué)報(bào)(工程技術(shù)版),2005,20(3):53-59. DU Daoshan,LI Congxin.Application of model-driven development technology in open CNC system[J].Journal of Qingdao University(Engineering and Technology Edition),2005,20(3):53-59.(in Chinese)
[9]石剛,王生原,董淵,等.同步數(shù)據(jù)流語言可信編譯器的構(gòu)造[J].軟件學(xué)報(bào),2014,25(2):341-356. SHI Gang,WANG Shengyuan,DONG Yuan,et al.Construction for the trustworthy compiler of a synchronous data-flow language[J].Journal of Software,2014,25(2):341-356.(in Chinese)
[10]陳淑珍,陳榮武,李耀.基于SCADE的安全軟件開發(fā)方法研究[J].鐵路計(jì)算機(jī)應(yīng)用,2015,24(3):14-18. CHEN Shuzhen,CHEN Rongwu,LI Yao.Method of SCADE-based safety software development[J].Railway Computer Application,2015,24(3):14-18.(in Chinese)
[11]金平.基于SCADE的余度管理軟件開發(fā)方法研究[J].軟件導(dǎo)刊,2012,11(10):14-16 JIN Ping.Research on the development methods of redundancy management software based on SCADE[J].Software Guide,2012,11(10):14-16.(in Chinese)
[12]章曉春,金平,孫全艷.SCADE平臺(tái)下的圖形化設(shè)計(jì)和代碼自動(dòng)生成[J].軟件,2011,32(5):74-77. ZHANG Xiaochun,JIN Ping,SUN Quanyan.Modeling and autogeneration of C code on SCADE bench[J].Software,2011,32(5):74-77.(in Chinese)
[13]張合軍,陳欣.基于SCADE的無人機(jī)自主導(dǎo)航飛行軟件設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2007,15(10):1400-1402. ZHANG Hejun,CHEN Xin.Software design of autonomous navigation Flight for UAV based on SCADE[J].Computer Measurement and Control,2007,15(10):1400-1402.(in Chinese)
[14]張雅妮,李巖,李小勛.基于SCADE的飛控軟件的適航驗(yàn)證與確認(rèn)[J].飛行力學(xué),2012,30(1):34-37. ZHANG Yani,LI Yan,LI Xiaoxun.Airworthiness validation and accreditation for SCADE-based flight control software[J].Flifht Dynamics,2012,30(1):34-37.(in Chinese)
[15]顏雯清,李秀娟.SCADE平臺(tái)下C代碼的自動(dòng)生成[J].計(jì)算機(jī)仿真,2007,24(10):264-267. YAN Wenqing,LI Xiujuan.Auto-generation of C code on SCADE bench[J].Computer Simulation,2007,24(10):264-267.(in Chinese)
(編輯:趙明菁)
Research on SCADE for Aeroengine FADEC Software
FANG Wei,ZHOU Zhang-yi
(AVIC Aeroengine Control System Institute,Wuxi Jiangsu 214063,China)
To explore the advantage of Safety Critical Application Development Environment(SCADE)development environment in software development using Model Based Development(MBD)method,apprehend its modeling and auto-code generation mechanism,research its implement method of test and coverage analysis based on models,the full MBD development processes,include modeling,simulation,test and coverage analysis,code generation and integration were used based on the health-monitor software development of an aeroengine.The totally system test was completed and all the test scripts were passed.The correctness and reliability of FADEC software development,based on SCADE development environment,were verified according to the results of the system test.The technique and project guidance of SCADE development environment on aeroengine FADEC software development are supplied by these researches.
MBD;coverage analysis;auto-code generation;SCADE;aeroengine
V 233.7
Adoi:10.13477/j.cnki.aeroengine.2016.05.008
2016-03-01基金項(xiàng)目:國家重大基礎(chǔ)研究項(xiàng)目資助
方偉(1987),男,碩士,從事FADEC軟件研發(fā)工作;E-mail:fangwei1702@163.com。
引用格式:方偉,周彰毅.SCADE在航空發(fā)動(dòng)機(jī)FADEC軟件開發(fā)中的應(yīng)用初探[J].航空發(fā)動(dòng)機(jī),2016,42(5):43-47.FANGWei,ZHOUZhangyi.Researchon SCADEforaeroengineFADECsoftware[J].Aeroengine,2016,42(5):43-47.