文档

通过配置导入和输出块来设计数据接口

模型的数据接口是模型与其他外部模型或系统交换数据(例如,信号值)的方法。自定义模型的数据接口:

  • 启用生成的代码与您自己的代码的集成。

  • 提高代码的可跟踪性和可读性。

在模型的顶层,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应用不同的存储类。例如,使用此技术将信号数据发送到自定义函数(如设备驱动程序)和自定义算法代码可以使用的全局变量:

  1. 将目标信号线分支到每个输出区。

  2. 为了更有效的代码,将目标信号线的存储类设置为汽车(默认)。然后,优化可以从生成的代码中消除信号线。

  3. 使用模型数据编辑器应用自定义存储类GetSet到一个外港区ExportToFile去另一个外港街区。对每个块应用一个信号名称。

open_system (“ex_route_sig”

限制

如果Outport块的输入具有可变大小,则不能将存储类应用于该块。相反,将存储类应用于信号线。

相关的话题

这个话题有用吗?