一种使用MATLAB/Simulink的Arduino模型化开发方法AET

MATLAB是由MathWorks公司发布的面对科学计算、可视化以及交互式程序设计的高性能计算环境。

Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。

本文研究了基于模型的软件开发特点和在高安全软件开发领域主要工作流程,基于MATLAB/Simulink软件平台进行Arduino模型化开发实例分析,实现了模型设计、模型调试、自动代码生成、自动下载运行以及在线调试等功能,进行Arduino的模型化开发方法研究和分析。

1基于模型的软件开发

基于模型的软件开发使用了模型设计的工作流程和开发与测试相结合的软件开发平台,使得系统设计和验证过程相统一,减少了开发成本,缩短了开发周期,降低了软件缺陷率[5]。在基于模型的软件开发过程中,系统模型是设计的基础,需求分析、设计实现和测试验证的过程都是围绕系统模型进行的。模型在整个设计实现的过程中不断被细化、分解和复用,模型的测试和验证配合实际实现同步进行,产品的缺陷随着开发过程的进行不断地暴露和解决,避免了实现完成后测试发现问题再进行更改的现状,同时自动代码生成有效地减少了人为引入错误的可能,自动化的验证和确认使测试工程师能够开发完整的、基于需求并可在自动产生的代码上重用的测试用例。

1.1与传统软件开发方法的对比

传统的软件开发流程模型如图1所示。基于模型的设计流程模型如图2所示。

相对于传统的软件开发方法,基于模型的设计优势在于:

(1)开发和验证测试的过程始终结合在一起,产品从需求分析到设计和实现的各个阶段均通过模型进行不断的验证;(2)产品的缺陷可以在初期的需求分析阶段通过模型验证暴露出来,大大降低了后期设计完成后测试的难度和更改量,开发者只需关心算法和模型设计,源代码使用工具软件自动进行生成和测试验证;(3)缩短了开发周期,降低了开发成本。

1.2基于模型的软件开发工作流程

1.2.1行业标准

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

1.3Arduino的模型化开发方法

在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平台模型库。

2Arduino模型化开发

2.1功能需求

示例开发的功能为通过Arduino模拟量输入口获取的热敏电阻的电阻值,采样量化后通过一定的算法将该电阻值转换为当前的温度值,在白板上写出温度值,如果温度改变,则擦除原有数据,重新写出当前温度值。硬件连接好之后,软件功能可以细分为:(1)读取Arduino的一路模拟量输入口;(2)处理模拟数据为温度值;(3)将温度值传送到输出模块;(4)输出模块擦除原来温度值,写入新的温度值。本节采用模型化的方法对上述功能需求进行开发。

2.2模型设计

2.2.1算法设计

热敏电阻是电阻值随温度变化的半导体传感器,其典型特点是电阻值对温度非常敏感,在不同的温度下会表现出不同的电阻值,从而根据表现的电阻值逆推出其所处的环境温度值。本文选用负温度系数热敏电阻(NTC)503,其电阻值随温度的升高而降低,存在一个非线性的已知关系:

2.2.2模型设计和调试

根据式(2)及具体参数值,设计经过Arduino模拟量读取端口采样和量化(0~1023)后的电阻值转换为温度值的算法模型图4所示。

通过MATLAB模拟采样后端口输入信号,输入0~1023全部数据,模型相应输出经过计算后的温度值。

2.2.3模型集成

新建一个Simulink项目,图5所示为建立读取Arduino的模拟量输入口和处理模拟数据为温度值以及将温度值传送到输出模块的模型。设置PulseGeneartor,更改需要的频率、占空比,以及相应的pinnumber等。

2.3自动生成代码和运行

在线调试完以后可以进行自动生成代码和在线烧写,打开配置窗口,选择“PreparetoRun”,选择对应的控制板型号为ArduinoMega2560,设置端口(可以选自动或手动),设置波特率(相当于IDE编程时setup()函数中的Serial.begin())。设置完成保存后,回到Simulink编辑窗口,点击"Run"开始自动下载并在完成后运行。

2.4在线调试

本文使用的Arduinomega2560硬件平台,具有4路串行通信端口与PC进行数据交互,可以在Simulink环境中直接在线整定PID参数、监视实际信号变化,通过Scope工具查看转换后的实时温度输出信号,如图6所示。

3分析和验证

生成程序代码共9794行,其中有效代码行数为5924行,占60.17%,注释行数为2541行,占25.81%。有9个程序头文件,25个c/cpp程序文件,可执行文件hex和bin各一个,可以直接下载到目标机运行,其他中间文件40个。生成的代码和程序涉及的功能如表1所示。

