文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.015
中文引用格式: 吳姣,郝玉鍇,徐寧,等. 一種使用MATLAB/Simulink的Arduino模型化開發(fā)方法[J].電子技術應用,2017,43(6):60-63.
英文引用格式: Wu Jiao,Hao Yukai,Xu Ning,et al. An Arduino module-based development method using MATLAB/Simulink[J].Application of Electronic Technique,2017,43(6):60-63.
0 引言
基于模型的軟件開發(fā)(Module-Based Software Development,MDB)是一種軟件開發(fā)的理念和方法[1],其原則是使用具有完善定義和支撐工具的可視化建模語言在系統(tǒng)工程的層級構建系統(tǒng)模型作為設計的基礎,通過對模型的不斷細化和測試來進行系統(tǒng)設計和驗證,在此過程中持續(xù)消除其中的錯誤和缺陷,以保障系統(tǒng)設計的正確性和對設計需求的全部覆蓋[2]。該方法可有效地縮短開發(fā)時間,提高開發(fā)效率,特別適合航空航天等高安全要求領域,如F/A-22和“好奇”號火星車都使用了基于模型的設計和開發(fā)方法。
MATLAB是由MathWorks公司發(fā)布的面對科學計算、可視化以及交互式程序設計的高性能計算環(huán)境。
Simulink是MATLAB最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。
Arduino是一個開放源代碼的軟硬件平臺,具有使用類似Java的Processing/Wiring開發(fā)環(huán)境[3-4]。
本文研究了基于模型的軟件開發(fā)特點和在高安全軟件開發(fā)領域主要工作流程,基于MATLAB/Simulink軟件平臺進行Arduino模型化開發(fā)實例分析,實現(xiàn)了模型設計、模型調(diào)試、自動代碼生成、自動下載運行以及在線調(diào)試等功能,進行Arduino的模型化開發(fā)方法研究和分析。
1 基于模型的軟件開發(fā)
基于模型的軟件開發(fā)使用了模型設計的工作流程和開發(fā)與測試相結合的軟件開發(fā)平臺,使得系統(tǒng)設計和驗證過程相統(tǒng)一,減少了開發(fā)成本,縮短了開發(fā)周期,降低了軟件缺陷率[5]。在基于模型的軟件開發(fā)過程中,系統(tǒng)模型是設計的基礎,需求分析、設計實現(xiàn)和測試驗證的過程都是圍繞系統(tǒng)模型進行的。模型在整個設計實現(xiàn)的過程中不斷被細化、分解和復用,模型的測試和驗證配合實際實現(xiàn)同步進行,產(chǎn)品的缺陷隨著開發(fā)過程的進行不斷地暴露和解決,避免了實現(xiàn)完成后測試發(fā)現(xiàn)問題再進行更改的現(xiàn)狀,同時自動代碼生成有效地減少了人為引入錯誤的可能,自動化的驗證和確認使測試工程師能夠開發(fā)完整的、基于需求并可在自動產(chǎn)生的代碼上重用的測試用例。
1.1 與傳統(tǒng)軟件開發(fā)方法的對比
傳統(tǒng)的軟件開發(fā)流程模型如圖1所示?;谀P偷脑O計流程模型如圖2所示。
相對于傳統(tǒng)的軟件開發(fā)方法,基于模型的設計優(yōu)勢在于:
(1)開發(fā)和驗證測試的過程始終結合在一起,產(chǎn)品從需求分析到設計和實現(xiàn)的各個階段均通過模型進行不斷的驗證;(2)產(chǎn)品的缺陷可以在初期的需求分析階段通過模型驗證暴露出來,大大降低了后期設計完成后測試的難度和更改量,開發(fā)者只需關心算法和模型設計,源代碼使用工具軟件自動進行生成和測試驗證;(3)縮短了開發(fā)周期,降低了開發(fā)成本。
1.2 基于模型的軟件開發(fā)工作流程
1.2.1 行業(yè)標準
應用于高安全環(huán)境下的軟件,例如航空電子系統(tǒng),它們的開發(fā)與驗證過程需要嚴格遵循各種標準[6]。DO-178B[7]是由美國航空無線電技術委員會(RTCA)提出的航空工業(yè)軟件開發(fā)標準,該標準建立了一套航空機載系統(tǒng)和設備合格審定相關的軟件要求[8],定義了軟件開發(fā)各個階段的安全性目標,對航電行業(yè)的軟件安全性標準影響巨大。
DO-178B定義了5個軟件層級:A、B、C、D、E,這5個軟件層次所導致的失效狀態(tài)是由系統(tǒng)安全評估過程決定的[9]。確定的構件級別應與其能夠產(chǎn)生的最嚴重的失效條件相對應,A級為失效會產(chǎn)生最嚴重后果的等級,之后依次弱化,E級表述為“無安全性影響”[10]。更新的DO-178C[11]標準以附件形式發(fā)布了以模型開發(fā)、形式化驗證、面向?qū)ο?、工具鑒定等為代表的新一代軟件研制技術[12]。
1.2.2 生命周期
DO-178B/C定義了各層軟件都應滿足的各個過程的具體目標,定義的軟件生命周期可以劃分為3類過程[13]。軟件計劃過程:定義并協(xié)調(diào)一個項目的軟件開發(fā)與系統(tǒng)集成過程;軟件開發(fā)過程:包括軟件需求分析、設計、編碼、整合過程,同時還包括各過程間的跟蹤;整合過程:保證軟件生命周期及其輸出的正確、可控、可信,包括驗證、軟件配置管理、軟件質(zhì)量保證、合格審定聯(lián)絡過程。
1.2.3 工作流程
根據(jù)上述基于模型設計的工作流程和DO178B/C軟件生命周期的各個過程,結合MATLAB/Simulink軟件得到具體的模型化開發(fā)方法[14]的工作流程如圖3所示。
1.3 Arduino的模型化開發(fā)方法
在MATLAB_supportPackages的配合下,調(diào)試完成后的Simulink模型可以直接在Arduino平臺上獨立運行或者與連接的PC配合運行。Arduino平臺可以幫助用戶在不需要手動編程的情況下理解嵌入式系統(tǒng)的設計流程,可以使用Simulink來設計控制系統(tǒng)和機器人應用算法,可以應用基于模型設計技術,在仿真中驗證算法,驗證過程可以符合DO-178B標準,也可以將算法作為獨立的應用程序,在Arduino平臺上的ATmega處理器上實現(xiàn)。結合基于模型的軟件開發(fā)工作流程,Arduino的模型化開發(fā)方法可以總結為:
(1)使用Simulink建立仿真模型,在建立的過程中,驗證和確認該模型;(2)模型驗證和確認后,使用Simulink自動生成可以在Arduino上運行的C語言代碼;(3)生成的代碼編譯后下載到Arduino目標機上運行,運行過程數(shù)據(jù)可以在MATLAB軟件中觀察并且在Simulink中在線整定和修改。
安裝MATLAB_supportPackages后,Simulink中封裝Arduino平臺模型庫。
2 Arduino模型化開發(fā)
2.1 功能需求
示例開發(fā)的功能為通過Arduino模擬量輸入口獲取的熱敏電阻的電阻值,采樣量化后通過一定的算法將該電阻值轉(zhuǎn)換為當前的溫度值,在白板上寫出溫度值,如果溫度改變,則擦除原有數(shù)據(jù),重新寫出當前溫度值。硬件連接好之后,軟件功能可以細分為:(1)讀取Arduino的一路模擬量輸入口;(2)處理模擬數(shù)據(jù)為溫度值;(3)將溫度值傳送到輸出模塊;(4)輸出模塊擦除原來溫度值,寫入新的溫度值。本節(jié)采用模型化的方法對上述功能需求進行開發(fā)。
2.2 模型設計
2.2.1 算法設計
熱敏電阻是電阻值隨溫度變化的半導體傳感器,其典型特點是電阻值對溫度非常敏感,在不同的溫度下會表現(xiàn)出不同的電阻值,從而根據(jù)表現(xiàn)的電阻值逆推出其所處的環(huán)境溫度值。本文選用負溫度系數(shù)熱敏電阻(NTC)503,其電阻值隨溫度的升高而降低,存在一個非線性的已知關系:
2.2.2 模型設計和調(diào)試
根據(jù)式(2)及具體參數(shù)值,設計經(jīng)過Arduino模擬量讀取端口采樣和量化(0~1 023)后的電阻值轉(zhuǎn)換為溫度值的算法模型圖4所示。
通過MATLAB模擬采樣后端口輸入信號,輸入0~1 023全部數(shù)據(jù),模型相應輸出經(jīng)過計算后的溫度值。
2.2.3 模型集成
新建一個Simulink項目,圖5所示為建立讀取Arduino的模擬量輸入口和處理模擬數(shù)據(jù)為溫度值以及將溫度值傳送到輸出模塊的模型。設置Pulse Geneartor,更改需要的頻率、占空比,以及相應的pin number等。
2.3 自動生成代碼和運行
在線調(diào)試完以后可以進行自動生成代碼和在線燒寫,打開配置窗口,選擇“Prepare to Run”,選擇對應的控制板型號為Arduino Mega 2560,設置端口(可以選自動或手動),設置波特率(相當于IDE編程時setup()函數(shù)中的Serial.begin())。設置完成保存后,回到Simulink編輯窗口,點擊"Run"開始自動下載并在完成后運行。
2.4 在線調(diào)試
本文使用的Arduino mega 2560硬件平臺,具有4路串行通信端口與PC進行數(shù)據(jù)交互,可以在Simulink環(huán)境中直接在線整定PID參數(shù)、監(jiān)視實際信號變化,通過Scope工具查看轉(zhuǎn)換后的實時溫度輸出信號,如圖6所示。
3 分析和驗證
生成程序代碼共9 794行,其中有效代碼行數(shù)為5 924行,占60.17%,注釋行數(shù)為2 541行,占25.81%。有9個程序頭文件,25個c/cpp程序文件,可執(zhí)行文件hex和bin各一個,可以直接下載到目標機運行,其他中間文件40個。生成的代碼和程序涉及的功能如表1所示。
傳統(tǒng)軟件和系統(tǒng)開發(fā)的驗證步驟一般位于項目的末尾,如瀑布模型等。對于復雜系統(tǒng)與軟件項目,如果僅依靠后期驗證發(fā)現(xiàn)問題再進行修改,其代價往往是難以估量的,因為問題可能在需求或者設計階段就已經(jīng)存在了。在基于模型的設計過程中,可以將驗證過程提前到模型設計階段,通過系統(tǒng)早期驗證提高產(chǎn)品質(zhì)量,縮短開發(fā)周期,減少糾錯成本。
相對于不確定性很高的人工測試來說,對于高安全相關項目,在開發(fā)的過程中,就可以使用Simulink Module Advisor工具自動檢測模型是否符合DO-178B標準,也可以檢查模型或子系統(tǒng)的配置是否會導致系統(tǒng)仿真錯誤或者無效,檢查模型設置是否會生成無效代碼。檢查完成后,自動生成報告,列出不符合項,提出模型設置建議。開發(fā)人員根據(jù)報告進行不符合項的修改,重復檢查過程,直至滿足協(xié)議要求。
4 結論
基于模型的軟件開發(fā)是一種新穎的軟件開發(fā)的理念和方法,在高安全環(huán)境要求下的軟件領域有著廣泛應用。本文介紹了基于模型的軟件開發(fā)特點和行業(yè)標準,并且與傳統(tǒng)的軟件開發(fā)方法進行了對比,總結了基于模型的軟件開發(fā)的典型工作流程。在此基礎上,基于MATLAB/Simulink軟件平臺進行Arduino模型化開發(fā)實例分析,實現(xiàn)了模型設計、模型調(diào)試、自動代碼生成、自動下載運行以及在線調(diào)試等功能,并且進行了生成代碼分析和協(xié)議符合性驗證,探索了完整的Arduino的模型化開發(fā)方法。
參考文獻
[1] BIGLARI H.Past,present and future of satety-critical realtime embedded software development[M].New York:Fairchild Control Corporation,2008.
[2] 王偉,李育挺,馬松輝.基于模型的驗證與測試技術[J].計算機測量與控制,2013,21(4):987-989.
[3] Arduino.What is Arduino?[EB/OL].(2014-09-29).http://www.arduino.cc/en/Guide/Introduction.
[4] 趙廣元,王文慶,蔡秀梅.基于Arduino和Matlab/Simulink的仿真環(huán)境設計研究[J].測控技術,2015,34(8):123-125.
[5] Yu Shitao,Yang Shiwei,Yang Lin,et al.Module-based development of real-time software system for electronic unit pump system[J].Chinese Journal of Mechanical Engineering,2007,20(1):25-30.
[6] 金志威,劉萬和,薛茜男,等.形式化方法在機載電子硬件研制中的應用研究[J].電子技術應用,2015,41(6):143-146.
[7] RTCA/DO-178B.Software considerations in airborne systems and equipment certification[Z].Washington D.C:Radio Technical Commission for Aeronautics,Inc.,1992.
[8] 何鑫,劉暢,鄭軍.基于DO-178B的軟件測試技術研究[J].計算機測量與控制,2013,21(6):1470-1473.
[9] 蔡喁,鄭征,蔡開元,等.機載軟件適航標準DO-178B/C研究[M].上海:上海交通大學出版社,2013:129-130.
[10] 朱和銓,徐浩軍,張鵬,等.模型驅(qū)動的軟件構件研制保證水平驗證方法[J].航空學報,2015,36(3):907-920.
[11] RTCA/DO-178C.Software considerations in airborne systems and equipment certification[Z].Washington D.C:Radio Technical Commission for Aeronautics,Inc.,2008.
[12] 王金林,牟明,邢亮.GJB5000A與DO-178B/C的綜合應用研究[J].航空計算技術,2015,45(1):100-102,107.
[13] 劉杰.基于模型的設計及其嵌入式實現(xiàn)[M].北京:北京航空航天大學出版社,2010:345-349.
[14] 渠博崗,易映萍.基于CCS與MATLAB/Simulink聯(lián)合仿真平臺的構建與實現(xiàn)[J].電子技術應用,2016,42(4):106-110.
作者信息:
吳 姣,郝玉鍇,徐 寧,李向東
(中航工業(yè)西安航空計算技術研究所,陜西 西安710115)