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

    基于模型的軟件開發(Module-Based Software Development,MDB)是一種軟件開發的理念和方法[1],其原則是使用具有完善定義和支撐工具的可視化建模語言在系統工程的層級構建系統模型作為設計的基礎,通過對模型的不斷細化和測試來進行系統設計和驗證,在此過程中持續消除其中的錯誤和缺陷,以保障系統設計的正確性和對設計需求的全部覆蓋[2]。該方法可有效地縮短開發時間,提高開發效率,特別適合航空航天等高安全要求領域,如F/A-22和“好奇”號火星車都使用了基于模型的設計和開發方法。

    MATLAB是由MathWorks公司發布的面對科學計算、可視化以及交互式程序設計的高性能計算環境。

    Simulink是MATLAB最重要的組件之一,它提供一個動態系統建模、仿真和綜合分析的集成環境。

    Arduino是一個開放源代碼的軟硬件平臺,具有使用類似Java的Processing/Wiring開發環境[3-4]

    本文研究了基于模型的軟件開發特點和在高安全軟件開發領域主要工作流程,基于MATLAB/Simulink軟件平臺進行Arduino模型化開發實例分析,實現了模型設計、模型調試、自動代碼生成、自動下載運行以及在線調試等功能,進行Arduino的模型化開發方法研究和分析。

1 基于模型的軟件開發

    基于模型的軟件開發使用了模型設計的工作流程和開發與測試相結合的軟件開發平臺,使得系統設計和驗證過程相統一,減少了開發成本,縮短了開發周期,降低了軟件缺陷率[5]。在基于模型的軟件開發過程中,系統模型是設計的基礎,需求分析、設計實現和測試驗證的過程都是圍繞系統模型進行的。模型在整個設計實現的過程中不斷被細化、分解和復用,模型的測試和驗證配合實際實現同步進行,產品的缺陷隨著開發過程的進行不斷地暴露和解決,避免了實現完成后測試發現問題再進行更改的現狀,同時自動代碼生成有效地減少了人為引入錯誤的可能,自動化的驗證和確認使測試工程師能夠開發完整的、基于需求并可在自動產生的代碼上重用的測試用例。

1.1 與傳統軟件開發方法的對比

    傳統的軟件開發流程模型如圖1所示。基于模型的設計流程模型如圖2所示。

qrs1-t1.gif

qrs1-t2.gif

    相對于傳統的軟件開發方法,基于模型的設計優勢在于:

    (1)開發和驗證測試的過程始終結合在一起,產品從需求分析到設計和實現的各個階段均通過模型進行不斷的驗證;(2)產品的缺陷可以在初期的需求分析階段通過模型驗證暴露出來,大大降低了后期設計完成后測試的難度和更改量,開發者只需關心算法和模型設計,源代碼使用工具軟件自動進行生成和測試驗證;(3)縮短了開發周期,降低了開發成本。

1.2 基于模型的軟件開發工作流程

1.2.1 行業標準

    應用于高安全環境下的軟件,例如航空電子系統,它們的開發與驗證過程需要嚴格遵循各種標準[6]。DO-178B[7]是由美國航空無線電技術委員會(RTCA)提出的航空工業軟件開發標準,該標準建立了一套航空機載系統和設備合格審定相關的軟件要求[8],定義了軟件開發各個階段的安全性目標,對航電行業的軟件安全性標準影響巨大。

    DO-178B定義了5個軟件層級:A、B、C、D、E,這5個軟件層次所導致的失效狀態是由系統安全評估過程決定的[9]。確定的構件級別應與其能夠產生的最嚴重的失效條件相對應,A級為失效會產生最嚴重后果的等級,之后依次弱化,E級表述為“無安全性影響”[10]。更新的DO-178C[11]標準以附件形式發布了以模型開發、形式化驗證、面向對象、工具鑒定等為代表的新一代軟件研制技術[12]

