0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Simulink自动生成代码现阶段的学习笔记

汽车ECU开发 来源:汽车ECU开发 2024-04-17 10:56 次阅读

在车载控制器的软件开发中,simulink的身影几乎随处可见,主要是在控制算法和控制逻辑的实现。平时看同事点点点就生成代码了,看起来很简单,但是实际操作起来确各种磕磕绊绊。

下面记录了一下步骤作为现阶段的学习笔记吧。

一、建立任务

Matlab的版本为R2014。下图是一个简单的模型,其中Signal为模型输入接口变量,Act为模型输出接口变量,每个Task中的内容均一样。

c072df3a-f090-11ee-a297-92fbcf53809c.png

c08d4366-f090-11ee-a297-92fbcf53809c.png

接口配置需要注意其数据类型和Storage Class,两者影响生成代码中的变量的声明。在Storage type qualifier中可以加入其他的限定符。

这里将Signal全部设定为Double类型的Imported Entern类型,将Act全部设定为Exported Global类型。

c09b4ac4-f090-11ee-a297-92fbcf53809c.png

二、环境配置

Simlink模型窗口中选择Simulation | Modele Configuration Parameters命令,弹出如下图所示的参数设置对话框。在左边的目录树中我们关心的项有Solver,Hardware Implementation,Code Generation.

1. Sover 配置

Type选项需要配置成定步长。步长时间和任务调度周期一致。仿真终止时间设置为inf。其他参数为默认。

c0ab4f96-f090-11ee-a297-92fbcf53809c.png

2. Hardware配置

根据自己的开发环境,选择相应的目标板。

c0bf4d2a-f090-11ee-a297-92fbcf53809c.png

3. Code Generation配置

第一页勾选Generate code only,其它为默认。

在Reprot中勾选生成报告和自动打开报告。

将Interface中data exchange的勾去掉,并将Interface设置为None。配置完毕后点Apply和OK。

c0e9133a-f090-11ee-a297-92fbcf53809c.png

c0ffa01e-f090-11ee-a297-92fbcf53809c.png

三、代码生成

在模型界面Bulid Modle即可自动生成代码。由于我们勾选了报告生成,代码生成完毕后会自动弹出报告。

c1248bcc-f090-11ee-a297-92fbcf53809c.png

其中ModelFiles和DataFiles中的5个文件就是和我们模型结构紧密相关的文件。其它的也是运行必须的Mabltab数据类型声明文件。一并拷贝到我们的工程环境编译即可。

四、封装成函数及优先级设置

打开Demo_1.h和Demo_1_Pricat.h可以看到我们定义的输出变量和出入变量。

c13f3eea-f090-11ee-a297-92fbcf53809c.png

c153bdde-f090-11ee-a297-92fbcf53809c.png

生成代码时除了我们的任务函数外,Matlab自动生成了初始化的和终止函数。

c169d330-f090-11ee-a297-92fbcf53809c.png

我们在模型中我们定义了三个Task,但如果不另外配置,生成代码时默认只生成一个函数。如果需要打包到独立的函数和文件中,需要做如下配置。

在Task模块上点右键,选择Block Parameters,勾选treat as acomic unit.

c17d446a-f090-11ee-a297-92fbcf53809c.png

c1923794-f090-11ee-a297-92fbcf53809c.png

在Code Generation一栏,设置任务的重入属性,函数名,文件名信息

右键选择Block Properties,在Priority一栏中设置Task优先级ID,该值越小,则任务的执行次序越靠前。

c1a79eb8-f090-11ee-a297-92fbcf53809c.png

这里我将Task1~3的优先级分别设置为2,1,3。

以下是自动生成代码后的任务顺序。生成了Task的.c和.h文件。任务执行顺序也按照优先级顺序执行。

c1cf21cc-f090-11ee-a297-92fbcf53809c.png

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15242

    浏览量

    171251
  • Simulink
    +关注

    关注

    22

    文章

    513

    浏览量

    61572
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66826

