覆盖默认C步骤功能接口
此示例展示如何为基于速率的模型自定义步长函数名称和参数。为了遵守代码指南和标准,或者轻松地将生成的代码与外部代码集成,您可以自定义步骤函数的这些方面:
函数名
参数名称
论证的顺序
返回值和参数数据限定符
参数的缓冲优化
您可以使用从Code Mappings编辑器中打开的特定于模型的配置对话框进行步骤函数定制。
打开“配置”对话框
1.打开并保存模型的副本rtwdemo_fcnprotoctrl到可写位置。
2.打开嵌入式编码器应用程序。
3.单击代码映射- C选项卡。
4.在代码映射编辑器中,单击功能选项卡。要刷新视图,单击更新代码映射按钮。
5.对于阶跃函数行,在预览功能列中,单击原型超链接,打开“配置C步骤功能接口”对话框。
在“配置C步骤功能接口”对话框中,配置C步骤功能接口C函数原型字段显示对函数原型所做更改的预览。
有关配置为生成多实例代码的模型,请参见从顶层模型生成可重入代码.
自定义函数名
1.在“配置C步骤功能接口”对话框中,设置C步骤功能接口C步骤功能名称来fcnprotoctrl_run
.函数预览被更新以反映新的函数名。
2.点击应用,关闭对话框,保存模型。
3.生成代码并验证名称更改。
单击代码选项卡。在代码查看文件列表,选择文件
rtwdemo_fcnprotoctrl.h
.在搜索字段,验证代码元素列表是否包含函数名fcnprotoctrl_run
.要查看声明,请选择函数名。
声明在代码中突出显示:
验证文件中的名称更改
rtwdemo_fcnprotoctrl.c
.若要查看源代码(定义),请在搜索字段中,选择fcnprotoctrl_run
.
有关更多示例,请参见重写各个C入口点函数的默认命名.
自定义函数参数
配置全局数据结构
默认情况下,顶部或引用模型使用void-void
步骤函数传递数据。这种类型的函数允许生成的代码通过访问存储在共享内存中的数据结构的全局数据与外部代码通信。
将模型配置为具有void-void
步骤功能,打开“配置C步骤功能接口”对话框为Step函数原型配置参数复选框。中的更改C函数原型预览。
配置参数
基于速率的模型阶跃函数可以使用参数来传递数据。你可以自定义这些参数设置:
返回值
类型限定符
的名字
订单
例子
1.进入“配置C步骤功能接口”对话框。单击代码映射- C选项卡。在功能选项卡,单击步骤功能的功能预览。
2.在“配置C步骤功能接口”对话框中,选择为Step函数原型配置参数.
3.点击得到默认。对话框展开,显示一个用于配置函数返回值的字段,以及一个列出带有默认设置的输入和输出参数的表。
4.自定义step函数的返回值。集C返回参数要么无效
或者输出参数之一。对于本例,选择无效
.
5.对于每个参数,指定aC类型限定符.
Qualifers类型:
价值
:值,例如:参数
常量
:具有常量
比如限定符,常量参数
指向const的指针
:值为常量
限定符和指针引用,例如,常量
*
参数
指针
:通过指针引用,例如:*
参数
指向Const的Const指针
:值为常量
限定符,指针引用,以及指针本身,例如,常量
*
常量参数
包含引用模型的模型
对于引用的模型,将阶跃函数接口中根输入参数的类型限定符设置为
汽车
.类的类型强制转换,从而使用接口规范常量
来自源信号的限定符。对于引用模型的父类,源信号的类型限定符被设置为
汽车
.若要重写此行为,请添加常量
将限定符输入引用的模型。
对于本例,不修改C类型限定符。
6.属性中的值自定义参数名称C标识符名称列。
对于本例,通过删除下划线来更改参数的名称,例如,将arg_In1更改为argIn1。
7.通过将表行拖动到新位置来定制参数顺序。
对于本例,将Out1移动到第一个位置。向外移动2到第三个位置。
8.验证、应用更改、关闭对话框,并保存模型。
9.中生成代码并验证更改代码视图。
验证文件中的更改
rtwdemo_fcnprotoctrl.h
通过检查搜索字段包含函数fcnprotoctrl_run
.要查看函数声明,请选择函数名。
验证更改文件
rtwdemo_fcnprotoctrl.c。
若要查看函数的定义,请选择函数名称fcnprotoctrl_run
.
原型与预览不同
在“配置C步骤函数接口”对话框中,引用模型的函数原型预览可以比生成代码中的函数原型显示更少的参数。
例如,考虑一个名为mdlref_counter
通过导入(arg_input
)、外港(arg_output
),以及一个具有工作区参数参数名称的限制的饱和块lower_saturation_limit
而且upper_saturation_limit
.“配置C步骤函数接口”对话框显示了一个函数原型预览:
mdlref_counter_custom (arg_input arg_output)
在生成的代码中,原型包含参数参数:
mdlref_counter_custom(real_T arg_input, real_T arg_output, real_T rtp_lower_saturation_limit, real_T rtp_upper_saturation_limit)
优化参数缓冲
您可以优化模型的阶跃函数中I/O参数所需的缓冲。如果在配置输入和输出端口对时坚持这些要求,代码生成器将合并相应的参数并重用相关的缓冲区。
import和Outport块必须具有相同的属性,包括数据类型、维度和采样率。
import和Outport块的采样速率必须与模型的基本速率相同。
有条件执行的子系统不能驱动Outport块。
单个非虚拟块输出必须驱动Outport块。例如,合并多个缓冲区的Mux块不能驱动Outport块。
在“配置C步骤功能接口”对话框中,必须使用相同的C类型限定符和标识符名称配置导入和输出端口。
这个例子展示了如何合并端口的参数In3
而且Out2
例如模型rtwdemo_fcnprotoctrl.
1.打开模型的“Configure C Step Function Interface”对话框rtwdemo_fcnprotoctrl
.
2.通过选择打开参数的显示为Step函数原型配置参数.
3.对港口In3
而且Out2
,设置C类型限定符来指针
而且C标识符名称来sharedArg
.
4.验证预览显示的合并参数argIn3
而且argOut2
.
5.验证、应用更改、关闭对话框,并保存模型。
6.生成并查看代码。在代码视图,搜索fcnprotoctrl_run
功能和检查功能界面。对于本例,共享参数出现在Inport块的读代码和Outport块的写代码中。