文獻(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],其原則是使用具有完善定義和支撐工具的可視化建模語言在系統(tǒng)工程的層級(jí)構(gòu)建系統(tǒng)模型作為設(shè)計(jì)的基礎(chǔ),通過對(duì)模型的不斷細(xì)化和測(cè)試來進(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)證暴露出來,大大降低了后期設(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ó)航空無線電技術(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í)表述為“無安全性影響”[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來設(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語言代碼;(3)生成的代碼編譯后下載到Arduino目標(biāo)機(jī)上運(yùn)行,運(yùn)行過程數(shù)據(jù)可以在MATLAB軟件中觀察并且在Simulink中在線整定和修改。
安裝MATLAB_supportPackages后,Simulink中封裝Arduino平臺(tái)模型庫。
2 Arduino模型化開發(fā)
2.1 功能需求
示例開發(fā)的功能為通過Arduino模擬量輸入口獲取的熱敏電阻的電阻值,采樣量化后通過一定的算法將該電阻值轉(zhuǎn)換為當(dāng)前的溫度值,在白板上寫出溫度值,如果溫度改變,則擦除原有數(shù)據(jù),重新寫出當(dāng)前溫度值。硬件連接好之后,軟件功能可以細(xì)分為:(1)讀取Arduino的一路模擬量輸入口;(2)處理模擬數(shù)據(jù)為溫度值;(3)將溫度值傳送到輸出模塊;(4)輸出模塊擦除原來溫度值,寫入新的溫度值。本節(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è)試來說,對(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ò)誤或者無效,檢查模型設(shè)置是否會(huì)生成無效代碼。檢查完成后,自動(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] 金志威,劉萬和,薛茜男,等.形式化方法在機(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)