生成路径 vs 设置_Simulink代码生成之模型配置

a2597ac6276411f3713f8f37d0782283.png

欢迎关注我的微信公众号【新能源动力电池与BMS】,头条号:【阿Q在江湖】;所有文章资料会在公众号首发。

本文已同步录制视频讲解:Simulink代码生成之模型配置_视频教程 - 知乎。

PS:前段时间,传出美国禁用一些高校使用正版Matlab软件,有些人说是否有可替代的软件?Python替代Matlab软件m语言编写的部分功能似乎问题不大,不过Simulink呢?似乎还没有可替代的吧?

Simulink是Matlab中非常独特而重要的一个建模工具,能够通过图形化模块快速建模并仿真,同时可自动生成C代码,下载到硬件中,使得复杂系统的算法仿真与开发变的非常高效(比如汽车行业、航空航天都已广泛使用Simulink建模仿真与开发)。要生成嵌入式C代码需要提前将模型进行一些参数配置。下面列举模型配置的一些步骤。

必须配置项

1. 打开模型参数配置面板(Configuration parameters)

3fd09ec637a07533eec7eb19a3671b37.png

在菜单栏打开上图图标或者快捷键Ctrl+E,打开模型配置参数面板。

2. 解算器设置(Solver)

313681878e45ce9114437b0f04056843.png

