一种使用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.数学计算器软件有哪些?数学计算器app推荐数学计算器app推荐了比较好的数学计算软件。网上使用的比较多的有desmos函数绘图,内含强大的符号计算引擎功能,可以绘制出各种公式的图形,可以处理平方根、绝对值、微积分等多种数学公式!还有照片数学photomath,也称之为拍照数学计算器!提供了比较方便的拍照计算功能,可以提供完整详细的数学公式解题思路,使用率非常高!另外http://www.downcc.com/k/shuxuejisuanqi/
2.2024年推荐算法效率开发必备工具榜单算法软件算法软件有哪些WakaTime 是一款轻量级工作统计软件,其通过插件配置的方式内嵌到开发常用的办公开发软件中,在无感知的情况下统计相关工作时间,推荐算法场景下,常用的 Pycharm、Idea、CLion、VS Code、Word、Excel、PowePoint、iterm2、Sublime Text 等均适配 WakaTime。每天各个项目的开发时长、每天浏览网页与编码时间的对比、每日代码语言https://blog.csdn.net/2401_87225440/article/details/142346207
3.4款值得推荐的AI辅助编程工具(支持C#语言)腾讯云开发者社区在这个AI迅速发展的阶段,涌现出了一大批好用的AI辅助编程工具。AI辅助编程工具能够提高开发效率、改善代码质量、降低bug率,是现代软件开发过程中的重要助手。今天大姚给大家分享4款AI辅助编程工具(并且都支持C#语言),希望对大家有所帮助。 AI辅助编程工具 https://cloud.tencent.com/developer/article/2411330
4.编程工具软件推荐哪个高人气免费编程工具软件精选软件技巧QEMU是一款功能强大的虚拟机软件,它能够模拟运行各种不同的操作系统,并且支持跨平台运行。用户可以通过QEMU来创建虚拟机,从而在不同的操作系统之间进行迁移和移植。QEMU还提供了丰富的指令集支持和调试工具,使得用户可以更加方便地进行汇编编程和系统设计。同时,QEMU还具有高度可定制化的特点,用户可以根据自己的需求进行配置https://xiazai.zol.com.cn/jiqiao/243718.html
5.原书第3版计算机算法设计与分析书籍程序编程设计软件工程教程当当镜像文化图书专营店在线销售正版《【设计模式 可复用面向对象软件的基础 精装版 】 【文轩】算法导论第三版 原书第3版 计算机算法设计与分析书籍程序编程设计软件工程教程教材 图解算法基础入门自学正版黑皮书【镜像文化专营店】》。最新《【设计模式 可复用面向对象软http://product.dangdang.com/11874412858.html
6.软件设计师教程pdf《软件设计师教程》51CTO软考2023年上半年软件设计师教程没有改版,仍然2018年审定通过的《软件设计师教程》(第5版),虽然没有改版,不过在2022年的时候对封面进行了改版,所考生可能在网上看到过两种不同的封面。 2023年上半年软件设计师教程目录 (注:每年可能有小部分修订,所以页码可能对不上) 第1章 计算机网络概论 1 1.1 计算机系统基础知识https://edu.51cto.com/rk/13405.html
7.算法设计与分析北京交通大学课程目标3. 通过本课程的学习,学习者应能对专业相关的复杂工程问题进行分析,对问题抽象和建模,设计并实现解决该问题的算法,并能对该算法的效率进行理论分析,对算法和程序进行优化。学习者应能了解算法理论的发展,能够学习和使用一种或多种算法软件。 展开 https://www.xuetangx.com/course/bjtu0701fgw/21231399
8.2020届计算机科学方向毕业设计(论文)阶段性汇报于收集数据方面,在APEX实验室的帮助下,获得了7千余例HDU和POJ上的源代码及其对应的标签,大大加快了课题的进展。于设计算法方面,基于目前现有的研究都依靠语法树、控制流图和数据流图进行分析的现状,初步设计了从源代码直接入手进行分类的软件。目前的F1分数约在70左右,正在试验各种修改以及优化。https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
9.16家企业携一大波工作机会等您来澎湃号·政务澎湃新闻三、软件工程师 人数:5人 薪资:4100-7500元/月 岗位要求: 1.本科及以上学历,计算机、电气自动化、测控等相关专业; 2.至少精通C++、C#或其他一门编程语言; 3.熟悉SQL Server数据库的使用; 4.熟悉一定的数据结构及算法,具有清晰的逻辑思维; 5.具备较强的团队合作精神,良好的沟通能力; https://www.thepaper.cn/newsDetail_forward_7051009
10.《高级算法设计与分析》试卷及答案卷2.docxPAGE6PAGE《高级算法设计与分析》期末试卷(试卷2)姓名:___学号:___要求:所有题目的解答均写在答题纸上,需写清楚题目序号。每张答题纸都要写上姓名和学号一、选择题(每题3分,共45分)下面问题不能用动态规划求解的是:A:0-1背包问题B:矩阵连乘问题C:两点之间最长路径问题D:最大子数组问题贪心算法能够获得最https://www.renrendoc.com/paper/365498544.html
11.平面设计软件有哪些?2,高超的图像处理算法,让平面设计更清晰—— PS 3,专注绘制矢量图形与排版,智能高效的平面设计软件—— CorelDraw 一,高效全能的平面设计软件,既有设计工具,又有设计资源——即时设计 使用即时设计来完成平面设计工作是一个不错的选择。即时设计提供的设计工作不但能让平面设计工作进行得非常顺利,它提供的设计资源还能https://js.design/special/article/what-is-the-graphic-design-software.html
12.实验八团队作业4:团队项目需求建模与系统设计任务4:以任务1的成果为基础,应用面向对象设计(OOD)方法,撰写团队项目软件系统设计说明书,以回答:软件是如何实现用户需求的? (1) 采用适合的软件设计模式设计软件系统总体结构; 经过详细的讨论,我们的开心农场软件比较适合使用策略模式,策略模式是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换,且算法https://www.cnblogs.com/mxrk/p/13053135.html
13.软考中级软件设计师考什么内容?软考2.2 计算机软件知识 2.2.1 数据结构与算法知识 数组 链表 队列、栈 树 图的定义、存储和基本操作 杂凑(Hash 表) 常用的排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递 归算法、图的相关算法 算法描述和分析 2.2.2 操作系统知识 操作系统的内核 https://www.educity.cn/rk/2066451.html
14.软件设计说明书需要包含哪些内容?软件设计说明书是软件开发过程中非常重要的文档,它记录了软件系统的整体设计方案、模块设计、接口设计、数据结构设计以及算法设计等内容。一个完整的软件设计说明书通常包含以下内容: 引言:介绍软件设计说明书的目的、范围、背景和相关文档。 总体设计:描述软件系统的总体架构,包括系统的功能模块划分、模块之间的关系、数据https://www.mbalib.com/ask/question-ff6945fd968b543f2cf4d008f88fb2c0.html
15.趣学算法(第2版)2~7章讲解经典算法,包括贪心算法、分治算法、动态规划算法、回溯法、分支限界法、网络流算法。第8章讲解实际应用中的算法和高频面试算法,包括启发式搜索、敏感词过滤、LRU算法、快慢指针、单调栈、单调队列、零钱兑换、股票交易等。每一种经典算法都有4~8个实例,多数按照问题分析、算法设计、完美图解、算法详解、https://www.epubit.com/bookDetails?id=UB7d85fa69dcbd8
16.适用于MEMS传感器的软件解决方案,采用图形化无代码算法设计适用于MEMS传感器的软件解决方案,采用图形化无代码算法设计,支持开发嵌入式AI功能 获取软件 产品概述 描述 MEMS-Studio是一套完整的桌面软件解决方案,专为开发嵌入式AI功能、评估嵌入式库、分析数据,以及为整个MEMS传感器产品组合设计无代码算法而设计。这款独特的软件解决方案提供了多功能的开发环境,支持评估和编程所有MEhttps://www.st.com/zh/development-tools/mems-studio.html
17.驭源科技条码专家一款服务于生产、零售、物流、仓库的简单方便、云端架构的标签设计打印软件,并可与ERP等系统集成,同时集成防伪码标签打印与微信扫码辨真伪功能。 十四年坚持,超强算法,数万用户,历经多年双11压力检验,企业用户支持每日打印上限高达1亿张! 基于云计算 + 与ERP等系统对接打印 +防伪码打印,微信扫码验真伪 http://www.56ck.com/
18.招聘:无人机/飞机研发设计人工智能算法软件/硬件/试飞/营销类无人机总体设计工程师 航电系统工程师 飞控设计/飞控算法/飞行动力学建模工程师 导航系统/导航算法工程师 旋翼设计工程师 强度/结构工程师 起落架设计工程师 传动系统工程师 发动机/电机/电气系统/电调算法工程师 燃油系统工程师等 软件工程师(C/C++/Java/Android) https://jobs.zhaopin.com/CC531907520J40338791103.htm
19.房屋设计软件在线房屋设计软件房屋设计软件下载三维家房屋设计软件平台,提供在线房屋设计软件、3D模拟房屋设计软件、房屋设计软件下载,房屋设计软件有哪些、房屋设计软件哪个好用可选择三维家房屋设计软件免费下载试用。https://www.3vjia.com/solve/realty
20.我需要视频图片处理人工智能图像识别算法软件定制在线编辑需求标题 我需要视频图片处理人工智能图像识别算法软件定制在线编辑 需求描述 我需要-- Android安卓app开发定制我们拥有杰出的安卓APP研发团队,可根据您的需求定制各类安卓APP,我们致力于为您提供高品质的一站式安卓APP开发解决方案,主力您的智能生活 -- iOS苹果app开发定制针对主流iphone、ipad等平台设备,实行原生APP定制https://www.zbj.com/xq/jH9zOQneyv5l8dkl.html