1699_simulink代码生成配置初级方案

news2024/9/28 17:29:48

全部学习汇总: GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral years ago. (github.com)

大学毕业的时候,关于Simulink代码生成的技术一点也不知道,完全是门外汉。刚刚接触的时候也有那么一点点抵触,觉得可能不可靠。没用多久,这种念头真的是一点也么有了。

不知道什么版本开始有了一个Embedded Coder,自己职业变化的原因没能够继续在这方面深入细化下去。前一阵子简单尝试了一下,连文档都基本没看,发现现在的代码生成似乎比以前简单多了。或许做到比较精神还需要很大的功夫,但是能够满足一般需要的确是没有什么大的门槛了。

搭了几个简单的小模型尝试了一下,筛选了自己比较常用的几个配置选项集中到了一个小脚本里面。一般的simulink模型经过这么简单的配置,简单的代码生成已经基本可以了。

来个小例子:

1,搭建了一个简单的加法计算模型:

,2,定义好数据之后,运行写好的小脚本(代码查看文末)

提示如下:

>> model_config

Warning: Temporarily setting SignalResolutionControl to 'TryResolveAll'.

> In warning at 30

  In disableimplicitsignalresolution at 48

  In model_config at 5

The following signal labels will be forced to resolve to signal objects:

- sum_value  (used by: add_test/Add/1)

- number2  (used by: add_test/number2/1)

- number1  (used by: add_test/number1/1)

The following states will be forced to resolve to signal objects:

... none found ...

Restoring SignalResolutionControl to 'UseLocalSettings'.

此时,不仅模型的简单配置完成端口上的信号线也已经跟定义好的数据关联完毕,信号线上都已经加上了小叉子。

3,接下来Ctrl + B的组合键启动代码生成,略等一下完成代码生成并生成一份代码生成报告。

其中,文件的分割管理跟变量定义时相关的,相关的属性需要在数据定义的时候指定。代码注释等信息当然也是可以自己设定的,带着这些信息的话对模型与代码之间的对应追踪还是很有帮助的。

下面看一下生成的代码(我只把主要的逻辑部分展示出来,其他部分可以自己进行模型搭建尝试):

比较令我意外的是这个初始化的函数,居然还给定义时没有进行初始化的变量进行了赋值为0的初始化操作。

其实,模型搭建也是一件很细致的工作,可以配置的参数也是非常多的。拿上面的例子来说,主要的逻辑意义我们已经做完了,也基本上是我们很多时候想要的结果。但是,变量定义的时候我定义的两个输入数字以及一个输出值都是无符号32位数,很明显的一点是这个计算没有考虑溢出保护。

在模型的加法模块参数配置中,把溢出保护的相应部分给勾选上,代码中便会增加溢出保护的相应逻辑。修改后再次代码生成,代码主要部分如下:

如上代码,一个重要的变化就是增加了溢出保护。

现在的MATLAB模块多的令我惊奇,用了多年的MATLAB后来发现其中的一个模块都未能把功能用全。远了不说,在现在的汽车电子行业,未来的逻辑开发在很长的一段时间内估计都会是MATLAB simulink的天下。

最后,附件一下自己的小脚本代码:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Grey 2015.12.01 @BeiJing

% Configurations for simulink code generation with Embeded Coder.

%

disableimplicitsignalresolution(bdroot);

set_param(bdroot,'Solver','ode3');

set_param(bdroot,'SystemTargetFile','ert.tlc');

set_param(bdroot,'GenerateMakefile','off');

set_param(bdroot,'GenerateComments','on');

set_param(bdroot,'GenerateTraceInfo','on');

set_param(bdroot,'GenerateReport','on');

set_param(bdroot,'LaunchReport','on');

set_param(bdroot,'GenerateASAP2','on');

set_param(bdroot,'GenerateSampleERTMain','off');

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

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

相关文章

数据库篇:初始化、建表、配置及调用

微信小程序云开发实战-答题积分赛小程序 数据库篇:初始化、建表、配置及调用 开通云开发服务 点击【云开发】,开通云开发服务; 开通服务完成后,方可继续往下操作; 题库数据表初始化 创建数据表 点击【数据库】,然后点击【+】创建数据表;

彻底告别手动配置任务,魔改xxl-job!

分析 改造 1、接口调用 2、创建新注解 3、自动注册核心 4、自动装配 测试 测试后 XXL-Job是一款非常优秀的任务调度中间件,其轻量级、使用简单、支持分布式等优点,被广泛应用在我们的项目中,解决了不少定时任务的调度问题。不仅如此&a…

RabbitMQ 简单模型

MQ引言 1.1 什么是MQ ​ MQ(Message Quene) : 翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵…

chatGPT+Midjourney制作绘画本

chatGPTMidjourney制作绘画本 灵感来源:https://www.bilibili.com/video/BV1N24y1F7ga/?spm_id_from888.80997.embed_other.whitelist&vd_source6dd97671c42eb7cf111063714216bd0b 最终效果: 绘本故事 故事塑造能力弱的人可以使用chatGPT来帮助编…

wait/waitpid函数等待子进程状态发生改变

