Simulink自动代码生成:如何标准化的建模?以MAB,MISRA C 2012建模规范为例

news2024/11/28 18:58:39

目录

为什么要规范建模

MAB,MISRA C2012建模规范步骤

常用的规范总结

生成代码配置

总结

为什么要规范建模

MathWorks 咨询委员会 (MAB) 规范规定了在 Simulink® 和 Stateflow® 中建模的重要基本规则。这些建模规范的总体目的是让控制系统模型的建模者和使用方能实现简单、共同的理解。这些规范的主要目标是实现易读的仿真和验证以及代码生成。现在汽车电子代码,项目管理等很多都需要标准化管理,自然模型的建模都需要遵循一定的标准。这里总结了MAB的建模标准的一些常用规则,方便建模初期有一定的意识,避免建模完成后再去调整降低工作效率。

MAB,MISRA C2012建模规范步骤

MathWorks Advisory Board (MAB),规则很多,想要全部记住也不可能,所以Simulink提供了一个规则检查,方便我们去根据规则调整模型,非常方便。如下是MAB的标准规则文档:

Control Algorithm Modeling Guidelines Using MATLAB ® , Simulink ® , and Stateflow ®
Version 5.0

 操作如下:

 选择需要标准化的模型进行检查

 选择需要检查的标准,如MISRA C 2012, ISO 26262等,这里选MAB

 

 检查完后可以在右边查看通过了哪几项,还有哪几项没通过,没通过的就是需要去调整的。如下通过83,没通过34项。

 

选一个Warning进行修改,检查子系统命名 

根据MAB规范,这里名字不能有空格,只能是数字,字符和下划线,也不能在模块上方。

 改完后再点Run This Check检查通过如下:

 MISRA C 的Check需要检查配置参数

 

 改到没有任何Warning 

 

常用的规范总结

 常用MAB标准总结

在建模的时候把一些常用的标准记住,可以减少后期更改的工作量。如:

1. 模块的前景色设置为黑色,背景色为白色

2. 模块命名时不要带空格

3. 模块名要在模块的下方

4. 自定义的模块名或者端口名要显示,没有自定义系统默认的模块名或者端口名要隐藏

5. 信号线与信号线不能相交(没有实际连上)

6. 除反馈路径上的模块外,所有顺序块必须从左向右放置。

7. 除反馈路径上的模块外,所有平行块必须从上到下放置。

8. 所有的方块都应该朝右

9. 两个子系统之间如果有信号传递,至少要有一根线直接连接起来,不能全是From

10.没有用到的信号需要删掉,如Terminate

11.输入端子标签的命名,要和端子信号线保护一致且,且输入端子的标签需要添加

 12. 信号的标签不要和其他的信号或者模块重叠,标签要放在信号线的下方

 13. 信号线上的标签要紧靠上一个输出模块,如输入输出和运算输出

 

14. Multi-Port Switch 要选择One-based contiguous

 

 15. 常数模块里面不要给数字,给定义的变量名

16. 加运算只能有两个输入且第一个输入是“+”,圆形的加和方块加功能一样,但是反馈回路用圆形的加

 

 17. 乘法和加法一样只能有两个输入且第一个输入对应“*”

 18. 输入端子统一放在模型的最左边且对齐,输出端子统一放在所有模块最右端且对齐

参考文档:Control Algorithm Modeling Guidelines Using MATLAB ® , Simulink ® , and Stateflow ®Version 5.0

生成代码配置

MAB只是建模的规范,和生成代码没有太大直接关系,这里配置生成代码规则满足MISRA C的标准,需要配置如下选项:

这里配置执行效率和MISRA C 以及 可追溯性选项

 打开生成代码Check Model,会根据配置的选配进行Check然后指导对模型调整,如这里配置了执行效率优先,Check的时候会以此为大前提推荐调整查表等配置,以使模型生成代码后执行效率最高。

 如下是调整模型后的Check结果,经过调整后这里Index需要从0-5,而建模的时候是从1-6,功能不影响,执行效率不影响,但是不符合MAB规范。这里可以先不作调整。其他配置都检查通过了。

 生成代码如下,检查通过了22项,还有2项警告,只需要按照警告提示进行调整即可,功能并不影响

 

总结

模型规范化的工作量还是不小的,尽量在一开始的时候有一个大体的概念,避免后期规范化的时候重复工作。在这个过程中也会遇到一些冲突性的问题,如

遇到个Bug,在调整MAB标准的时候,有如下警告(可能是软件版本的原因,也有可能是配置问题):

要取消 Hide ALL Link才能去掉

 

 暂且把这次规范化的操作总结一下,MAB的规范好几百个,简单总结了常用的一些,减小后期调整的时间。后续有问题再作补充。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义ESLint规则和修复功能

这是接上一篇自定义ESLint规则开发与使用的后续扩展,之前文章中详细讲述了怎么创建一个自定义的规则,这篇文章讲述怎么实现ESLint在检测出有问题的代码时,怎么自动fix问题。 比如我们要检测项目中所有http的协议,将其替换为https协…

Power BI 存储模式介绍(导入、DirectQuery、双)

本系列的文章: 《Power BI windows下载安装流程)》《Power BI 11个必学官方示例数据案例(附下载链接)》《Power BI 数据导入(SQL Server、MySQL、网页数据)》 一、背景原因 一般情况下,我们是…

测试开发面试基础题

1.对测试开发的理解 测试开发首先离不开测试,而软件测试是指,在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 而且,现在不仅仅是通过手工测试来发…

安装less-loader5出现webpack版本不兼容

今天遇到一个问题: 安装less-loader5之后其它包提示peerDependencies WARNING,意思是包版本不兼容。 【难题】 虽然NPM已经很自动化了,但依赖问题真的是一个难题,无法自动解决,需要人工干预调整。 【解决办法】 去查…

用户选择好用的投票小程序最有用的投票小程序微信推送里投票制作教程

“夏日非遗传承活动”网络评选投票_用户选择好用的投票小程序_最有用的投票小程序用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务…

医学生考研考博太卷,一篇文章轻松助力上岸——生物信息学及R语言基础知识之向量的生成(一)

考研考博太卷了,卷不过,想没想过本科发一篇文章呢? 330分考研人淘汰390分考研人这个故事,大家应该都知道吧。 本专栏带你六个月内,搞定一篇文章,本科生发文章也很容易。 在卷考研的同时,再卷一篇SCI,你就是新一任卷王。 本专栏教你不用花钱发一篇生信文章,从三个方…

带你了解软件测试是做什么的

软件测试是互联网技术中一门重要的学科,它是软件生命周期中不可或缺的一个环节,担负着把控、监督软件的质量的重任。 人才稀缺,对于求职者来说就意味着机会。但是很多想学习软件测试的人对这个学科并不了解,也不知道该如何学习&a…

Vue3的新特性

文章目录1 生命周期的变化2 使用proxy代替defineProperty2.1 Object.defineProperty()语法2.2 Proxy的语法3 Diff算法的提升3.1 以往的渲染策略3.2 Vue3的突破4 TypeScript的支持5 优化打包体积6 新的响应性 API6.1 reactive()6.2 <script setup>6.3 nextTick()6.4 react…

【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译

文章目录【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译摘要1. 简介2. 方法2.1 半监督框架概述2.2 监督局部对比学习2.3 下采样和块划分3. 实验4. 结论【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译 论文题目&#xff1a;Semi-supervised Contrastive Learning for Labe…

Kafka 消息队列

目录主流的消息队列消息队列的应用场景缓存/肖锋解耦异步处理KafkaKafka的定义Kafka的底层基础架构Kafka分区如何保证Leader选举Kafka分区如何保证Leader和Follower数据的一致性Kafka 中消费者的消费方式Kafka 高效读写数据的原因&#xff08;高性能吞吐的原因&#xff09;&…

