在车载控制器的软件开发中,simulink的身影几乎随处可见,主要是在控制算法和控制逻辑的实现。平时看同事点点点就生成代码了,看起来很简单,但是实际操作起来确各种磕磕绊绊。
下面记录了一下步骤作为现阶段的学习笔记吧。
一、建立任务
Matlab的版本为R2014。下图是一个简单的模型,其中Signal为模型输入接口变量,Act为模型输出接口变量,每个Task中的内容均一样。
接口配置需要注意其数据类型和Storage Class,两者影响生成代码中的变量的声明。在Storage type qualifier中可以加入其他的限定符。
这里将Signal全部设定为Double类型的Imported Entern类型,将Act全部设定为Exported Global类型。
二、环境配置
在Simlink模型窗口中选择Simulation | Modele Configuration Parameters命令,弹出如下图所示的参数设置对话框。在左边的目录树中我们关心的项有Solver,Hardware Implementation,Code Generation.
1. Sover 配置
Type选项需要配置成定步长。步长时间和任务调度周期一致。仿真终止时间设置为inf。其他参数为默认。
2. Hardware配置
根据自己的开发环境,选择相应的目标板。
3. Code Generation配置
第一页勾选Generate code only,其它为默认。
在Reprot中勾选生成报告和自动打开报告。
将Interface中data exchange的勾去掉,并将Interface设置为None。配置完毕后点Apply和OK。
三、代码生成
在模型界面Bulid Modle即可自动生成代码。由于我们勾选了报告生成,代码生成完毕后会自动弹出报告。
其中ModelFiles和DataFiles中的5个文件就是和我们模型结构紧密相关的文件。其它的也是运行必须的Mabltab数据类型声明文件。一并拷贝到我们的工程环境编译即可。
四、封装成函数及优先级设置
打开Demo_1.h和Demo_1_Pricat.h可以看到我们定义的输出变量和出入变量。
生成代码时除了我们的任务函数外,Matlab自动生成了初始化的和终止函数。
我们在模型中我们定义了三个Task,但如果不另外配置,生成代码时默认只生成一个函数。如果需要打包到独立的函数和文件中,需要做如下配置。
在Task模块上点右键,选择Block Parameters,勾选treat as acomic unit.
在Code Generation一栏,设置任务的重入属性,函数名,文件名信息。
右键选择Block Properties,在Priority一栏中设置Task优先级ID,该值越小,则任务的执行次序越靠前。
这里我将Task1~3的优先级分别设置为2,1,3。
以下是自动生成代码后的任务顺序。生成了Task的.c和.h文件。任务执行顺序也按照优先级顺序执行。
审核编辑:黄飞
-
控制器
+关注
关注
113文章
16498浏览量
179869 -
Simulink
+关注
关注
22文章
536浏览量
62795 -
代码
+关注
关注
30文章
4841浏览量
69225
原文标题:Simulink自动生成代码笔记
文章出处:【微信号:eng2mot,微信公众号:汽车ECU开发】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
Simulink模型生成代码
Simulink 自动代码生成原理分享
快速原型中SIMULINK模型的代码自动生成
MathWorks推出新款代码生成工具Simulink
Simulink生成嵌入式代码的学习笔记(一)
![<b class='flag-5'>Simulink</b><b class='flag-5'>生成</b>嵌入式<b class='flag-5'>代码</b>的<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(一)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)
![MBD的<b class='flag-5'>Simulink</b>使用技巧:详解<b class='flag-5'>代码</b><b class='flag-5'>生成</b>中的模型与<b class='flag-5'>代码</b>(2)](https://file1.elecfans.com/web2/M00/8C/A8/wKgZomSvpByAN0CaAAG6X2yV0T0613.jpg)
simulink自动生成ROS代码
![<b class='flag-5'>simulink</b><b class='flag-5'>自动</b><b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>](https://file1.elecfans.com/web2/M00/AE/66/wKgaomVUlQ6AdMtWAAI8Hz8F4I8542.jpg)
评论