原文标题:Simulink自动生成代码笔记

文章出处:【微信号:eng2mot,微信公众号:汽车ECU开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于模型设计的HDL代码自动生成技术综述

    手动编写HDL代码的效率、优势,介绍了几种HDL代码自动生成方法和工具,总结了基于Matlab/Simulink的HDL
    发表于 06-08 09:29

    视频教程-基于Simulink的FPGA代码自动生成技术-Matlab 精选资料推荐

    基于Simulink的FPGA代码自动生成技术
    发表于 07-20 06:40

    Simulink模型生成代码

    本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件。最后将软件下载到STM32F407中,通过串口输出
    发表于 08-11 07:56

    SIMULINK下的STM32F4的自动代码是如何生成

    SIMULINK下的STM32F4的自动代码生成Author:zhou ...
    发表于 08-12 07:34

    simulink自动生成C代码

    项目需求,最近刚开始学习simulink自动生成C代码,通过Keil编译并下载到STM32F103单片机,因为刚开始
    发表于 08-17 07:17

    如何利用Simulink自动生成可以在STM32单片机运行的代码

    如何利用Simulink自动生成可以在STM32单片机运行的代码
    发表于 11-19 06:41

    基于Simulink代码生成过程是怎样的?

    基于Simulink代码生成过程是怎样的?
    发表于 02-18 07:46

    Simulink 自动代码生成原理分享

    多出来一些目标系统可以选择。自定义目标系统是为了让Simulink生成代码能根据用户的需要,与底层驱动做集成。我们首先需要了解Simulink目标编译的流程,如下图,
    发表于 05-31 11:19

    快速原型中SIMULINK模型的代码自动生成

    快速原型仿真是实时仿真的一种,它处于产品研发的算法设计阶段与具体实现阶段之间,是产品研制过程中一个重要环节。本文介绍了在快速原型系统中如何利用MATLAB/SIMULINK代码
    发表于 04-17 22:16 69次下载

    MathWorks推出新款代码生成工具Simulink

      MathWorks 今日宣布 Simulink 代码生成工具箱已通过 Embedded Coder 嵌入到 Freescale 的新款 Motor Control Development Toolbox 中。该工具箱包括
    发表于 04-26 08:39 1173次阅读

    Simulink生成嵌入式代码学习笔记(一)

    Simulink,这次笔记不涉及S-Function以及Stateflow,详情见更新2.建模学习嘛,当然是从最简单的开始啦!(主要是好)...
    发表于 10-20 22:05 3次下载
    <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>(一)

    MBD的Simulink使用技巧:Simulink代码生成的基本概念(1)

    MATLAB/Simulink中一共提供三个代码生成的工具
    的头像 发表于 07-13 15:11 1421次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:<b class='flag-5'>Simulink</b><b class='flag-5'>代码</b><b class='flag-5'>生成</b>的基本概念(1)

    MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)

    上一篇文章中提到,生成嵌入式代码,必须选择定步长求解器。实际中,生成嵌入式代码几乎不会使用Simulink模型库中的连续模型,往往需要通过最
    的头像 发表于 07-13 15:13 3000次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:详解<b class='flag-5'>代码</b><b class='flag-5'>生成</b>中的模型与<b class='flag-5'>代码</b>(2)

    利用Simulink自动生成STM32串口代码

    功能:利用Simulink自动生成STM32串口代码,在Keil中编译后直接下载到主芯片,实现串口通讯的功能。
    的头像 发表于 10-25 17:04 1056次阅读
    利用<b class='flag-5'>Simulink</b><b class='flag-5'>自动</b><b class='flag-5'>生成</b>STM32串口<b class='flag-5'>代码</b>

    simulink自动生成ROS代码

    当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink代码
    的头像 发表于 11-15 17:53 351次阅读
    <b class='flag-5'>simulink</b><b class='flag-5'>自动</b><b class='flag-5'>生成</b>ROS<b class='flag-5'>代码</b>