Ø 解算器类型(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

d3d72dd5e31b1624ec07cd175df011b7.png

d8e53dc760d4adc453e24e51e6742821.png

Ø 系统目标文件(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)

4428d9c48b4f830ce1147223cb0e1c64.png

路径:Hardware Implementation -->>Device vendor/ Device type

这里选择的是你要将代码下载到的硬件MCU/DSP的型号。

优化项

1. 信号与参数(Signal and Parameters)

377a219ac503c9a730c41f1f8937967e.png

路径:Optimization -->> Signal and Parameters-->>Code generation

勾选Inline invariant signals.提高生成的C代码可读性,将模型常量直接代入,如果不勾选则是变量代替。根据实际情况确定是否要勾选。

2. 代码打包文件

7a950f5a4d95da430cf12283c75e6dc7.png

路径:Code Generation -->> Code Placement-->>Code Packaging

控件选择Compact,这样打包生成的C代码文件数量少而紧凑一些。

3. State-flow优化配置

1f5e3959dac3289bb885018300e98e97.png

本案例没有使用State-flow展示,但是状态机的应用是很广泛的。

路径:Optimization -->> Stateflow-->>Code generation

勾选两项,是将代码的整数换算成位运算,提高计算效率。比如BMS很多状态机都是位运算。

模型案例

0793606cf4a49d65aa2a90b10b0eb010.png

生成C代码

6e6396ec2985db81d19b2e59f483bdab.png

菜单栏找到代码生成图标点击(或快捷键Ctrl+B)

1521ce454be3d36d2dce458677ddd3bb.png

生成的C代码主函数分为三部分结构,初始化函数、rt_onestep被定时中断调用(即本模型的算法函数)、终止函数。

64b7773003cd4fe18b4c8ff6e7232769.png

上图为模型算法函数,中断定时调用。

总结

以上列举了Simulink自动生成嵌入式代码几个基础的必要配置以及一些优化代码的方法。当然生成的C代码与手写的相比,可读性还是比较差的,其实还有一些方法设置可以改善生成代码的可读性,留待下次再分享。以上仅供参考。

本文已同步录制视频讲解:Simulink代码生成之模型配置_视频教程 - 知乎。

欢迎关注我的微信公众号/知乎专栏:【新能源动力电池与BMS】,头条号:【阿Q在江湖】

737088d5507d9d62c3f46591dd0d3b54.png

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

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

相关文章

常见电容器图片_各种电容器图片大集合

图1是胆;图2是灯具;图3是mkph电容;图4是met电容;图5、图10是pei电容;图6是胆贴片电容;图7是mpe电容;图8是贴片电容;图11是轴向电解电容器;图12是mpp电容。图1是ppn电容&a…

解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾

解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾 原文 解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾 php做为一门当下非常流行的web语言,常常看到有人求解密php文件,想当年的asp也是一样。一些人不理解为什么要混…

bootstrap 合并菜单_Bootstrap与tab组合,切换菜单实例

Test$(function () {$(#myTab a:last).tab(show);//初始化显示哪个tab$(#myTab a).click(function (e) {e.preventDefault();//阻止a链接的跳转行为$(this).tab(show);//显示当前选中的链接及关联的content})})HomeProfileMessagesSettings服务器.home....profile...messages..…

WCF 宿主与通信模式(二)

宿主 每个WCF服务都必须托管在Windows进程中,该进程称为宿主进程(host process) 单个宿主进程可以托管多个服务,相同的服务类型也可以托管在多个宿主进程中。 wcf中托管服务一般有一下四种: 寄宿方式 描述 Console寄宿 利于开发调试&#…

mysql端口被占用_MySQL重启端口被占用处理

1,查看日志的ERROR2018-05-23T01:26:59.230382Z 0 [Warning] NO_AUTO_CREATE_USER sql mode was not set.2018-05-23T01:26:59.230409Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled2018-05-23T01:26:59.230…

poj 3660 传递闭包 **

题意:题目给出了m对的相对关系,求有多少个排名是确定的。 链接:点我 如果这个点到其他点的关系是确定的,那么这个点就是确定的,注意如果这个点到不了其他点,但其他点能到这个点,那么这个点和其他…

C# 网络编程之webBrowser获取网页url和下载网页中图片

该文章主要是通过C#网络编程的webBrowser获取网页中的url并简单的尝试下载网页中的图片,主要是为以后网络开发的基础学习.其中主要的通过应用程序结合网页知识、正则表达式实现浏览、获取url、下载图片三个功能.而且很清晰的解析了每一步都是以前一步为基础实现的. 一.界面设计…

mysql员工脚本_mySQL常用脚本汇总

mysql的常用脚本有哪些呢?我们来做个总结建表语句sql语句最后指定主键DROP TABLE IF EXISTS user_info1;CREATE TABLE user_info1 (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,name varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT 姓名,password varcha…

多线程 调用多线程的方法 Runtime与ProcessBuilder

一般我们使用Java运行其他类中的方法的时候,无论是静态调用还是动态调用,都是在当前的进程中执行的。也就是只有一个Java虚拟机实例在运行。有时候需要通过Java代码启动多个Java子进程,这样做会消耗些资源,但是程序变得更稳定。因…

mysql可连接_mysql开启远程可连接

1.打开cmd窗口,进入MySql安装的bin目录2.执行命令登录数据库,之后会出现一行要你输入密码的mysql -u root -p3.执行以下命令分配新用户:grant all privileges on *.* to ‘用户名‘‘IP地址‘ identified by ‘密码‘;4.执行完上述命令后用下面的命令刷新…

ubuntu14.04 python2.7 安装配置OpenCV3.0

环境:ubuntu14.04 python2.7 内容:安装并配置OpenCV3.0 今天按照OpenCV官网上的步骤装了OpenCV但是,装好之后python提示“No module named cv2” 首先,安装OpenCV的步骤: OpenCV官网的安装步骤:http://doc…

mysql导出如何不区分大小写_mysql 不区分大小写

show variables like %case%-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_case_table_names | 1 | 表示已经是支持忽略大小写了-------------------------------修改 /etc/mysql/…

[iOS] Win8下在Vmware11中安装使用苹果系统OS X 10.10

近来因为人事变动,领导打算安排我做 iOS 的项目,所以需要花一些时间提前准备一下iOS相关的东西。因为自己手头上并没有 Mac(过年为了闲的时候能玩玩游戏买了联想,唉),想想不能只靠每天在公司的时间练 demo …

html5的网络书店图书网站代码_【技能提升】10个编写HTML5的实用小技巧

1. 新的文档类型(Doctype)html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>上面这个既麻烦又难记的XHTML文档类型你还在使用吗?如果还是这样的话,现在该切换到新的HTML5文档类型…

hdu2457 Trie图+dp

hdu2457 给定n个模式串, 和一个文本串 问如果修改最少的字符串使得文本串不包含模式串, 输出最少的次数,如果不能修改成功,则输出-1 dp[i][j] 表示长度为i的字符串, 到达状态j(Trie图中的结点)…

sql中if语句的用法_Python中的if条件语句

Python中的if语句在实际的编程中,经常需要检查一系列条件,并据此决定采取什么措施。正常情况下,程序的执行是自上而下的进行,if语句则根据条件判断,实现程序的执行顺序改变。一、if-else语句1、语法:if 条件…

mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法

权限问题,授权 给 root 所有sql 权限 mysql> grant all privileges on *.* to root"%" identified by ".";Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)转载于:https://www.cnbl…

mysql中non用什么_mysql Non-Transactional Database Only(只支持MyISAM)

后来在做WordPress,一开始还不知道原来WordPress用的是InnoDB数据引擎,于是在原来的数据库里面就建了一个数据库,一开始也没发觉问题,安装,导入sql,都没问题,当时也没多想。直到这几天因为又要装多一个Word…

openSUSE 11 上的配置可以Xmanager远程桌面

openSUSE 11 上的配置(适用于默认图形环境为KDE的Linux): 1、配置KDM。 openSUSE 11的默认图形环境为KDE,虽然可以同时安装GDM和KDM,但默认只启动了KDM。所以openSUSE 11只需配置KDM,如果你启动了GDM来代替KDM,则配置可…

timed_waiting线程是否占用cpu_程序CPU占用率飙升,如何定位线程的堆栈信息?超详细,值得收藏看不懂还有配套视频 第319篇...

相关历史文章(阅读本文前,您可能需要先看下之前的系列?)国内最全的Spring Boot系列之三2020上半年发文汇总「值得收藏」GraphQL的探索之路 – SpringBoot集成GraphQL小栗子篇二 - 第315篇GraphQL的探索之路 – SpringBoot集成GraphQL之Query篇三 - 第316篇GraphQL的…