生成路径 vs 设置_Simulink代码生成之模型配置
欢迎关注我的微信公众号【新能源动力电池与BMS】,头条号:【阿Q在江湖】;所有文章资料会在公众号首发。
本文已同步录制视频讲解:Simulink代码生成之模型配置_视频教程 - 知乎。
PS:前段时间,传出美国禁用一些高校使用正版Matlab软件,有些人说是否有可替代的软件?Python替代Matlab软件m语言编写的部分功能似乎问题不大,不过Simulink呢?似乎还没有可替代的吧?
Simulink是Matlab中非常独特而重要的一个建模工具,能够通过图形化模块快速建模并仿真,同时可自动生成C代码,下载到硬件中,使得复杂系统的算法仿真与开发变的非常高效(比如汽车行业、航空航天都已广泛使用Simulink建模仿真与开发)。要生成嵌入式C代码需要提前将模型进行一些参数配置。下面列举模型配置的一些步骤。
必须配置项
1. 打开模型参数配置面板(Configuration parameters)
在菜单栏打开上图图标或者快捷键Ctrl+E,打开模型配置参数面板。
2. 解算器设置(Solver)
Ø 解算器类型(Type):
路径:Solver-->>Solver options-->>Type
默认是变步长(Variable-step),需要设置为固定步长(Fixed-step)。因为嵌入式代码是要下载到硬件中实时执行,硬件的时钟源都是晶振提供的稳定时钟源,所以解算器必须采用固定步长。
Ø 解算器算法选择(Solver):
路径:Solver-->> Solver options -->> Solver
这里选择discrete算法
Ø 步长(Fixed-step size):
路径:Solver-->>Additional options-->> Fixed-step size
根据需要一般要选择一个固定数值,其单位为秒。步长是相邻两个采样点之间的时间间隔,相当于模型中算法的最小单位调用周期。这里选择0.1,即100ms采样一次。
3. Code Generation
Ø 系统目标文件(Target selection)
路径:Code Generation-->>Target selection-->> System Target file
这里一般选择与嵌入式相关的系统目标文件,如ert.tlc;如果选择autosar.tlc,那么会生成符合autosar接口标准的车规级代码。
Ø 编译过程(Build process)
路径:Code Generation-->> Build process
因为我们只为了看生成的C代码,这里勾选generate code only
4. 硬件设备选择(Device vendor)
路径:Hardware Implementation -->>Device vendor/ Device type
这里选择的是你要将代码下载到的硬件MCU/DSP的型号。
优化项
1. 信号与参数(Signal and Parameters)
路径:Optimization -->> Signal and Parameters-->>Code generation
勾选Inline invariant signals.提高生成的C代码可读性,将模型常量直接代入,如果不勾选则是变量代替。根据实际情况确定是否要勾选。
2. 代码打包文件
路径:Code Generation -->> Code Placement-->>Code Packaging
控件选择Compact,这样打包生成的C代码文件数量少而紧凑一些。
3. State-flow优化配置
本案例没有使用State-flow展示,但是状态机的应用是很广泛的。
路径:Optimization -->> Stateflow-->>Code generation
勾选两项,是将代码的整数换算成位运算,提高计算效率。比如BMS很多状态机都是位运算。
模型案例
生成C代码
菜单栏找到代码生成图标点击(或快捷键Ctrl+B)
生成的C代码主函数分为三部分结构,初始化函数、rt_onestep被定时中断调用(即本模型的算法函数)、终止函数。
上图为模型算法函数,中断定时调用。
总结
以上列举了Simulink自动生成嵌入式代码几个基础的必要配置以及一些优化代码的方法。当然生成的C代码与手写的相比,可读性还是比较差的,其实还有一些方法设置可以改善生成代码的可读性,留待下次再分享。以上仅供参考。
本文已同步录制视频讲解:Simulink代码生成之模型配置_视频教程 - 知乎。
欢迎关注我的微信公众号/知乎专栏:【新能源动力电池与BMS】,头条号:【阿Q在江湖】
生成路径 vs 设置_Simulink代码生成之模型配置相关推荐
- java core 生成路径_core文件生成和路径设置
在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...
- 设置Linux core file生成路径
core文件生成路径: 输入可执行文件运行命令的同一路径下. 若系统生成的core文件不带其他任何扩展名称,则全部命名为core.新的core文件生成将覆盖原来的core文件. 1)/proc/sys ...
- Simulink代码生成(二)——代码生成时模型的配置方法及操作流程
Simulink代码生成(二)--代码生成时模型的配置方法及操作流程 文章目录 Simulink代码生成(二)--代码生成时模型的配置方法及操作流程 一.模型 二.代码生成设置 1.步长选择 2.系统 ...
- 【simulink专题】matlab 2022a如何生成A2L文件设置
前言 在我们使用的Simulink建模过程中,会使用标定量,最终在模型设置中勾选ASAP2 Interface设置后生成A2l文件达到查看标定量的目的,但是最近有小伙伴发现,在新版MATLAB 202 ...
- autoware使用rosbag数据生成路径点并进行路径规划(七)
autoware使用rosbag数据生成路径点并进行路径规划(七) 第一步启动autoware和播放数据包 $ cd ~/autoware.ai $ source install/setup.bash ...
- python使用lassocv生成影像组学(radiomic)模型的系数表
python使用lassocv生成影像组学(radiomic)模型的系数表 目录 python使用lassocv生成影像组学(radiomic)模型的系数表 #lassocv模型构建
- 简述一下生成对抗网络GAN(Generative adversarial nets)模型?
简述一下生成对抗网络GAN(Generative adversarial nets)模型? 生成对抗网络GAN是由蒙特利尔大学Ian Goodfellow在2014年提出的机器学习架构. 要全面理解生 ...
- 怎么修改云服务器项目路径,云服务器tomcat的项目路径怎么设置
云服务器tomcat的项目路径怎么设置 内容精选 换一换 华为云提供两种连接方式通过MySQL客户端连接实例:非SSL连接和SSL连接.其中,SSL连接实现了数据加密功能,具有更高的安全性.登录弹性云 ...
- 所选驱动器不再有效,继续安装之前,请先检查安装路径的设置
用VS2010打开VS2008写的VB.NET程序,但打不开:后来一想,我VB.NET都没有安装:于是来将VB.NET,但添加VB.NET,点击"更新"后弹出错误"所选驱 ...
最新文章
- asp打印html,asp.net教程之利用ASP在浏览器上打印输出
- access查询女教师所有的信息_【9月3日报名必看】教师资格证报名如何查询报名成功及修改报名信息?...
- linux epoll 模型详解
- python avg_python闭包
- WordPress 主题教程 #5c:日志元数据
- js循环出来的数据补全_加推实战之数据预测
- 20.Azure备份Azure上的虚拟机(中)
- 在线URL转sitemap工具
- python能处理数据的优点_Python在数据处理方面的优缺点
- 串口通讯---实现 PC 端之间串口连接传输文件
- 7. gdal进行遥感影像的16位转8位和百分比截断增强(看这篇就够了)
- python装饰器和异常处理_装饰器异常处理-面向对象编程-Python教程自动化开发_Python视频教程...
- 转载 GIS地图知识
- 小米电视怎么看cctv?安装电视家教你锁定2022世界杯“观赛位”
- 华北理工计算机学院官网,2019上半年华北理工大学计算机等级考试报名通知
- URLRewrite实现url地址伪静态化
- CF1611E1 Escape The Maze (easy version)+ CF1611E2 Escape The Maze (hard version)
- 自定义字体在HTML项目中的使用
- DataGrid列自定义显示(模板)
- 有道云笔记Windows版不显示图片
热门文章
- C++中两个数交换不引进中间变量的方法
- ubuntu安装pytorch镜像修改及下载
- 南方科技大学计算机交换生,国际合作 – 合作交流分类 – 南方科技大学生物医学工程系...
- C++11系列学习之四----auto
- 华为mate30怎么申请鸿蒙内测,华为新系统启动内测,mate30系列尝鲜,网友:羡慕...
- VS2017 调用Tesseract
- OO第三单元总结:JML
- Linux命令(七)Linux用户管理和修改文件权限
- Java命令学习系列(零)——常见命令及Java Dump介绍
- python until语句_详解Lua中repeat...until循环语句的使用方法