您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
Simulink代码生成: 信号线、参数配置
 
 
   次浏览      
 2021-4-14
 
编辑推荐:
在汽车嵌入式软件开发中,需要正确地配置Simulink的信号和参数,才能生成相应的标定量、输入输出变量和观测量。本文通过一个例子总结笔者工作中所用的配置方法。
本文来自于CSDN,由火龙果软件Linda译、推荐。

在汽车嵌入式软件开发中,需要正确地配置Simulink的信号和参数,才能生成相应的标定量、输入输出变量和观测量。本文通过一个例子总结笔者工作中所用的配置方法。

1 问题引入

在Simulink代码生成(一) Embedded Coder配置这一篇博客中,没有对输入输出信号做任何配置就生成了代码。此时生成的代码表现为结构体的形式,并且是在模块内定义的。

一个模型的输入信号可能来源于其他模型的输出或者底层软件,因此这样直接在自身代码内部的定义方式显然是不符合实际开发需求的。笔者在工作中是通过配置输入输出信号线对象,即Simulink.Signal对象,生成了特定存储方式的代码。

2 输出信号配置

首先建立一个Simulink模型demo1.slx,并将输出信号线命名为Output1,如图所示。

在Matlab命令行输入:

1 >> Output1 = Simulink.Signal;

此时,在右侧的工作区创建了一个名为Output1的Signal对象。双击该对象,将其配置如下图:

其中,Data Type表示其数值类型为single型,Initial Value表示初始值设为10,Storage Class设为ExportToFile表示该变量输出到外部文件,下面的HeaderFile和DefinitionFile表示外部的C文件和头文件。1

然后回到模型demo1.slx,右击Output1信号线,选择Properties打开该信号线的属性窗口。在窗口中勾选Signal name must resolve to Simulink signal object,将该信号线和刚刚定义的Signal对象关联起来2。关联后模型中会出现一个小叉子的图标。

然后生成代码,打开报告。在demo1.c的step函数中可以看到,输出变量命名为了Output1,而不是之前的Demo_Y.Out的结构体。initialize函数中可以看到,将Output1初始化为了10,与之前配置相吻合。

那么,这个Output1是在哪儿定义的呢?打开Demo1_Output.c就可以看到Output1的定义了,这与之前的StorageClass配置相吻合。

然后,在Demo1_Output.h中用extern关键字外部定义了Output1,也就是说其他的模型如果要输入Output1这个变量,代码中只需要包含Demo1_Output.h这个头文件即可。可以注意到,demo.c文件中包含了demo.h头文件,demo1.h头文件中包含了Demo1_Output.h头文件。

3 输入信号配置

配置输入信号的步骤与输出信号相似,要给信号线命名并关联。但是在Signal对象中要把StorageClass设置为ImportFromFile,并且只需要填入HeaderFile头文件。这里假设Input1是Demo2输出的。

生成的代码中,demo1_private.h包含Demo2_Output.h头文件。但是不会生成这个头文件,因为这个变量是Import的,属于别的文件中定义的。并且Input1这个变量也不会在initialize函数中初始化。

4 观测量配置

观测量和输出信号配置类似,都是输出到外部文件。不过最好在C文件命名上体现其中的是观测量。

5 标定量配置

标定量在汽车软件中是可以被标定工具所修改的,因此需要有volatile关键字修饰。标定量在模型中不是以信号线存在的,而是作为某个模块的参数,常见的是作为Const模块的参数。

如图所示,将Simulink中Const的参数定为一个标定量。

然后,在Matlab命令行定义一个Parameter对象

1 >> Calibration1 = Simulink.Parameter;

打开该对象,配置参数信息。

其中,Value表示代码中的赋值,StorageClass、HeaderFile和DefinitionFile表示存储类型为Volatile和所在文件。

然后,不需要像信号线一样关联对象,直接生成代码。就会多生成标定量的C文件和头文件,其中定义了标定量。

在step函数中用了这个标定量。如果用标定工具修改了这个量,就会在MCU中生效。

6 总结

本文只是笔者所用到的对信号线和参数的配置方法。在实际工作中根据不同的项目特点可以进行其他配置。

   
次浏览       
 
相关文章

UML概览
UML图解:用例图(Use case diagram )
UML图解:活动图(activity diagram )
UML图解:类图(class diagram )
UML图解:对象图(object diagram)
UML图解:顺序图( sequence diagram )
 
相关文档

模型跟踪:跟踪图、矩阵、关系(建模工具EA)
自定义表格(Custom Table)在EA中的使用
元素的详情浏览控制
UAF 1.2规范解读(DMM 和 UAFML )
EA中支持的各种图表
EA中的界面原型建模
 
相关课程

UML与面向对象分析设计
UML + 嵌入式系统分析设计
业务建模与业务分析
基于SysML和EA进行系统设计与建模
基于模型的需求管理
业务建模 & 领域驱动设计
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
iPerson的过程观:要 过程 or 结果
“以人为本”的工程哲学
企业架构、TOGAF与ArchiMate概览
UML 图解:顺序图( sequence diagram )
UML 图解:对象图( class diagram )
最新课程
基于UML和EA进行系统分析设计
UML+EA+面向对象分析设计
基于SysML和EA进行系统设计与建模
UML + 嵌入式系统分析设计
领域驱动的建模与设计
更多...   
成功案例
某电信运营供应商 应用UML进行面向对象分析
烽火通信 UML进行面向对象的分析设计
西门子 UML与嵌入式软件分析设计
航天科工某子公司 从系统到软件的分析、设计
深圳某汽车企业 模型驱动的分析设计
更多...