方 偉,周彰毅
(中航工業航空動力控制系統研究所,江蘇無錫214063)
SCADE在航空發動機FADEC軟件開發中的應用
方偉,周彰毅
(中航工業航空動力控制系統研究所,江蘇無錫214063)
為了探索SCA D E開發環境在基于模型設計(M BD)的軟件開發中的優勢,理解其建模和自動代碼生成機制,研究其在基于模型的測試和覆蓋率分析中的實現方法,基于某型航空發動機FA D EC系統的健康管理軟件開發,應用了SCA D E開發環境的建模、仿真、測試及覆蓋率分析、代碼生成與集成的全流程的M BD開發方法,并進行了完整的系統測試,測試用例全部通過。系統測試的結果驗證了基于SCA D E開發環境進行FAD EC軟件開發的正確性和可靠性,為SCA D E開發環境在航空發動機FA D EC軟件開發中的應用提供了技術指導和工程借鑒。
MBD;覆蓋率分析;自動代碼生成;SCA D E;航空發動機
傳統的軟件開發是以代碼為中心的V型開發流程,軟件生命周期的重點是編碼。以編碼為核心的軟件開發嚴重依賴編碼者的項目經驗和編碼水平,容易引入語法和邏輯錯誤,可靠性和效率較低,在軟件開發早期很難及時發現軟件中潛在的錯誤;調試工作繁瑣復雜,開發周期長,且需要借助復雜的專業工具軟件進行單元測試和覆蓋率分析,增加了軟件開發的成本。驗證工作在軟件開發的后期進行,工作量大、難度高,且無法對驗證工作進行定量評價,導致軟件交付的周期長、成本高。
在基于模型的開發(MBD)中,設計人員根據系統需求建立模型,并對模型進行仿真測試,及早發現其中的缺陷并不斷進行修正和驗證迭代,最后直接通過模型生成和移植可執行的嵌入式代碼。基于模型的開發在設計階段就能不斷暴露軟件缺陷并進行封閉,且省去了手工編碼和單元測試的工作,開發人員把更多精力集中到軟件設計和控制算法優化上。
SCADE(Safety Critical Application Development Environment)是1個基于模型的應用開發環境,專注于高安全性系統的開發[1]。GE、PW和RR公司基于SCADE開發了多款航空發動機的FADEC系統。在基于SCADE進行航空發動機FADEC系統開發方面,國內尚未見使用,探索SCADE在航空發動機控制領域的應用,建立1套以SCADE為核心的FADEC軟件開發方法具有十分重要的意義。
本文深入分析SCADE開發環境的建模機制,并結合其在某型航空發動機健康管理軟件中的具體應用,探索了基于SCADE進行FADEC軟件開發的基本流程和技術要點,驗證了基于SCADE進行FADEC軟件開發的正確性和可靠性,為其在航空發動機FADEC軟件開發中的應用提供了工程借鑒。
1.1SCADE的優勢
SCADE作為高安全性嵌入式軟件開發環境,覆蓋了嵌入式開發的整個流程:需求建模、圖形化模型搭建、靜態檢查、模擬仿真、形式驗證、覆蓋率分析、代碼自動生成、文檔生成等[2]。多個客戶的實踐經驗表明,使用SCADE工具,可以生成70%以上的嵌入式代碼,節約50%以上的開發時間[3]。相比于傳統的手工編碼開發流程,其具有如下的特點和優勢:
(1)采用形式化設計方法[4],以嚴格的數學理論保證了設計的完整性和無二義性;
(2)使用圖形化建模方式[5],易學易用,降低了對開發人員編程經驗和熟練度的依賴,也減少了開發人員的工作量;
(3)通過DO-178B質量認證的代碼生成器KCG,可以自動生成高質量的產品級C代碼,代碼與模型嚴格一致。簡化了傳統開發模式中的編碼過程,且避免了手工編寫代碼引入的人工錯誤,提高了軟件的可靠性。此外,無需對所生成的代碼進行單元測試,節省了開發時間,提高了開發效率[6];
(4)提供高效可靠的仿真和測試手段,可對各軟件開發階段進行定量的驗證[7]。
1.2SCADE的建模機制
SCADE建模的核心是同步設計程序語言LUSTRE。LUSTRE語言基于反應式系統和同步假設的概念,構成了SCADE建模的基礎,在此之上進行模型構建、靜態檢查、模擬仿真、形式驗證、覆蓋率分析、代碼自動生成等工作[8]。SCADE提供建模的方式主要有2種:數據流圖和安全狀態機。
采用面向過程的思想描述系統數據流圖。首先將系統模型描述為從輸入到輸出的信息流和數據變換過程,然后應用圖形化的操作符搭建模型。這種方式適合于連續控制系統的建模,以用戶定義的輸入輸出變量為接口,采用類似于C語言中函數概念的操作符為基本功能單元,在操作符內部選擇使用圖形或文本方式實現邏輯處理。操作符之間通過運算符,如算術運算符、邏輯運算符、比較運算符、時序運算符、選擇操作符等組成更加復雜的層次結構,相互連接組成大的節點,最終實現以圖形化的方法搭建軟件模型。
安全狀態機是有限狀態機的圖形化實現。通過引入豐富的形式化方法[9]來處理復雜的狀態結構,適用于離散化控制邏輯。它提供了順序、優先級、層次、并行的狀態結構。安全狀態機的圖形化方法可以很好地對反應系統建模,用一系列的狀態、轉移和信號來表示反應系統的控制邏輯。用狀態間的轉移來表示系統的進展,用外部中斷或內部事件處理結果來觸發轉移。狀態代表系統的模式,分為“激活”和“不激活”2種狀態。不同的狀態之間有互斥和并行2種組合關系:互斥意味著同一時刻僅有1個狀態處于激活狀態;并行則代表所有的狀態都可能在同一時刻處于激活狀態。并行的狀態應該在其父狀態被激活時同時被激活,激活順序一般按照“從外至里,從上至下”的規則進行[10]。
1.3SCADE的代碼生成機制
SCADE代碼自動生成的原理是根據建模平臺的當前目標系統模型,由代碼生成器KCG自動生成某種語言的源代碼[11]。具體來說,生成代碼的信息來源有2個:模型屬性(控制代碼生成方式)和元素規范(控制代碼生成內容)[12]。由SCADE圖形開發界面生成高質量的嵌入式代碼。先將圖形轉換為LUSTRE語言[13],如前文所述,SCADE的圖形描述符實質上是建立在LUSTRE語言基礎上的,這一步就是把參數塊、方程式等圖形轉化為LUSTRE語言描述,后刪除圖形信息,并將多個文件進行整合;再將LUSTRE描述文件轉換為C代碼,并生成可追蹤文件。
可控制的生成過程如圖1所示。將用于生成代碼的SCADE模型作為KCG的輸入文件,根據目標平臺選擇相應的KCG版本及所需的優化選項,最后一鍵式或者用命令行方式生成代碼,其間會同時產生代碼生成日志和錯誤信息以供參考。
根據高層需求建立的可視化SCADE模型,是對控制邏輯和控制算法的詳細描述,模型可用于早期的驗證和測試,并進行覆蓋率分析[14]。SCADE基于模型的測試與基于源代碼的測試不同。基于源代碼的測試中,測試者忽視需求,僅確認代碼完成其行為(甚至是錯誤行為),不能找出未實現的需求。SCADE基于模型的測試則是基于高層需求的測試,測試者基于高層需求編寫測試場景,通過SCADE的工具集QTE(Qualified Testing Environment)和MTC(Model Test Coverage)對模型進行測試和覆蓋率分析。覆蓋率分析包括模型對系統需求的覆蓋(驗證所有系統需求已通過SCADE模型實現)和SCADE模型的結構覆蓋(驗證SCADE沒有實現非預期的功能)。在軟件級別為A級的航空發動機控制軟件中,DO-178B要求的模型結構覆蓋目標為MC/DC準則100%覆蓋。模型測試和覆蓋率分析流程如圖2所示。