🎊【进程通信与并发】专题正在持续更新中,进程,线程,IPC,线程池等的创建原理与运用✨,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列…

【自看】2023前端面试上岸手册——VUE部分

目录 Vue 的基本原理双向数据绑定的原理MVVM、MVC、MVP 的区别slot 是什么?有什么作用?原理是什么?\$nextTick 原理及作用Vue 单页应用与多页应用的区别Vue 中封装的数组方法有哪些,其如何实现页面更新Vue data 中某一个属性的值发…

商品管理系统【控制台+MySQL】(Java课设)

系统类型 控制台类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87738976 更多系统资源库地…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-匝道跟车基础功能

书接上回 2.3.3匝道辅助驾驶 匝道辅助驾驶功能根据导航引导在ODD范围内辅助驾驶车辆进出匝道,主动变道并入或开出主路,并可根据导航路线引导车辆通过跨高速连接路。 前置条件: 1)驾驶员设置导航目的地及导航路线 2)开启辅助驾驶功能,系统进入NOA功能 2.3.3.1.上下匝道…

如何设计一个可扩展的优惠券功能

本文主要分享了如何设计一个可扩展的优惠券功能。 一、功能特性介绍 1.每个条件的代码独立,相当于单独的实现类实现接口,就能通过配置添加到优惠券条件校验当中,支持多种条件灵活组合 2.新增一种使用条件可以不修改核心流程代码&#xff0…

Angular 与PDF之二:打印预览的实现

如何在angular中实现打印和预览pdf的功能, 使用print.js这个包就可实现这个功能 Print.js介绍 Print.js可以打印pdf文件,html元素,图片。官网 https://printjs.crabbly.com/ Print.js使用 首先新建一个angular项目,在项目里下载print.js n…

[JS每M日N练] [格物] - 你所不知道的toString

文章目录 导读Object.prototype.toString常见类型转换结果Object.toString ! Object.prototype.toString对Object.prototype.toString.call(obj)的理解 .toString.toString TypeError误区tostring被改写了定义在原型链的什么位置上方法重写 文章小结参考资料 导读 开发过程中经…

同时使用注解和 xml 的方式引用 dubbo 服务产生的异常问题排查实战

文章目录 一、现象二、问题排查三、结论四、解决方案 一、现象 使用 nacos 作注册中心的线上 dubbo 消费端应用每隔 1 分钟就会抛出以下异常(为使描述简单化,文章中使用本地 demo 来复现),该异常表示无法连接到 172.17.0.1:20881…

JavaWeb( 二 ) URL

1.4.URL统一资源定位符 URL代表Uniform Resource Locator 统一资源定位符,也叫 URL地址 。是用于标识和定位Web上资源的地址,通常用于在Web浏览器中访问网站和文件。 URL由若干部分组成,scheme:// host : port / path 例如: htt…

Contest3111 - 计科2101~2104算法设计与分析上机作业07

问题 A: 有重复元素的排列问题 题目描述 设R{ r 1 , r 2 , …, r n }是要进行排列的n个元素。其中元素r 1 , r 2 , …, r n 可能相同。试设计一个算法, 列出R的所有不同排列。给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。 输入 第1 行是元素个…

android四大组件之一-Activity实现原理分析

前言: 这篇文章是我花费时间最久的一篇文章,整整的两个月。整个流程繁琐是一个方面的原因,另外一个原因是我想尽可能的把整个流程的逻辑尽可能详细的一一描述出来,以及结合到我们项目中遇到的一些问题来进行解释,毕竟…

【五一创作】VS+Qt主界面内嵌自定义控件的四种方法以及不同自定义控件数据交互

前言 在Qt界面开发过程中,一个主界面或者主窗口看成是各个控件排列组合后的集合,对于一些项目而言,有些常用的控件可以封装成自己想要的控件样式并且复用,比如说,log显示控件,图像/视频显示控件等&#xf…

【ros2】ros melodic迁移到ros2 dashing过程中碰到的问题及解决方法

序言 总结踩坑经历,以利他人 1. error: forming pointer to reference type … & 报错原因: ros2回调函数的参数不能是引用形式 &,需要去除& 解决方法: 如果是指针引用,直接去除引用 void Callback(con…

【Java开发】Spring Cloud 11:Gateway 配置 ssl 证书(https、http、域名访问)

最近研究给微服务项目配置 ssl 证书,如此才可以对接微信小程序(需要使用 https 请求)。传统单体项目来说,首先往项目中添加证书文件,然后在配置文件中配置 ssl 证书路径、密码等相关信息;那么微服务这么多项…

机器学习强基计划8-5:图解局部线性嵌入LLE算法(附Python实现)

目录 0 写在前面1 流形学习2 局部线性嵌入算法2.1 什么是局部线性嵌入?2.2 算法原理推导 3 Python实现3.1 算法流程3.2 核心代码3.3 可视化 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的…

基于学生成绩管理系统(附源代码及数据库)

基于Ecplise,jsp的学生成绩管理系统 目录 登录页面 系统主页 管理员账号管理 学生查询 课程管理 成绩管理 后台数据库 源代码下载(含数据库) 毕设项目专栏 分为以下四大板块: 系统用户管理: 包含管理员账号管理&#…