文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.015
中文引用格式: 吳姣,郝玉鍇,徐寧,等. 一種使用MATLAB/Simulink的Arduino模型化開發(fā)方法[J].電子技術(shù)應(yīng)用,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)工程的層級構(gòu)建系統(tǒng)模型作為設(shè)計的基礎(chǔ),通過對模型的不斷細(xì)化和測試來進行系統(tǒng)設(shè)計和驗證,在此過程中持續(xù)消除其中的錯誤和缺陷,以保障系統(tǒng)設(shè)計的正確性和對設(shè)計需求的全部覆蓋[2]。該方法可有效地縮短開發(fā)時間,提高開發(fā)效率,特別適合航空航天等高安全要求領(lǐng)域,如F/A-22和“好奇”號火星車都使用了基于模型的設(shè)計和開發(fā)方法。
MATLAB是由MathWorks公司發(fā)布的面對科學(xué)計算、可視化以及交互式程序設(shè)計的高性能計算環(huán)境。
Simulink是MATLAB最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。
Arduino是一個開放源代碼的軟硬件平臺,具有使用類似Java的Processing/Wiring開發(fā)環(huán)境[3-4]。
本文研究了基于模型的軟件開發(fā)特點和在高安全軟件開發(fā)領(lǐng)域主要工作流程,基于MATLAB/Simulink軟件平臺進行Arduino模型化開發(fā)實例分析,實現(xiàn)了模型設(shè)計、模型調(diào)試、自動代碼生成、自動下載運行以及在線調(diào)試等功能,進行Arduino的模型化開發(fā)方法研究和分析。
1 基于模型的軟件開發(fā)
基于模型的軟件開發(fā)使用了模型設(shè)計的工作流程和開發(fā)與測試相結(jié)合的軟件開發(fā)平臺,使得系統(tǒng)設(shè)計和驗證過程相統(tǒng)一,減少了開發(fā)成本,縮短了開發(fā)周期,降低了軟件缺陷率[5]。在基于模型的軟件開發(fā)過程中,系統(tǒng)模型是設(shè)計的基礎(chǔ),需求分析、設(shè)計實現(xiàn)和測試驗證的過程都是圍繞系統(tǒng)模型進行的。模型在整個設(shè)計實現(xiàn)的過程中不斷被細(xì)化、分解和復(fù)用,模型的測試和驗證配合實際實現(xiàn)同步進行,產(chǎn)品的缺陷隨著開發(fā)過程的進行不斷地暴露和解決,避免了實現(xiàn)完成后測試發(fā)現(xiàn)問題再進行更改的現(xiàn)狀,同時自動代碼生成有效地減少了人為引入錯誤的可能,自動化的驗證和確認(rèn)使測試工程師能夠開發(fā)完整的、基于需求并可在自動產(chǎn)生的代碼上重用的測試用例。
1.1 與傳統(tǒng)軟件開發(fā)方法的對比
傳統(tǒng)的軟件開發(fā)流程模型如圖1所示?;谀P偷脑O(shè)計流程模型如圖2所示。
相對于傳統(tǒng)的軟件開發(fā)方法,基于模型的設(shè)計優(yōu)勢在于:
(1)開發(fā)和驗證測試的過程始終結(jié)合在一起,產(chǎn)品從需求分析到設(shè)計和實現(xiàn)的各個階段均通過模型進行不斷的驗證;(2)產(chǎn)品的缺陷可以在初期的需求分析階段通過模型驗證暴露出來,大大降低了后期設(shè)計完成后測試的難度和更改量,開發(fā)者只需關(guān)心算法和模型設(shè)計,源代碼使用工具軟件自動進行生成和測試驗證;(3)縮短了開發(fā)周期,降低了開發(fā)成本。
1.2 基于模型的軟件開發(fā)工作流程
1.2.1 行業(yè)標(biāo)準(zhǔn)
應(yīng)用于高安全環(huán)境下的軟件,例如航空電子系統(tǒng),它們的開發(fā)與驗證過程需要嚴(yán)格遵循各種標(biāo)準(zhǔn)[6]。DO-178B[7]是由美國航空無線電技術(shù)委員會(RTCA)提出的航空工業(yè)軟件開發(fā)標(biāo)準(zhǔn),該標(biāo)準(zhǔn)建立了一套航空機載系統(tǒng)和設(shè)備合格審定相關(guān)的軟件要求[8],定義了軟件開發(fā)各個階段的安全性目標(biāo),對航電行業(yè)的軟件安全性標(biāo)準(zhǔn)影響巨大。
DO-178B定義了5個軟件層級:A、B、C、D、E,這5個軟件層次所導(dǎo)致的失效狀態(tài)是由系統(tǒng)安全評估過程決定的[9]。確定的構(gòu)件級別應(yīng)與其能夠產(chǎn)生的最嚴(yán)重的失效條件相對應(yīng),A級為失效會產(chǎn)生最嚴(yán)重后果的等級,之后依次弱化,E級表述為“無安全性影響”[10]。更新的DO-178C[11]標(biāo)準(zhǔn)以附件形式發(fā)布了以模型開發(fā)、形式化驗證、面向?qū)ο?、工具鑒定等為代表的新一代軟件研制技術(shù)[12]。
1.2.2 生命周期
DO-178B/C定義了各層軟件都應(yīng)滿足的各個過程的具體目標(biāo),定義的軟件生命周期可以劃分為3類過程[13]。軟件計劃過程:定義并協(xié)調(diào)一個項目的軟件開發(fā)與系統(tǒng)集成過程;軟件開發(fā)過程:包括軟件需求分析、設(shè)計、編碼、整合過程,同時還包括各過程間的跟蹤;整合過程:保證軟件生命周期及其輸出的正確、可控、可信,包括驗證、軟件配置管理、軟件質(zhì)量保證、合格審定聯(lián)絡(luò)過程。
1.2.3 工作流程
根據(jù)上述基于模型設(shè)計的工作流程和DO178B/C軟件生命周期的各個過程,結(jié)合MATLAB/Simulink軟件得到具體的模型化開發(fā)方法[14]的工作流程如圖3所示。
1.3 Arduino的模型化開發(fā)方法
在MATLAB_supportPackages的配合下,調(diào)試完成后的Simulink模型可以直接在Arduino平臺上獨立運行或者與連接的PC配合運行。Arduino平臺可以幫助用戶在不需要手動編程的情況下理解嵌入式系統(tǒng)的設(shè)計流程,可以使用Simulink來設(shè)計控制系統(tǒng)和機器人應(yīng)用算法,可以應(yīng)用基于模型設(shè)計技術(shù),在仿真中驗證算法,驗證過程可以符合DO-178B標(biāo)準(zhǔn),也可以將算法作為獨立的應(yīng)用程序,在Arduino平臺上的ATmega處理器上實現(xiàn)。結(jié)合基于模型的軟件開發(fā)工作流程,Arduino的模型化開發(fā)方法可以總結(jié)為:
(1)使用Simulink建立仿真模型,在建立的過程中,驗證和確認(rèn)該模型;(2)模型驗證和確認(rèn)后,使用Simulink自動生成可以在Arduino上運行的C語言代碼;(3)生成的代碼編譯后下載到Arduino目標(biāo)機上運行,運行過程數(shù)據(jù)可以在MATLAB軟件中觀察并且在Simulink中在線整定和修改。
安裝MATLAB_supportPackages后,Simulink中封裝Arduino平臺模型庫。
2 Arduino模型化開發(fā)
2.1 功能需求
示例開發(fā)的功能為通過Arduino模擬量輸入口獲取的熱敏電阻的電阻值,采樣量化后通過一定的算法將該電阻值轉(zhuǎn)換為當(dāng)前的溫度值,在白板上寫出溫度值,如果溫度改變,則擦除原有數(shù)據(jù),重新寫出當(dāng)前溫度值。硬件連接好之后,軟件功能可以細(xì)分為:(1)讀取Arduino的一路模擬量輸入口;(2)處理模擬數(shù)據(jù)為溫度值;(3)將溫度值傳送到輸出模塊;(4)輸出模塊擦除原來溫度值,寫入新的溫度值。本節(jié)采用模型化的方法對上述功能需求進行開發(fā)。
2.2 模型設(shè)計
2.2.1 算法設(shè)計
熱敏電阻是電阻值隨溫度變化的半導(dǎo)體傳感器,其典型特點是電阻值對溫度非常敏感,在不同的溫度下會表現(xiàn)出不同的電阻值,從而根據(jù)表現(xiàn)的電阻值逆推出其所處的環(huán)境溫度值。本文選用負(fù)溫度系數(shù)熱敏電阻(NTC)503,其電阻值隨溫度的升高而降低,存在一個非線性的已知關(guān)系:
2.2.2 模型設(shè)計和調(diào)試
根據(jù)式(2)及具體參數(shù)值,設(shè)計經(jīng)過Arduino模擬量讀取端口采樣和量化(0~1 023)后的電阻值轉(zhuǎn)換為溫度值的算法模型圖4所示。
通過MATLAB模擬采樣后端口輸入信號,輸入0~1 023全部數(shù)據(jù),模型相應(yīng)輸出經(jīng)過計算后的溫度值。
2.2.3 模型集成
新建一個Simulink項目,圖5所示為建立讀取Arduino的模擬量輸入口和處理模擬數(shù)據(jù)為溫度值以及將溫度值傳送到輸出模塊的模型。設(shè)置Pulse Geneartor,更改需要的頻率、占空比,以及相應(yīng)的pin number等。
2.3 自動生成代碼和運行
在線調(diào)試完以后可以進行自動生成代碼和在線燒寫,打開配置窗口,選擇“Prepare to Run”,選擇對應(yīng)的控制板型號為Arduino Mega 2560,設(shè)置端口(可以選自動或手動),設(shè)置波特率(相當(dāng)于IDE編程時setup()函數(shù)中的Serial.begin())。設(shè)置完成保存后,回到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各一個,可以直接下載到目標(biāo)機運行,其他中間文件40個。生成的代碼和程序涉及的功能如表1所示。
傳統(tǒng)軟件和系統(tǒng)開發(fā)的驗證步驟一般位于項目的末尾,如瀑布模型等。對于復(fù)雜系統(tǒng)與軟件項目,如果僅依靠后期驗證發(fā)現(xiàn)問題再進行修改,其代價往往是難以估量的,因為問題可能在需求或者設(shè)計階段就已經(jīng)存在了。在基于模型的設(shè)計過程中,可以將驗證過程提前到模型設(shè)計階段,通過系統(tǒng)早期驗證提高產(chǎn)品質(zhì)量,縮短開發(fā)周期,減少糾錯成本。
相對于不確定性很高的人工測試來說,對于高安全相關(guān)項目,在開發(fā)的過程中,就可以使用Simulink Module Advisor工具自動檢測模型是否符合DO-178B標(biāo)準(zhǔn),也可以檢查模型或子系統(tǒng)的配置是否會導(dǎo)致系統(tǒng)仿真錯誤或者無效,檢查模型設(shè)置是否會生成無效代碼。檢查完成后,自動生成報告,列出不符合項,提出模型設(shè)置建議。開發(fā)人員根據(jù)報告進行不符合項的修改,重復(fù)檢查過程,直至滿足協(xié)議要求。
4 結(jié)論
基于模型的軟件開發(fā)是一種新穎的軟件開發(fā)的理念和方法,在高安全環(huán)境要求下的軟件領(lǐng)域有著廣泛應(yīng)用。本文介紹了基于模型的軟件開發(fā)特點和行業(yè)標(biāo)準(zhǔn),并且與傳統(tǒng)的軟件開發(fā)方法進行了對比,總結(jié)了基于模型的軟件開發(fā)的典型工作流程。在此基礎(chǔ)上,基于MATLAB/Simulink軟件平臺進行Arduino模型化開發(fā)實例分析,實現(xiàn)了模型設(shè)計、模型調(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] 王偉,李育挺,馬松輝.基于模型的驗證與測試技術(shù)[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)境設(shè)計研究[J].測控技術(shù),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] 金志威,劉萬和,薛茜男,等.形式化方法在機載電子硬件研制中的應(yīng)用研究[J].電子技術(shù)應(yīng)用,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的軟件測試技術(shù)研究[J].計算機測量與控制,2013,21(6):1470-1473.
[9] 蔡喁,鄭征,蔡開元,等.機載軟件適航標(biāo)準(zhǔn)DO-178B/C研究[M].上海:上海交通大學(xué)出版社,2013:129-130.
[10] 朱和銓,徐浩軍,張鵬,等.模型驅(qū)動的軟件構(gòu)件研制保證水平驗證方法[J].航空學(xué)報,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的綜合應(yīng)用研究[J].航空計算技術(shù),2015,45(1):100-102,107.
[13] 劉杰.基于模型的設(shè)計及其嵌入式實現(xiàn)[M].北京:北京航空航天大學(xué)出版社,2010:345-349.
[14] 渠博崗,易映萍.基于CCS與MATLAB/Simulink聯(lián)合仿真平臺的構(gòu)建與實現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(4):106-110.
作者信息:
吳 姣,郝玉鍇,徐 寧,李向東
(中航工業(yè)西安航空計算技術(shù)研究所,陜西 西安710115)