主要内容

本页采用了机器翻译。点击此处可查看英文原文。

在软件架构中调度组件初始化

您可以在软件架构中使用初始化函数,为每个引用组件的初始化进行调度和自定义,以便进行仿真和生成代码。初始化函数是在模型初始化过程中执行的专用函数。当您对软件架构进行仿真时,所有组件都会在仿真的模型初始化阶段被初始化。默认情况下,软件架构中的每个引用组件都有一个初始化函数。您可以在函数编辑器初始化选项卡上可视化并调度组件初始化的顺序。

您可以通过在 Initialize Function 模块内实现相关行为,来自定义组件的初始化。在引用组件中,添加一个 Initialize Function 模块。有关定义初始化例程的详细信息,请参阅Common Uses of the Initialize Function Block

本主题描述了如何:

  • 使用函数编辑器计划组件初始化。

  • 使用类图视图可视化初始化函数

  • 生成初始化函数的代码。

有关编写、使用构造型添加属性以及导入和导出函数的详细信息,请参阅软件架构的函数编写与扩展

使用函数编辑器调度组件初始化

要打开函数编辑器,在建模选项卡上的工具栏中,点击函数编辑器

函数编辑器初始化选项卡中,您可以查看初始化函数并调度每个引用组件的初始化顺序。

  • 当您打开函数编辑器时,模型会自动更新,表中会显示从模型填充的所有函数。

  • 如果软件架构发生变更,更新模型按钮会变为黄色,作为信号提示您需要进行更新以刷新函数表。

  • 要更改初始化函数的顺序,请使用向上和向下箭头或拖动函数进行排序。

Functions Editor with the Initialize tab open.

使用类图视图可视化初始化函数

类图是软件架构模型结构的图形表示。每个架构组件都以类框表示,并列出了方法和属性。根架构也表示为一个类框,其中列出了所有方法、构造型和属性。对于根架构和每个引用组件,在相应类框的方法部分中列出了一个初始化函数。

要打开架构视图库,请导航至建模 > 架构视图。要打开类图视图,请点击 > 类图

Class diagram view with initialize functions listed in class boxes of reference components.

有关详细信息,请参阅软件架构的类图视图

生成组件初始化代码

生成代码需要 Embedded Coder® 许可证。

您可以针对每个组件,根据软件架构生成代码。要生成代码,请在 App 选项卡上选择 Embedded Coder。在 C 代码选项卡的生成代码部分中,选择编译

当您为包含引用组件的软件架构生成代码时,该架构是顶层模型,而每个引用组件都被视为被引用模型。

软件架构中生成的初始化函数

为软件架构模型生成的初始化函数会执行初始化代码,并调用与引用组件相关的被引用模型中生成的初始化函数。

代码生成器通常会为软件架构模型生成这些函数。

  • <model>_initialize - 用于执行软件架构模型初始化代码的初始化函数。该函数可能会调用被引用模型的 <ref_model>_Init 函数来初始化状态,并调用 <ref_model>_initialize 函数将被引用模型的代码初始化为零。

  • <ref_model>_Init - 被引用的模型的初始化函数,由软件架构模型的初始化函数 <model>_initialize 调用,用于将状态初始化为初始条件。

    注意

    在软件架构模型的初始化函数 <model>_initialize 中,对被引用模型中 <ref_model>_Init 函数的调用顺序与函数编辑器中指定的执行顺序一致。

    当被引用的模型没有需要初始化的状态时,代码生成器会省略对 <ref_model>_Init 函数的调用。

  • <ref_model>_initialize - 初始化函数,用于执行被引用的模型的初始化代码;该函数由软件架构模型的初始化函数 <model>_initialize 调用,以将被引用的模型代码初始化为零。

    这种基于引用模型的初始化,与您使用 Initialize Function 模块指定、并通过函数编辑器进行调度的任何自定义组件初始化相互独立。

有关生成代码的详细信息,请参阅Generated Functions in a Model Reference Hierarchy (Simulink Coder)

通过编程配置初始化函数

要通过编程配置和自定义初始化函数:

  • 使用 decreaseOrderincreaseOrder 函数分别降低或提高组件初始化的顺序。要按顺序查看初始化函数,请使用此命令。

    initializeFunctions = {model.Architecture.Initialization.Name}'

  • 使用 systemcomposer.exportModel 函数输出一个 initializeFunctions 字段,该字段包含一个表,其中包含函数的顺序和组件等信息。

  • 使用 systemcomposer.importModel 函数导入包含函数的模型,其中 importStruct 参量可以包含包含函数信息的 initializeFunctions 字段。

  • 使用 slbuild 函数生成软件架构组件的代码。

另请参阅

工具

对象

函数

主题