传统软件和系统开发的验证步骤一般位于项目的末尾,如瀑布模型等。对于复杂系统与软件项目,如果仅依靠后期验证发现问题再进行修改,其代价往往是难以估量的,因为问题可能在需求或者设计阶段就已经存在了。在基于模型的设计过程中,可以将验证过程提前到模型设计阶段,通过系统早期验证提高产品质量,缩短开发周期,减少纠错成本。

4结论

基于模型的软件开发是一种新颖的软件开发的理念和方法,在高安全环境要求下的软件领域有着广泛应用。本文介绍了基于模型的软件开发特点和行业标准,并且与传统的软件开发方法进行了对比,总结了基于模型的软件开发的典型工作流程。在此基础上,基于MATLAB/Simulink软件平台进行Arduino模型化开发实例分析,实现了模型设计、模型调试、自动代码生成、自动下载运行以及在线调试等功能,并且进行了生成代码分析和协议符合性验证,探索了完整的Arduino的模型化开发方法。

参考文献

[1]BIGLARIH.Past,presentandfutureofsatety-criticalrealtimeembeddedsoftwaredevelopment[M].NewYork:FairchildControlCorporation,2008.

[2]王伟,李育挺,马松辉.基于模型的验证与测试技术[J].计算机测量与控制,2013,21(4):987-989.

[4]赵广元,王文庆,蔡秀梅.基于Arduino和Matlab/Simulink的仿真环境设计研究[J].测控技术,2015,34(8):123-125.

[5]YuShitao,YangShiwei,YangLin,etal.Module-baseddevelopmentofreal-timesoftwaresystemforelectronicunitpumpsystem[J].ChineseJournalofMechanicalEngineering,2007,20(1):25-30.

[6]金志威,刘万和,薛茜男,等.形式化方法在机载电子硬件研制中的应用研究[J].电子技术应用,2015,41(6):143-146.

[7]RTCA/DO-178B.Softwareconsiderationsinairbornesystemsandequipmentcertification[Z].WashingtonD.C:RadioTechnicalCommissionforAeronautics,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.Softwareconsiderationsinairbornesystemsandequipmentcertification[Z].WashingtonD.C:RadioTechnicalCommissionforAeronautics,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.