圖1 KCG生成代碼過程

圖2 模型測試和覆蓋率分析流程
某項目的健康管理模塊主要實現發動機故障診斷、監視告警、壽命統計等功能,是發動機全權限數字電子控制系統控制軟件的重要組成部分。健康管理模塊分為應用層(AS)和操作系統層(OS),應用層作為控制律層,實現發動機健康管理和壽命統計功能。本節基于SCADE環境,采用基于模型設計的開發方式對AS層進行開發,探索SCADE在基于模型設計中的建模、仿真驗證、測試及覆蓋率分析、代碼生成和集成驗證的完整MBD解決方案。
3.1控制律建模
首先利用SCADE提供的基本模塊,搭建所需的自定義模型庫,主要包括計數器模型(Counter)、故障確認和清除模型(Confirm And Restore)。故障確認和清除模型,用于監視告警模塊中的故障確認和故障清除,利用計數器模型,當輸入連續Confirm Periods個周期都為True時,輸出結果為True,確認故障;當輸入值連續Restore Periods個周期都為False時,輸出結果為False,清除故障。其結構如圖3所示。

圖3 故障確認和清除模型
應用層模型采用層級結構,自底向上建模,底層使用自定義的模塊庫或SCADE自帶的模塊庫,對各層級的模型進行封裝,形成功能清晰的操作符,每個操作符對應嵌入式代碼的1個源文件。頂層模型分為Life Manage和Monitor2大模塊,如圖4所示。對于控制軟件中常用的可調整參數,在SCADE模型用Sensor類型參數來定義。

