文獻(xiàn)標(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ì)化和測試來進(jìn)行系統(tǒng)設(shè)計和驗(yàn)證,在此過程中持續(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ā)特點(diǎn)和在高安全軟件開發(fā)領(lǐng)域主要工作流程,,基于MATLAB/Simulink軟件平臺進(jìn)行Arduino模型化開發(fā)實(shí)例分析,實(shí)現(xiàn)了模型設(shè)計,、模型調(diào)試,、自動代碼生成、自動下載運(yùn)行以及在線調(diào)試等功能,,進(jìn)行Arduino的模型化開發(fā)方法研究和分析,。
1 基于模型的軟件開發(fā)
基于模型的軟件開發(fā)使用了模型設(shè)計的工作流程和開發(fā)與測試相結(jié)合的軟件開發(fā)平臺,使得系統(tǒng)設(shè)計和驗(yàn)證過程相統(tǒng)一,,減少了開發(fā)成本,,縮短了開發(fā)周期,降低了軟件缺陷率[5],。在基于模型的軟件開發(fā)過程中,,系統(tǒng)模型是設(shè)計的基礎(chǔ),需求分析,、設(shè)計實(shí)現(xiàn)和測試驗(yàn)證的過程都是圍繞系統(tǒng)模型進(jìn)行的,。模型在整個設(shè)計實(shí)現(xiàn)的過程中不斷被細(xì)化、分解和復(fù)用,,模型的測試和驗(yàn)證配合實(shí)際實(shí)現(xiàn)同步進(jìn)行,,產(chǎn)品的缺陷隨著開發(fā)過程的進(jìn)行不斷地暴露和解決,避免了實(shí)現(xiàn)完成后測試發(fā)現(xiàn)問題再進(jìn)行更改的現(xiàn)狀,,同時自動代碼生成有效地減少了人為引入錯誤的可能,,自動化的驗(yàn)證和確認(rèn)使測試工程師能夠開發(fā)完整的、基于需求并可在自動產(chǎn)生的代碼上重用的測試用例,。
1.1 與傳統(tǒng)軟件開發(fā)方法的對比
傳統(tǒng)的軟件開發(fā)流程模型如圖1所示,。基于模型的設(shè)計流程模型如圖2所示,。
相對于傳統(tǒng)的軟件開發(fā)方法,,基于模型的設(shè)計優(yōu)勢在于:
(1)開發(fā)和驗(yàn)證測試的過程始終結(jié)合在一起,產(chǎn)品從需求分析到設(shè)計和實(shí)現(xiàn)的各個階段均通過模型進(jìn)行不斷的驗(yàn)證,;(2)產(chǎn)品的缺陷可以在初期的需求分析階段通過模型驗(yàn)證暴露出來,,大大降低了后期設(shè)計完成后測試的難度和更改量,開發(fā)者只需關(guān)心算法和模型設(shè)計,,源代碼使用工具軟件自動進(jìn)行生成和測試驗(yàn)證,;(3)縮短了開發(fā)周期,降低了開發(fā)成本,。
1.2 基于模型的軟件開發(fā)工作流程
1.2.1 行業(yè)標(biāo)準(zhǔn)
應(yīng)用于高安全環(huán)境下的軟件,,例如航空電子系統(tǒng),,它們的開發(fā)與驗(yàn)證過程需要嚴(yán)格遵循各種標(biāo)準(zhǔn)[6]。DO-178B[7]是由美國航空無線電技術(shù)委員會(RTCA)提出的航空工業(yè)軟件開發(fā)標(biāo)準(zhǔn),,該標(biāo)準(zhǔn)建立了一套航空機(jī)載系統(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ā)、形式化驗(yàn)證,、面向?qū)ο?、工具鑒定等為代表的新一代軟件研制技術(shù)[12]。
1.2.2 生命周期
DO-178B/C定義了各層軟件都應(yīng)滿足的各個過程的具體目標(biāo),,定義的軟件生命周期可以劃分為3類過程[13],。軟件計劃過程:定義并協(xié)調(diào)一個項(xiàng)目的軟件開發(fā)與系統(tǒng)集成過程;軟件開發(fā)過程:包括軟件需求分析,、設(shè)計,、編碼、整合過程,,同時還包括各過程間的跟蹤,;整合過程:保證軟件生命周期及其輸出的正確、可控,、可信,,包括驗(yàn)證、軟件配置管理,、軟件質(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平臺上獨(dú)立運(yùn)行或者與連接的PC配合運(yùn)行,。Arduino平臺可以幫助用戶在不需要手動編程的情況下理解嵌入式系統(tǒng)的設(shè)計流程,,可以使用Simulink來設(shè)計控制系統(tǒng)和機(jī)器人應(yīng)用算法,,可以應(yīng)用基于模型設(shè)計技術(shù),在仿真中驗(yàn)證算法,,驗(yàn)證過程可以符合DO-178B標(biāo)準(zhǔn),也可以將算法作為獨(dú)立的應(yīng)用程序,,在Arduino平臺上的ATmega處理器上實(shí)現(xiàn),。結(jié)合基于模型的軟件開發(fā)工作流程,Arduino的模型化開發(fā)方法可以總結(jié)為:
(1)使用Simulink建立仿真模型,,在建立的過程中,,驗(yàn)證和確認(rèn)該模型;(2)模型驗(yàn)證和確認(rèn)后,,使用Simulink自動生成可以在Arduino上運(yùn)行的C語言代碼,;(3)生成的代碼編譯后下載到Arduino目標(biāo)機(jī)上運(yùn)行,運(yùn)行過程數(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é)采用模型化的方法對上述功能需求進(jìn)行開發(fā),。
2.2 模型設(shè)計
2.2.1 算法設(shè)計
熱敏電阻是電阻值隨溫度變化的半導(dǎo)體傳感器,,其典型特點(diǎn)是電阻值對溫度非常敏感,在不同的溫度下會表現(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項(xiàng)目,圖5所示為建立讀取Arduino的模擬量輸入口和處理模擬數(shù)據(jù)為溫度值以及將溫度值傳送到輸出模塊的模型,。設(shè)置Pulse Geneartor,,更改需要的頻率、占空比,,以及相應(yīng)的pin number等,。
2.3 自動生成代碼和運(yùn)行
在線調(diào)試完以后可以進(jìn)行自動生成代碼和在線燒寫,打開配置窗口,,選擇“Prepare to Run”,,選擇對應(yīng)的控制板型號為Arduino Mega 2560,設(shè)置端口(可以選自動或手動),,設(shè)置波特率(相當(dāng)于IDE編程時setup()函數(shù)中的Serial.begin()),。設(shè)置完成保存后,回到Simulink編輯窗口,,點(diǎn)擊"Run"開始自動下載并在完成后運(yùn)行,。
2.4 在線調(diào)試
本文使用的Arduino mega 2560硬件平臺,具有4路串行通信端口與PC進(jìn)行數(shù)據(jù)交互,,可以在Simulink環(huán)境中直接在線整定PID參數(shù),、監(jiān)視實(shí)際信號變化,通過Scope工具查看轉(zhuǎn)換后的實(shí)時溫度輸出信號,,如圖6所示,。
3 分析和驗(yàn)證
生成程序代碼共9 794行,其中有效代碼行數(shù)為5 924行,,占60.17%,,注釋行數(shù)為2 541行,占25.81%,。有9個程序頭文件,,25個c/cpp程序文件,可執(zhí)行文件hex和bin各一個,,可以直接下載到目標(biāo)機(jī)運(yùn)行,,其他中間文件40個。生成的代碼和程序涉及的功能如表1所示,。
傳統(tǒng)軟件和系統(tǒng)開發(fā)的驗(yàn)證步驟一般位于項(xiàng)目的末尾,,如瀑布模型等。對于復(fù)雜系統(tǒng)與軟件項(xiàng)目,,如果僅依靠后期驗(yàn)證發(fā)現(xiàn)問題再進(jìn)行修改,,其代價往往是難以估量的,因?yàn)閱栴}可能在需求或者設(shè)計階段就已經(jīng)存在了,。在基于模型的設(shè)計過程中,,可以將驗(yàn)證過程提前到模型設(shè)計階段,,通過系統(tǒng)早期驗(yàn)證提高產(chǎn)品質(zhì)量,縮短開發(fā)周期,,減少糾錯成本,。
相對于不確定性很高的人工測試來說,對于高安全相關(guān)項(xiàng)目,,在開發(fā)的過程中,,就可以使用Simulink Module Advisor工具自動檢測模型是否符合DO-178B標(biāo)準(zhǔn),也可以檢查模型或子系統(tǒng)的配置是否會導(dǎo)致系統(tǒng)仿真錯誤或者無效,,檢查模型設(shè)置是否會生成無效代碼。檢查完成后,,自動生成報告,,列出不符合項(xiàng),提出模型設(shè)置建議,。開發(fā)人員根據(jù)報告進(jìn)行不符合項(xiàng)的修改,,重復(fù)檢查過程,直至滿足協(xié)議要求,。
4 結(jié)論
基于模型的軟件開發(fā)是一種新穎的軟件開發(fā)的理念和方法,,在高安全環(huán)境要求下的軟件領(lǐng)域有著廣泛應(yīng)用。本文介紹了基于模型的軟件開發(fā)特點(diǎn)和行業(yè)標(biāo)準(zhǔn),,并且與傳統(tǒng)的軟件開發(fā)方法進(jìn)行了對比,,總結(jié)了基于模型的軟件開發(fā)的典型工作流程。在此基礎(chǔ)上,,基于MATLAB/Simulink軟件平臺進(jìn)行Arduino模型化開發(fā)實(shí)例分析,,實(shí)現(xiàn)了模型設(shè)計、模型調(diào)試,、自動代碼生成,、自動下載運(yùn)行以及在線調(diào)試等功能,并且進(jìn)行了生成代碼分析和協(xié)議符合性驗(yàn)證,,探索了完整的Arduino的模型化開發(fā)方法,。
參考文獻(xiàn)
[1] BIGLARI H.Past,present and future of satety-critical realtime embedded software development[M].New York:Fairchild Control Corporation,,2008.
[2] 王偉,,李育挺,馬松輝.基于模型的驗(yàn)證與測試技術(shù)[J].計算機(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] 金志威,,劉萬和,薛茜男,,等.形式化方法在機(jī)載電子硬件研制中的應(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].計算機(jī)測量與控制,,2013,21(6):1470-1473.
[9] 蔡喁,,鄭征,,蔡開元,等.機(jī)載軟件適航標(biāo)準(zhǔn)DO-178B/C研究[M].上海:上海交通大學(xué)出版社,,2013:129-130.
[10] 朱和銓,,徐浩軍,張鵬,,等.模型驅(qū)動的軟件構(gòu)件研制保證水平驗(yàn)證方法[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è)計及其嵌入式實(shí)現(xiàn)[M].北京:北京航空航天大學(xué)出版社,,2010:345-349.
[14] 渠博崗,易映萍.基于CCS與MATLAB/Simulink聯(lián)合仿真平臺的構(gòu)建與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2016,,42(4):106-110.
作者信息:
吳 姣,郝玉鍇,徐 寧,,李向東
(中航工業(yè)西安航空計算技術(shù)研究所,,陜西 西安710115)