模型的数据接口是模型与其他外部模型或系统交换数据(例如,信号值)的方法。自定义模型的数据接口:
启用生成的代码与您自己的代码的集成。
提高代码的可跟踪性和可读性。
在模型的顶层,import和Outport块表示模型的输入和输出信号。要在生成的代码中定制数据接口,请配置这些块。在设计过程的早期,当模型可以包含未连接的import和Outport块时,可以使用这种技术在开发内部算法之前指定接口。
当您将存储类应用于import和Outport块时,每个块都作为全局结构的字段或生成算法直接引用的单独全局变量出现在生成的代码中。如果您有Embedded Coder,您可以使用函数原型控制而不是存储类来将数据传递到模型中或传递出模型一步
函数作为形式参数。看到定制生成的C函数接口(嵌入式编码)。
打开示例模型rtwdemo_basicsc
.
open_system (“rtwdemo_basicsc”)
配置模型以显示生成的块名称。
set_param (“rtwdemo_basicsc”,“HideAutomaticNames”,“关闭”)
在模型中,选择查看>模型数据编辑器.
在模型数据编辑器中,选择港口/外港选项卡。表中的每一行表示一个Outport块或一个退出import块的信号。
为Outport块中的信号数据命名着干活
代表。集信号的名字来output_sig
.
对于每个退出import块的信号,设置数据类型来单
或另一种数据类型。由于模型中的其他块默认使用数据类型继承设置,因此模型其余部分中的下游信号使用相同或类似的数据类型。
可以选择配置其他设计属性,例如最小值和马克斯(最小值和最大值)。
设置改变观点下拉列表,代码
.
对于Outport块和所有的import块,设置存储类来ExportedGlobal
.要一次配置所有的块,请选择表中的所有行。
要配置块和信号,可以在命令提示符处使用这些命令。
portHandles = get_param (“rtwdemo_basicsc /三机一体”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“ExportedGlobal”);portHandles = get_param (“rtwdemo_basicsc / In2”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“ExportedGlobal”);portHandles = get_param (“rtwdemo_basicsc / In3”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“ExportedGlobal”);portHandles = get_param (“rtwdemo_basicsc / In4”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“ExportedGlobal”);set_param (“rtwdemo_basicsc /着干活”,“SignalName”,“output_sig”,...“StorageClass”,“ExportedGlobal”)
从模型生成代码。
rtwbuild (“rtwdemo_basicsc”);
###启动模型的构建过程:rtwdemo_basicsc
查看生成的文件rtwdemo_basicsc.c
.因为你应用了存储类ExportedGlobal
在import和Outport块中,代码创建表示输入和输出的单独全局变量。
文件= fullfile (“rtwdemo_basicsc_grt_rtw”,“rtwdemo_basicsc.c”);rtwdemodbtype(文件,'/*导出块信号*/',“real32_T output_sig;”, 1, 1)
/*输出块信号*/ real32_T input1;/* '/In1' */ real32_T input2;/* ' /In2' */ real32_T input3;/* ' /In3' */ real32_T input4;/* ' /In4' */ real32_T output_sig;/ * * / < Root > /着干活
模型中生成的算法一步
函数直接引用这些全局变量来计算和存储输出信号值,output_sig
.
当您使用Model Data Editor来配置系统的接口时,请考虑使用接口显示来在较高的层次上查看系统输入和输出(import和Outport块)。看到配置组件的数据接口(万博1manbetx模型)。
如果您有Embedded Coder,您可以为import块和Outport块配置一个默认存储类。当您将这些块添加到模型中时,它们将获得您指定的存储类。
在模型中,设置>代码生成>系统目标文件来ert.tlc
.
在模型中,选择代码> C/ c++代码>在代码透视图配置模型.
在框图下面代码映射>数据默认值,港口和外港行,设置存储类来ExportedGlobal
.
在框图下面,通过单击模型数据编辑器模型数据编辑器选项卡。
使用模型数据编辑器将import和Outport块的存储类设置为汽车
.使用此设置,块将获得您在代码映射>数据默认值.
与汽车
,与import和Outport块对应的全局变量受您在模型配置参数中指定的命名规则的约束。默认情况下,命名规则将模型的名称添加到每个变量的名称中。要删除模型名称,请更改配置参数>代码生成>符号>全局变量从R N美元美元
来N M美元
.令牌$ R
表示模型名称。
或者,在命令提示符下配置数据默认值和配置参数,使用以下命令:
set_param (“rtwdemo_basicsc”,“SystemTargetFile”,“ert.tlc”) coder.mapping.create (“rtwdemo_basicsc”) coder.mapping.defaults.set (“rtwdemo_basicsc”,“港口”,...“StorageClass”,“ExportedGlobal”) coder.mapping.defaults.set (“rtwdemo_basicsc”,“输出港”,...“StorageClass”,“ExportedGlobal”) portthandles = get_param(“rtwdemo_basicsc /三机一体”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“汽车”);portHandles = get_param (“rtwdemo_basicsc / In2”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“汽车”);portHandles = get_param (“rtwdemo_basicsc / In3”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“汽车”);portHandles = get_param (“rtwdemo_basicsc / In4”,“portHandles”);outPortHandle = portHandles.Outport;set_param (outPortHandle“StorageClass”,“汽车”);set_param (“rtwdemo_basicsc /着干活”,“SignalName”,“output_sig”,...“StorageClass”,“汽车”) set_param (“rtwdemo_basicsc”,“CustomSymbolStrGlobalVar”,“N M美元”)
您可以将一个信号路由到多个Outport块,并对每个Outport应用不同的存储类。例如,使用此技术将信号数据发送到自定义函数(如设备驱动程序)和自定义算法代码可以使用的全局变量:
将目标信号线分支到每个输出区。
为了更有效的代码,将目标信号线的存储类设置为汽车
(默认)。然后,优化可以从生成的代码中消除信号线。
使用模型数据编辑器应用自定义存储类GetSet
到一个外港区ExportToFile
去另一个外港街区。对每个块应用一个信号名称。
open_system (“ex_route_sig”)
如果Outport块的输入具有可变大小,则不能将存储类应用于该块。相反,将存储类应用于信号线。