THE END
1.10种软件开发模型整理软件开发模型(SoftwareDevelopment Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不https://blog.csdn.net/Python_cocola/article/details/139201333
2.软件开发的演变:从瀑布模型到敏捷开发再到DevOps以及更进一步在充满活力的技术世界中,我们用来创建软件的方法和过程发生了重大变革。软件开发方法论的演变证明了我们不断追求效率、质量和适应性的执着。早期的软件开发是一个线性而严格的过程,常常被比喻为建筑物的构造过程。这种被称为瀑布模型的方法是第一种结构化的软件开发方法论。然而,随着软件项目的复杂性和规模的增长,https://baijiahao.baidu.com/s?id=1772626118339722000&wfr=spider&for=pc
3.结构化软件开发方法12篇(全文)结构化软件开发方法 第1篇 随着计算机技术的普及和推广, 各类型软件广泛受到各行业人员的青睐, 人们对软件产生了极大的依赖, 随着这一趋势的不断发展, 人们对软件的质量要求越来越高, 如何保证软件的质量已成为软件工程领域的一项重要任务。软件质量决定了软件的寿命, 软件质量关系到软件的使用与维护。任何软件在投入https://www.99xueshu.com/w/ikeyiz6c3hxc.html
4.“项目经理”都会的软件开发七大过程模型腾讯云开发者社区六、Rational统一模型 七、微软过程模型 Hello,你好呀!我是灰小猿,一个超会写bug的程序猿! 今天来和大家分享一下在进行系统的软件开发的过程中常用的七大软件过程模型,熟悉软件开发常用的几种模型方法。助力每一个程序员小伙伴都可以尽早成为项目经理哟! https://cloud.tencent.com/developer/article/1992167
5.12软件工程形式化方法模型:建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。 信息系统开发方法 结构化方法 结构是指系统内各个组成要素之间的相互联系、相互作用的框架。 结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析(Structured Analysis.SA)、结构化设计(Structhttps://www.jianshu.com/p/7bc53361b193
6.测试开发工程师笔试题4、关于软件测试模型,描述正确的是( C ) A、V模型测试的对象就是程序本身,测试与开发可以同一阶段进行 B、W模型测试的对象是程序,需求、设计等,可以支持迭代的开发模型 C、H模型软件测试过程活动完全独立,贯穿产品整个生命周期,与其他流程并发地进行。 https://www.yjbys.com/qiuzhizhinan/show-433971.html
7.专刊征文“面向知识图谱和大模型的工业软件的开发新方法为此,《武汉大学学报(理学版)》与中国软件大会(ChinaSoft2024)合作征稿,出版“面向知识图谱和大模型的工业软件的开发新方法”专题,旨在探讨知识图谱和大模型在工业领域软件开发相关基础理论、关键技术、支撑平台等问题,以及相关成果在产业界的应用。《武汉大学学报(理学版)》是国内知名期刊,也是北大核心期刊和CSCD-C收录https://issi.xidian.edu.cn/info/1019/1442.htm
8.第3章软件开发过程管理解析.ppt第3章软件开发过程管理解析.ppt,3.2.5 螺旋模型 螺旋模型总结 基于风险驱动的开发模型, 使用原型法或其它方法来尽量降低风险。 适用于需求不明确的大规模软件项目 本章内容提要 CMM和ISO9000 传统软件开发生命周期模型 扩展软件开发生命周期模型 3.1 质量计划 3.4 案例分析 https://max.book118.com/html/2017/0118/84874806.shtm
9.UML技术等五种实现面向对象的软件开发方法解析在软件开发过程中经常会用到UML技术,这里就向大家简单介绍一下几种面向对象软件开发方法的主要思想,欢迎大家一起来学习,相信本文的介绍一下会让你受益。 上节我们介绍了UML技术的一些基础知识,本节向大家介绍一下几种常用的面向对象的软件开发方法,主要从五个方面来介绍,相信通过本节的学习大家对UML技术有深一步的https://www.51cto.com/article/204376.html
10.高正贤:寻找产品开发中的“达芬奇密码”新闻频道其实,在台上展示的任何一个产品功能点,都是台下无数工程师、设计师,经过无数产品的软件和硬件的巨量设计,开发,测试、和各专项准备工作,一起共同努力的最终成果。一个产品解构下来商业成功,都是客户,企业,和行业共同进步,凝结成的结晶。 今天主要跟大家分享六个部分内容:https://news.hexun.com/2020-04-28/201175728.html
11.CMMI5项目经理角色访谈学习笔记CMMI认证项目特有环境,例如:开发服务器。 3、关键过程举例说明 ⑴、项目过程定义(过程剪裁) 在项目过程定义中,在项目级QA的协助下,参考《组织过程裁剪指南》和《软件生命周期》裁剪定制适合于项目的生命周期模型,制定《项目定义过程》。例如:接口设计过程,在项目定义中剪裁到详细设计文档中体现。 https://www.cmmirz.com/cmmi5-project-manager-interview-note/
12.软件开发模型有哪些?各有什么特点软考软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。那么软件开发模型有哪些?各有什么特点? 1、原型模型 典型的原型开发方法模型。适用于需求不明确的场景,可以帮助用户明确需求。 2、瀑布模型 瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析https://www.educity.cn/rk/5024807.html
13.软件设计师一篇文章让你读懂什么是软件工程与系统开发原型是预期系统的一个可执行版本,反应了系统性质的一个选定子集。一个原型不必满足目标软件的所有约束,其目的是为了能快速,低成本构建原型。能够采用原型方法是因为开发工具的快速发展,使得能过迅速地开发出一个能被用户看得见的系统。 开发原型系统首先确定用户需求,开发初始模型,然后征求用户对初始模型的改进意见,然后https://developer.aliyun.com/article/1515202
14.软件系统开发中常用的建模方法有哪几类(2)平台无关模型(PIM)(3)平台相关模型(PSM),又称平台特定模型从1到3,从抽象到具体 2、基于模型的软件开发生命周期业务建模:计算无关模型,CIM需求:需求分析:平台无关模型,PIM设计:平台有关模型,PSM编码:代码 3、软件建模方法: 结构化方法 (Structured Method)面向对象方法(Object Oriented Method)基于构件的开发https://zhuanlan.zhihu.com/p/88324971
15.软件工程案例教程:软件项目开发实践第4版——韩万江姜立新br />2.2.9 模型驱动开发方法422.2.10 无代码开发模式432.3 软件工程方法对比442.4 软件逆向工程442.5 基于容器技术的软件工程化管理442.6 MSHD项目案例说明452.7 小结462.8 练习题46第3章 软件项目的需求分析483.1 软件项目需求概述483.1.1 需求定义493.1.2 需求类型493.1.3 需求的重要性503.2 传统需求工程http://m.cmpedu.com/books/book/5606545.htm
16.汽车软件开发V模型V模型是一个软件开发生命周期模型,其中的流程执行是以V形顺序进行。它也称为Verification和Validation模型。 这里先介绍一下:Verification和Validation都有“验证”的意思,区别请看下表。 V模型是瀑布模型的扩展,它最大的特点就是每个开发阶段都对应一个测试阶段。这是一个高度严格的模型,下一阶段必须在上一阶段完成后https://www.yoojia.com/ask/17-11761094752671053585.html