主要内容

模型接口元素的C代码生成配置

代码生成器为您提供工具来控制数据的表示,如果您有Embedded Coder的话®,生成的代码中的入口点函数。例如,您可以为代码生成配置数据和函数,以符合代码标准和指南,将生成的代码与外部代码集成,或解决内存需求。

代码生成器为模型数据元素和函数生成代码:

  • 应用程序代码可以读取和写入的数据,比如导入、信号、状态和参数。

  • 入口点函数,如模型_step,应用程序代码调用它来执行模型算法。

属性可以配置用于代码生成的模型数据元素和函数代码映射编辑器或代码映射编程接口(coder.mapping.api.CodeMapping).配置函数需要嵌入式编码器。对于数据元素,使用代码映射编辑器或代码映射API,而不是创建和配置Simulink数据对象。金宝app编辑器和API允许你配置:

  • 用于数据元素类别的整个模型的默认代码生成设置

  • 应用于单个数据元素的配置设置

下图显示了整个工作流程:

迭代流图,显示了配置默认映射、覆盖单个模型元素的默认映射以及为模型元素创建代码定义的步骤。

迁移

当您打开在R2020b之前的版本中创建的模型时,Simulink®会将模型中指定的代码定义迁移到模型代码映射中。金宝app

如果有必要,作为迁移的一部分,Simulink会配置模型使用的Embedded 金宝appCoder Dictionary。当您保存模型时,代码映射被保存为模型的一部分。

有关更多信息,如迁移的影响和迁移前需要考虑的事项,请参见将模型数据配置迁移到代码映射

代码定义

代码定义包括存储类。存储类定义了代码生成器在为相关数据生成代码时使用的属性,比如外观和位置。

内存段控制数据和函数定义在内存中的位置。在某些情况下,您可以在配置数据元素和函数时选择您想要的特定内存部分。

代码生成器为数据元素提供预定义的代码定义。如果您有Embedded Coder,您可以使用Embedded Coder Dictionary创建和共享代码定义,例如,标准化从多个模型生成的代码,或者为不同的应用程序运行时环境创建定义。创建自定义使您能够实现预定义定义无法满足的代码生成目标。对于数据元素,您还可以选择使用嵌入式编码器自定义存储类设计器创建包中创建的代码定义。

中显示使用Embedded Coder字典创建的代码定义代码映射编辑器并可通过使用代码映射API进行访问。对于使用自定义存储类设计器创建的一些定义,可以通过配置嵌入式编码器字典引用它们,使这些定义出现在代码映射编辑器中。

默认情况下,使用嵌入式编码器字典为模型创建的代码定义存储在模型文件中。通过在Simulink中存储定义,您可以在模型和项目之间共享代码定义金宝app®数据字典。使用数据字典,要修改共享定义,只需在一个地方更改定义—嵌入式编码器字典。

有关更多信息,请参见为软件架构定义存储类、内存段和函数模板(嵌入式编码)使用自定义存储类设计器创建存储类(嵌入式编码)

数据默认配置

通过为数据元素类别指定默认配置,例如跨模型的导入或模型工作区参数,可以减少为C代码生成准备模型的工作。应用默认配置可以节省时间并降低在代码中引入错误的风险,特别是对于生成多实例代码的大型模型和模型。

默认配置适用于整个模型,不包括引用的模型。金宝appSimulink保存了一组单独的代码映射,作为模型引用层次结构中每个模型的一部分。

如果模型包含给定类别的大量元素(例如,超过10个),则更有效的方法是使用默认设置配置类别,然后针对特殊情况覆盖该设置。

默认设置可以帮助您减少手动输入数据。

  • 当您向模型添加块和信号时,新的数据元素将继承默认设置。

  • 要一次更改多个数据元素的代码生成设置,只需在一个地方更改—默认设置。

  • 为了提高效率,当您在模型的其他地方进行更改时,请使用命名规则。

属性配置数据默认值代码映射编辑器数据默认值选项卡或setDataDefault函数。

模型数据类别

属性配置数据默认值代码映射编辑器数据默认值选项卡或setDataDefault函数。在数据默认值选项卡或函数调用时,可以选择或指定数据元素的这些类别。

模型元素类别 描述
港口 模型的根级输入端口,例如轮廓尺寸在公共汽车元素块。
外港 模型的根级输出端口,例如外港公共汽车元素块。
信号、状态和内部数据 模型内部的数据元素,如块输出信号、离散块状态、数据存储和过零信号。
共享本地数据存储 数据存储内存具有block参数的块跨模型实例共享集。这些数据存储只能在定义它们的模型中访问。数据存储值在模型的实例之间共享。
全球数据存储 由基本工作空间或数据字典中的信号对象定义的数据存储。应用程序中的多个模型可以使用这些数据存储。要在代码映射编辑器中查看和配置这些数据存储,请单击刷新链接到类别名称的右侧。单击此链接将更新模型图。
模型参数 在模型中定义的参数,例如模型工作区中的参数。不包括模型参数。
外部参数 在基本工作空间或数据字典中定义为对象的参数。应用程序中的多个模型可以使用这些参数。要在代码映射编辑器中查看和配置这些参数,请单击刷新链接到类别名称的右侧。单击此链接将更新模型图。