1.2.2 生命周期

    DO-178B/C定義了各層軟件都應滿足的各個過程的具體目標,定義的軟件生命周期可以劃分為3類過程[13]。軟件計劃過程:定義并協調一個項目的軟件開發與系統集成過程;軟件開發過程:包括軟件需求分析、設計、編碼、整合過程,同時還包括各過程間的跟蹤;整合過程:保證軟件生命周期及其輸出的正確、可控、可信,包括驗證、軟件配置管理、軟件質量保證、合格審定聯絡過程。

1.2.3 工作流程

    根據上述基于模型設計的工作流程和DO178B/C軟件生命周期的各個過程,結合MATLAB/Simulink軟件得到具體的模型化開發方法[14]的工作流程如圖3所示。

qrs1-t3.gif

1.3 Arduino的模型化開發方法

    在MATLAB_supportPackages的配合下,調試完成后的Simulink模型可以直接在Arduino平臺上獨立運行或者與連接的PC配合運行。Arduino平臺可以幫助用戶在不需要手動編程的情況下理解嵌入式系統的設計流程,可以使用Simulink來設計控制系統和機器人應用算法,可以應用基于模型設計技術,在仿真中驗證算法,驗證過程可以符合DO-178B標準,也可以將算法作為獨立的應用程序,在Arduino平臺上的ATmega處理器上實現。結合基于模型的軟件開發工作流程,Arduino的模型化開發方法可以總結為:

    (1)使用Simulink建立仿真模型,在建立的過程中,驗證和確認該模型;(2)模型驗證和確認后,使用Simulink自動生成可以在Arduino上運行的C語言代碼;(3)生成的代碼編譯后下載到Arduino目標機上運行,運行過程數據可以在MATLAB軟件中觀察并且在Simulink中在線整定和修改。

    安裝MATLAB_supportPackages后,Simulink中封裝Arduino平臺模型庫。

2 Arduino模型化開發

2.1 功能需求

    示例開發的功能為通過Arduino模擬量輸入口獲取的熱敏電阻的電阻值,采樣量化后通過一定的算法將該電阻值轉換為當前的溫度值,在白板上寫出溫度值,如果溫度改變,則擦除原有數據,重新寫出當前溫度值。硬件連接好之后,軟件功能可以細分為:(1)讀取Arduino的一路模擬量輸入口;(2)處理模擬數據為溫度值;(3)將溫度值傳送到輸出模塊;(4)輸出模塊擦除原來溫度值,寫入新的溫度值。本節采用模型化的方法對上述功能需求進行開發。

2.2 模型設計

2.2.1 算法設計

    熱敏電阻是電阻值隨溫度變化的半導體傳感器,其典型特點是電阻值對溫度非常敏感,在不同的溫度下會表現出不同的電阻值,從而根據表現的電阻值逆推出其所處的環境溫度值。本文選用負溫度系數熱敏電阻(NTC)503,其電阻值隨溫度的升高而降低,存在一個非線性的已知關系:

qrs1-gs1-2.gif

2.2.2 模型設計和調試

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

qrs1-t4.gif

    通過MATLAB模擬采樣后端口輸入信號,輸入0~1 023全部數據,模型相應輸出經過計算后的溫度值。

2.2.3 模型集成

    新建一個Simulink項目,圖5所示為建立讀取Arduino的模擬量輸入口和處理模擬數據為溫度值以及將溫度值傳送到輸出模塊的模型。設置Pulse Geneartor,更改需要的頻率、占空比,以及相應的pin number等。

qrs1-t5.gif

2.3 自動生成代碼和運行

    在線調試完以后可以進行自動生成代碼和在線燒寫,打開配置窗口,選擇“Prepare to Run”,選擇對應的控制板型號為Arduino Mega 2560,設置端口(可以選自動或手動),設置波特率(相當于IDE編程時setup()函數中的Serial.begin())。設置完成保存后,回到Simulink編輯窗口,點擊"Run"開始自動下載并在完成后運行。

2.4 在線調試

    本文使用的Arduino mega 2560硬件平臺,具有4路串行通信端口與PC進行數據交互,可以在Simulink環境中直接在線整定PID參數、監視實際信號變化,通過Scope工具查看轉換后的實時溫度輸出信號,如圖6所示。

qrs1-t6.gif

3 分析和驗證

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

