《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 一種使用MATLAB/Simulink的Arduino模型化開發(fā)方法
一種使用MATLAB/Simulink的Arduino模型化開發(fā)方法
2017年電子技術(shù)應(yīng)用第6期
吳 姣,郝玉鍇,徐 寧,李向東
中航工業(yè)西安航空計算技術(shù)研究所,陜西 西安710115
摘要: 針對在測量和控制領(lǐng)域廣泛使用的開源的低成本軟硬件平臺Arduino,研究了其使用MATLAB/Simulink軟件進行模型化軟件開發(fā)的方法和工作流程;進行了Arduino模型化開發(fā)實例分析,實現(xiàn)了模型設(shè)計、模型調(diào)試、自動代碼生成、自動下載運行以及在線調(diào)試等功能;進行了生成代碼分析和協(xié)議符合性檢查,探索了完整的Arduino模型化開發(fā)方法;驗證了使用MATLAB/Simulink進行Arduino模型化開發(fā)的可行性、便捷性以及對高安全協(xié)議的符合性。
中圖分類號: TP311
文獻標(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.
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)工程的層級構(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所示。

qrs1-t1.gif

qrs1-t2.gif

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

qrs1-t3.gif

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

qrs1-gs1-2.gif

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

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

qrs1-t4.gif

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

qrs1-t5.gif

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

qrs1-t6.gif

3 分析和驗證

    生成程序代碼共9 794行,其中有效代碼行數(shù)為5 924行,占60.17%,注釋行數(shù)為2 541行,占25.81%。有9個程序頭文件,25個c/cpp程序文件,可執(zhí)行文件hex和bin各一個,可以直接下載到目標(biāo)機運行,其他中間文件40個。生成的代碼和程序涉及的功能如表1所示。

qrs1-b1.gif

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

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