chatGPT爆火让我们反思——人工智能是新的加密货币吗?

核冬天技术末日到来了&#xff0c;只有人工智能幸免于难。峰值 AI 指标无处不在。它能保持加密失去的信念吗&#xff1f;作者&#xff1a;John Luttig 翻译: Chainwise核冬天技术末日到来了&#xff1a;软件、SPAC、金融科技和加密货币都进入了深度冻结状态。AI 可能是唯一穿着…

JavaWeb_RequestResponse

目录 一、概述 二、Request对象 1.Request继承体系 2.Request获取请求数据 ①获取请求行数据 ②获取请求头数据 ③获取请求体数据 ④获取请求参数 3.Request请求转发 三、Response 1.Response设置响应数据功能 ①响应行 ②响应头 ③响应体 2.请求重定向 3.路径问…

原生开发 之 微信小程序

目录 一、前期预备 1. 预备知识 ​2. 注册账号 - 申请AppID 3. 下载小程序开发工具 4. 小程序项目结构 ​5. 小程序的MVVM架构 二、创建小程序项目 1. 查看注册的appId ​2. 创建项目 ​3. 新建页面 01 - 创建text页面文件夹 ​02 - 新建text的page ​03 - 在app.json中配置 ​…

Python Paramiko stdout 多进程 阻塞 卡住 问题解决

使用paramiko进程远程操作时&#xff0c;如果缓冲区满了&#xff0c;exec_command在写入该缓冲区时会产生阻塞并一直保持阻塞状态&#xff0c;直到缓冲区被清空为止。 使用multiprocessing无疑会加重这种情况&#xff0c;其中一种解决办法是设置exec_command的get_pty参数为Tru…

商城业务:购物车

人生在世如身处荆棘之中&#xff0c;心不动&#xff0c;人不妄动&#xff0c;不动则不伤&#xff1b;如心动则人妄动&#xff0c;伤其身痛其骨&#xff0c;于是体会到世间诸般痛苦。 1、购物车需求 1&#xff09;、需求描述&#xff1a; - 用户可以在登录状态下将商品添加到购…

【项目】---快速搜索工具

目录 一、项目背景 二、项目需求分析 三、项目涉及的知识点 四、项目实现的基础理论 五、项目框架 六、增加系统工具模块 6.1、扫描本地的文件的功能 七、增加数据管理模块 7.1、先了解数据库sqlite 7.2 封装sqlite数据库管理类 7.3、封装数据管理类 7.3.1增加搜索…

成都女子情人节给东莞男子送巧克力,却被后者典当后换成望京卡牌

一年一度的情人节已经来临&#xff0c;每年的这个时候&#xff0c;都是少男少女们欢庆的节日&#xff0c;因为他们可以借助送礼物&#xff0c;各自表达对另一半的爱慕之情。然而由于中国人的传统观念&#xff0c;一般都是男方给女方送礼物&#xff0c;女方给男方送礼物的就凤毛…

宝塔搭建实战php开源likeadmin通用管理移动端uniapp源码(四)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上一期给大家分享了pc端的部署方式&#xff0c;今天来给大家分享uniapp端在本地搭建&#xff0c;与打包发布到宝塔的方法。感兴趣的朋友可以自行下载学习。 技术架构 vscode node16 vue3 uniapp vite types…

PageHelper分页查询

分页查询分页查询的优点所谓分页,就是查询结果数据较多时,采用按页显示的方法,而不是一次性全部显示分页的优点:服务器:一次性查询所有信息,服务器压力大,分页查询服务器压力小客户端:一次性显示所有信息,需要更多流量,加载时间也会更长,分页显示没有这个问题用户体验上:一般最…

Hot 100 | 287. 寻找重复数

LeetCode 287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须&…