圖4 頂層模型結構
3.2基于需求的模型仿真
SCADE的仿真器能仿真調試SCADE模型。SCADE仿真是1種基于后臺代碼的仿真,在起動仿真前,SCADE首先將模型生成代碼,在代碼層級上進行仿真,而不是在對模型解析基礎上的仿真[15]。針對健康管理模塊中壽命統計模塊的起動工作時間,根據需求設置對應的輸入,仿真結果如圖5所示。

圖5 起動工作時間模塊仿真結果
3.3模型測試和覆蓋率分析
仿真結束后,針對AS層的軟件需求,編寫測試場景,對模型進行測試和覆蓋率分析,覆蓋率準則為MC/DC覆蓋準則,部分測試場景腳本如圖6所示。根據獲取的覆蓋率數據,針對未覆蓋的分支增加測試場景,對確定不需要經過的分支增加說明。根據MC/DC覆蓋率準則,AS層模型需要覆蓋的分支為651個,滿足100%覆蓋率編寫的測試腳本為812行,并需增加46個說明。

圖6 測試腳本
3.4代碼生成和集成驗證
SCADE的代碼生成器KCG通過了航空航天與防務領域的DO-178B A級標準。在經過模型仿真和測試后,通過KCG生成的代碼與模型保持嚴格的一致性,生成的代碼不需要作軟件單元測試,可直接用于代碼集成和系統驗證。在KCG的配置時,為減少代碼規模,對頂層模型外的所有模塊進行擴展,以頂層模型的操作符為根節點,輸入輸出變量作為參數傳遞給根節點函數,只生成1個源文件。為輸入輸出變量配置接口函數,Sensor類型的參數在生成的代碼中沒有定義,只進行了聲明,所以需對該類型的參數進行定義。生成的代碼作為嵌入式軟件的一部分直接集成到軟件中,在數控系統地檢驗證環境中對健康管理模塊進行系統測試,應用層軟件需求對應的測試用例全部通過驗證,驗證了模型和代碼的正確性。
(1)通過對SCADE開發環境的機理分析,驗證了SCADE開發環境所具備的易學易用、設計完整無二義的特點,加之其擁有通過DO-178B A級標準認證的代碼生成器和完整可靠的仿真測試工具鏈等優勢,極大的提高了軟件開發效率、提升了軟件安全性。
(2)在具體項目上的應用也證實了基于SCADE開發環境進行FADEC軟件開發的正確性和可靠性,對其應用于FADEC軟件開發具有工程指導意義。
[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的形式化驗證技術研究[J].測控技術,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]李耀,郭進,孔令晶,等.基于SCADE的形式化驗證技術的改進研究[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].電子設計工程,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].工業控制計算機,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軟件開發方法研究[J].系統仿真學報,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]杜道山,李從心.模型驅動在數控系統開發中的應用研究[J].青島大學學報(工程技術版),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]石剛,王生原,董淵,等.同步數據流語言可信編譯器的構造[J].軟件學報,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的安全軟件開發方法研究[J].鐵路計算機應用,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的余度管理軟件開發方法研究[J].軟件導刊,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平臺下的圖形化設計和代碼自動生成[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].計算機測量與控制,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的飛控軟件的適航驗證與確認[J].飛行力學,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平臺下C代碼的自動生成[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基金項目:國家重大基礎研究項目資助
方偉(1987),男,碩士,從事FADEC軟件研發工作;E-mail:fangwei1702@163.com。
引用格式:方偉,周彰毅.SCADE在航空發動機FADEC軟件開發中的應用初探[J].航空發動機,2016,42(5):43-47.FANGWei,ZHOUZhangyi.Researchon SCADEforaeroengineFADECsoftware[J].Aeroengine,2016,42(5):43-47.