为数据配置默认代码生成设置的注意事项

在配置数据元素的默认代码生成设置之前,请考虑该表中列出的注意事项。

考虑 更多的信息
哪些类别与您的模型相关? 上表中的数据元素类别
模型是否使用类别中的多个数据实例?如果答案是肯定的,那么应用默认映射是有益的。否则,考虑为每个数据元素单独配置代码生成。
哪个存储类与每个类别的代码生成要求一致? 选择存储类以控制生成代码中的数据表示
您希望防止优化消除代码中的特定数据吗? 通过优化消除数据类别

在配置一个或多个模型元素类别之后,设置内存段和共享实用程序标识符格式模型配置参数对模型配置没有影响。当您打开编码器应用程序时,Simulink将模型配置参金宝app数设置迁移到代码映射编辑器。作为迁移的一部分,Simulink配置模型使用的嵌入金宝app式编码器字典,如内存段和共享实用程序设置从配置参数迁移到代码映射(嵌入式编码)

通过优化消除数据类别

代码生成优化可以消除代码中的数据,这意味着应用程序代码不能与数据交互。有关按优化消除数据的一般信息,请参见生成代码如何存储内部信号、状态和参数数据(嵌入式编码)

优化只能消除以下类别中的数据:

  • 模型参数

  • 模型参数的参数

  • 外部参数

  • 内部数据

在通过优化消除数据之后,代码生成器将代码映射中的默认代码生成设置应用于其余数据。对于参数和信号线,优化可以消除整个类别的数据。如果发生这种消除,则您为该类别指定的默认设置将不适用于数据。

要防止优化消除单个数据元素,请显式地将存储类应用于单个元素。存储类控制生成代码中数据的外观。若要强制数据元素使用指定的默认存储类,请显式应用存储类模型的默认.看到选择存储类以控制生成代码中的数据表示

共享字典数据默认值

如果您将模型链接到Simulink数据字典,其中包金宝app括为数据类别配置默认代码定义的编码器字典,则可以使用code Mappings编辑器应用字典默认值。在代码映射编辑器中,在数据默认值选项卡,选择一个类别并将存储类设置为词典默认.如果有人更改了共享编码器字典中的默认设置,那么代码生成器将在为您的模型生成代码时应用更新后的默认设置。看到在共享字典中配置默认代码映射(嵌入式编码)

单个数据元素的配置

在配置模型范围的默认设置之后,可以覆盖单个数据元素的默认设置。单个数据元素配置应用于模型中的特定数据元素。在以下情况下单独配置数据元素:

  • 该模型包括给定类别的一些元素,这些元素具有惟一的源、命名或位置要求。

  • 您配置了默认设置,并且希望覆盖单个元素的默认设置。

对于单个数据元素,存储类最初设置为汽车,这意味着代码生成器可能会为了优化目的而消除或更改相关代码的表示形式。如果不可能进行优化,则代码生成器应用模型默认配置。

  • 要避免优化并强制代码生成器使用默认配置,请将存储类设置为模型的默认

  • 要覆盖默认配置,请指定满足该数据元素的代码生成需求的存储类。

如果模型中的数据元素是未命名的(例如,一个信号没有标签或一个状态没有名称),那么在为C代码生成配置数据元素时,必须为它指定一个代码标识符。通过为存储类属性指定一个值来设置代码标识符标识符

配置数据

  1. 打开金宝app仿真软件编码器™应用程序。

  2. 为数据元素类别配置默认映射。选择代码接口>默认的代码映射.在代码映射编辑器中,在数据默认值选项卡,选择模型元素类别并设置存储类。在属性检查器中,设置存储类属性以符合模型需求。

  3. 决定是否覆盖单个数据元素的默认配置设置。如果选择不覆盖设置,请执行步骤8。

  4. 确定要单独配置的MATLAB变量,并将配置存储在模型文件中。在模型资源管理器中,将变量转换为金宝app仿真软件。参数对象。结果数据对象作为模型参数出现在代码映射编辑器中。

  5. 在生成的代码执行时,确定表示要监视的算法数据的信号,并分别配置这些信号。对于你识别的每个信号,执行下列操作之一:

    • 对于特定于模型(非共享)的信号数据,将信号添加到代码映射编辑器中。

    • 对于共享的信号数据,创建和配置金宝app仿真软件。信号对象。

  6. 配置单个数据元素。在Code Mappings编辑器中,单击类别选项卡,选择数据元素,并设置存储类。在属性检查器中,设置存储类属性值。更改模型配置参数的设置默认参数的行为,单击指示存储类设置为时的行为的链接汽车.在模型配置参数对话框中,将参数设置更改为可调内联

    有关配置特定类型的数据元素的信息,请参见:

  7. 上的Code Mappings编辑器中查看和配置存储在基本工作空间或数据字典中的外部数据对象数据默认值选项卡上,单击刷新链接到类别名称的右侧。

  8. 生成和检查代码。

有关更多细节和示例,请参见:

另请参阅

|

相关的话题