《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種使用MATLAB/Simulink的Arduino模型化開發(fā)方法
一種使用MATLAB/Simulink的Arduino模型化開發(fā)方法
2017年電子技術(shù)應(yīng)用第6期
吳 姣,郝玉鍇,徐 寧,李向東
中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安710115
摘要: 針對(duì)在測(cè)量和控制領(lǐng)域廣泛使用的開源的低成本軟硬件平臺(tái)Arduino,研究了其使用MATLAB/Simulink軟件進(jìn)行模型化軟件開發(fā)的方法和工作流程;進(jìn)行了Arduino模型化開發(fā)實(shí)例分析,實(shí)現(xiàn)了模型設(shè)計(jì)、模型調(diào)試、自動(dòng)代碼生成、自動(dòng)下載運(yùn)行以及在線調(diào)試等功能;進(jìn)行了生成代碼分析和協(xié)議符合性檢查,探索了完整的Arduino模型化開發(fā)方法;驗(yàn)證了使用MATLAB/Simulink進(jìn)行Arduino模型化開發(fā)的可行性、便捷性以及對(duì)高安全協(xié)議的符合性。
中圖分類號(hào): TP311
文獻(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.
An Arduino module-based development method using MATLAB/Simulink
Wu Jiao,Hao Yukai,Xu Ning,Li Xiangdong
AVIC Xi′an Aeronautic Computing Technique Research Institue,Xi′an 710115,China
Abstract: Based on the Arduino platform, an open source, low-cost hardware and software platform which is widely used in the measurement and control fields, the software development methods and workflows based on model are investigated in use of MATLAB/Simulink. Meanwhile, the examples of Arduino model development are analyzed, finally it completes the model design, model testing, automated code generation, automatically download and run, online debugging and so on, explores the full Arduino modeling method development, verifies Arduino model development feasibility and convenience using MATLAB/Simulink.
Key words : module-based software development;DO-178B/C;MATLAB/Simulink;Arduino

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所示。

qrs1-t1.gif

qrs1-t2.gif

    相對(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所示。

qrs1-t3.gif

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)系:

qrs1-gs1-2.gif

2.2.2 模型設(shè)計(jì)和調(diào)試

    根據(jù)式(2)及具體參數(shù)值,設(shè)計(jì)經(jīng)過Arduino模擬量讀取端口采樣和量化(0~1 023)后的電阻值轉(zhuǎn)換為溫度值的算法模型圖4所示。

qrs1-t4.gif

    通過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等。

qrs1-t5.gif

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所示。

qrs1-t6.gif

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所示。

qrs1-b1.gif

    傳統(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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。