主要内容

模型接口元素的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代码生成准备模型的工作。应用默认配置可以节省时间并降低在代码中引入错误的风险,特别是对于生成多实例代码的大型模型和模型。

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

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

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

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

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

  • 为了提高效率,在模型中其他位置进行更改时使用命名规则。

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

模型数据类别

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

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

常量值块输出和不能内联的参数。这些值存储在变量中是出于以下原因之一。

  • 该值是大于循环展开阈值的数组。

  • 在代码中需要值address。

如果将数据元素类别的默认存储设置为默认的,您可以选择指定内存段。

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

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

考虑 更多信息
哪些类别与您的模型相关? 上表中的数据元素类别
模型是否使用一个类别中的多个数据实例?如果答案是肯定的,则应用默认映射是有益的。否则,考虑单独为每个数据元素配置代码生成。
哪个存储类与每个类别的代码生成要求一致? 选择存储类以控制生成代码中的数据表示
您想要结构化的模型数据吗?例如,如果您为多实例代码生成配置了模型,结构可以提高代码效率和可读性。 在生成的代码中将数据组织成结构
代码生成器是否需要将数据存储在内存的特定区域?例如,考虑是否将初始化数据存储在慢速内存中,将算法或计算性数据存储在快速内存中。
您希望防止优化消除代码中的特定数据吗? 通过优化消除数据类别
是否需要定义可以在代码映射编辑器中选择的新存储类?

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

通过优化消除数据类别

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

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

  • 模型参数

  • 模型参数的参数

  • 外部参数

  • 内部数据

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

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

共享字典数据默认值

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

函数的默认配置

通过在模型中为和函数的类别(如初始化/终止和执行函数)指定默认配置,减少为C代码生成准备模型的工作量。应用默认配置可以节省时间并降低在代码中引入错误的风险,特别是对于较大的模型和从中生成多实例代码的模型。

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

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

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

  • 向模型添加块和信号时,新函数将继承默认设置。

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

  • 为了提高效率,在模型中其他位置进行更改时使用命名规则。

模型功能类别

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

模型函数范畴 描述
初始化和终止 用于初始化和终止的入口点函数
处决 用于启动执行和重置的入口点函数
共享效用 共享效用函数

代码生成器使用默认命名规则来命名入口点函数。要将生成的代码与现有的外部代码集成,或者遵循命名标准或指导原则,您可以调整默认的命名规则。调整默认命名规则可以节省时间,特别是对于代码生成器生成惟一的多速率模型一步函数为每个速率。

您可能需要在嵌入式编码器字典中定义函数自定义模板。除非有人为模型定义了函数自定义模板,否则代码映射编辑器将显示默认的作为唯一的模板选项。

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

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

考虑 更多信息
哪些类别与您的模型相关? 上表中的功能类别
模型是否使用一个类别中的多个函数实例?如果答案是肯定的,那么应用默认映射是有益的。否则,考虑为每个函数单独配置代码生成。 配置模型入口点函数的C代码生成
哪个函数定制模板与每个类别的代码生成需求一致? 为软件体系结构定义存储类、内存段和功能模板
类别是否要求代码生成器将函数代码存储在内存的特定区域?例如,考虑是否将初始化数据存储在慢速内存中,将算法或计算性数据存储在快速内存中。
您是否需要定义可以在代码映射编辑器中选择的新函数定制模板?
您是否有功能命名要求?如果答案是肯定的,它们是什么?这些要求适用于哪些类别?

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

共享字典函数默认值

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

单个数据元素的配置和功能

配置模型范围的默认设置后,可以覆盖各个数据元素的默认设置和功能.单个数据元素或函数配置应用于特定的数据元素或函数在一个模型。配置数据元素和功能分别时:

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

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

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

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

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

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

对于单个函数,您可以自定义函数名。对于执行函数,例如模型的步骤函数和Simulink函数,您可以配置函数参数。金宝app

配置数据

  1. 打开嵌入式编码器应用程序。

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

    如果需要定义存储类,请使用Embedded Coder Dictionary。选择代码接口>嵌入式编码字典

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

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

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

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

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

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

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

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

  8. 生成和检查代码。

有关更多详细信息和示例,请参阅:

配置功能

  1. 打开嵌入式编码器应用程序。

  2. 为函数类别配置默认映射。选择代码接口>默认的代码映射.在代码映射编辑器中,在函数默认值选项卡,选择功能类别并设置功能自定义模板。

    您可能需要定义一个函数自定义模板。默认情况下,模板不可用。要定义函数自定义模板,请使用嵌入式编码器字典。选择代码接口>嵌入式编码字典

  3. 决定是否覆盖各个函数的默认配置设置。如果选择不覆盖设置,请转到步骤5。

  4. 配置个人入口点功能。在代码映射编辑器中,单击功能页签,选择一个功能,并设置功能定制模板。或者,您可以指定一个函数名。对于执行函数,例如模型步骤函数,您可以自定义函数参数。单击函数预览链接将打开一个对话框,您可以使用该对话框定制整个函数界面。

  5. 生成和检查代码。

有关更多详细信息和示例,请参阅:

另见

||

相关的话题