qrs1-b1.gif

    傳統軟件和系統開發的驗證步驟一般位于項目的末尾,如瀑布模型等。對于復雜系統與軟件項目,如果僅依靠后期驗證發現問題再進行修改,其代價往往是難以估量的,因為問題可能在需求或者設計階段就已經存在了。在基于模型的設計過程中,可以將驗證過程提前到模型設計階段,通過系統早期驗證提高產品質量,縮短開發周期,減少糾錯成本。

    相對于不確定性很高的人工測試來說,對于高安全相關項目,在開發的過程中,就可以使用Simulink Module Advisor工具自動檢測模型是否符合DO-178B標準,也可以檢查模型或子系統的配置是否會導致系統仿真錯誤或者無效,檢查模型設置是否會生成無效代碼。檢查完成后,自動生成報告,列出不符合項,提出模型設置建議。開發人員根據報告進行不符合項的修改,重復檢查過程,直至滿足協議要求。

4 結論

    基于模型的軟件開發是一種新穎的軟件開發的理念和方法,在高安全環境要求下的軟件領域有著廣泛應用。本文介紹了基于模型的軟件開發特點和行業標準,并且與傳統的軟件開發方法進行了對比,總結了基于模型的軟件開發的典型工作流程。在此基礎上,基于MATLAB/Simulink軟件平臺進行Arduino模型化開發實例分析,實現了模型設計、模型調試、自動代碼生成、自動下載運行以及在線調試等功能,并且進行了生成代碼分析和協議符合性驗證,探索了完整的Arduino的模型化開發方法。

參考文獻

[1] BIGLARI H.Past,present and future of satety-critical realtime embedded software development[M].New York:Fairchild Control Corporation,2008.

[2] 王偉,李育挺,馬松輝.基于模型的驗證與測試技術[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的仿真環境設計研究[J].測控技術,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].電子技術應用,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的軟件測試技術研究[J].計算機測量與控制,2013,21(6):1470-1473.

[9] 蔡喁,鄭征,蔡開元,等.機載軟件適航標準DO-178B/C研究[M].上海:上海交通大學出版社,2013:129-130.

[10] 朱和銓,徐浩軍,張鵬,等.模型驅動的軟件構件研制保證水平驗證方法[J].航空學報,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的綜合應用研究[J].航空計算技術,2015,45(1):100-102,107.

[13] 劉杰.基于模型的設計及其嵌入式實現[M].北京:北京航空航天大學出版社,2010:345-349.

[14] 渠博崗,易映萍.基于CCS與MATLAB/Simulink聯合仿真平臺的構建與實現[J].電子技術應用,2016,42(4):106-110.



作者信息:

吳  姣,郝玉鍇,徐  寧,李向東

(中航工業西安航空計算技術研究所,陜西 西安710115)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 日本人成年视频在线观看 | 日皮在线观看 | 国产精品成人观看视频网站 | 另类欧美日韩 | 免费在线观看成人 | 日日做日日摸夜夜爽 | 中文字幕 一区 婷婷 在线 | 国产精品亚洲高清一区二区 | 国产日本在线播放 | 久久精品国产2020观看福利色 | 激情五月视频 | 插深点视频 | 99视频网 | 成年美女黄网站色大免费观看软件 | 九九99在线视频 | 久久青草免费免费91线频观看 | 日韩一区二区三区在线 | 伊人久久99 | 欧洲亚洲一区二区三区 | 一区二区中文字幕在线观看 | 国产成人综合在线观看 | 日韩中文字幕免费 | 国产高清视频一区二区 | 成人免费视频网站www | 天天插天天射天天操 | 成人永久福利在线观看不卡 | a级毛片蜜桃成熟时2在线播放 | 白丝美女私视频 | 天天爱天天做色综合 | a级特黄一级毛片七仙女思春 | 亚欧成人乱码一区二区 | 在线观看91精品国产入口 | 国产成人精品.一二区 | 一区二区网站在线观看 | 欧美久 | 免费香蕉一区二区在线观看 | 色吊丝最新网站 | 欧美综合第一页 | 深夜福利片 | 日本三黄色大 | 韩剧伦理片在线观看 |