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