主要内容

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

软件架构的函数编写与扩展

函数是可以在软件组件中定义的入口点。对于内联组件,您可以从架构层面编写函数,以安排和自定义每个软件组件的功能,从而进行仿真和生成代码。您可以在函数编辑器函数选项卡上编写、可视化并安排组件函数的执行顺序。然后,您就可以为自己编写的函数实现 Simulink® 行为。

对于引用组件,函数会自动从引用的行为 Simulink 模型创建。有关信息,请参阅仿真和部署软件架构

本主题描述了如何:

  • 编写和可视化函数。

  • 将函数添加到函数组中。

  • 实现 Simulink 函数行为。

  • 使用构造型为函数添加自定义属性。

  • 导入和导出函数。

有关初始化函数的信息,请参阅在软件架构中调度组件初始化

使用函数编辑器创建作者函数和函数组

您可以使用函数编辑器将构造型应用于软件架构中的函数、编辑采样时间并指定函数周期。

函数编辑器仅在建模软件架构时可见。要打开函数编辑器,在建模选项卡上的工具栏中,点击函数编辑器

函数编辑器函数选项卡中,您可以编写、查看并安排模型中各组件函数的执行顺序。

The Functions Editor is open on the Functions tab.

  • 打开函数编辑器后,模型会自动更新,表中将显示模型中各组件的函数。

  • 如果软件架构模型发生变化,更新模型按钮将变为黄色,提示您需要更新函数表。

  • 要更改组件函数的顺序,请使用上下箭头,或拖动函数进行排序。

  • 如果您的软件架构模型中包含两个或多个周期相同的函数,您可以将函数分组,并对函数组进行调度,该调度将贯穿整个模型层次结构。

函数编辑器可视化在架构级别创建的函数以及在组件引用的 Simulink 模型中实现的函数。

编写组件函数

要向模型中的软件组件添加函数:

  1. 点击添加函数 按钮,并选择一个组件作为该函数的父级。

    The Add a function to a software component button is highlighted in the Functions Editor. A function named Component1_Function displays for Component1. A function named Component2_Function displays for Component2.

  2. 使用向上和向下箭头,或点击并拖动函数,来修改函数的执行顺序。

    The up and down arrows in the Functions Editor are highlighted in a red box.

  3. 在函数表中点击函数名称,即可更改函数名称。

    The Function Name column in the Functions Editor shows that the first function name has been changed to myFunction.

  4. 通过在表中指定函数的周期来编辑其采样/样本时间。

    A software architecture with three components: Component1, Component2, and Component3. Component3 is linked to a Simulink behavior. The Functions Editor shows the difference between three functions

  5. 您可以根据数据依赖关系自动对函数进行排序。此功能适用于行为模型中的函数。要启用自动排序,请选中架构模型上的按依赖关系对函数排序复选框或启用 OrderFunctionsByDependency

    set_param('MySoftwareArchitecture','OrderFunctionsByDependency','on')

    该参数的默认值为 off

此外,您还可以使用 addFunction 函数为组件编写函数。

函数分组

自 R2026a 起

您可以在软件架构模型中按时间段对函数进行分组。创建函数组时,函数的执行顺序会贯穿整个模型层次结构。

要创建函数组,请使用以下方法之一:

  • 若要按期间自动对函数进行分组,请在函数编辑器中点击按周期对函数进行分组

  • 要在函数编辑器中手动选择要添加到新函数组中的函数,请按住 CtrlShift 键,点击同一时期的函数,然后点击函数分组 group functions

    或者,右键点击所选内容,然后从菜单中选择函数分组

  • 要以编程方式创建函数组,请使用 systemcomposer.arch.Architecture 对象的 createFunctionGroup 函数。

  • 要在函数编辑器中交互式地创建一个函数组,请点击并拖动一个函数,将其放置到另一个与之周期相同的函数上。

注意

当您使用函数组对软件架构模型进行仿真时,系统将遵循该执行顺序。在代码生成中,每个函数组都是一个新的入口点,其中包含该函数组内的组件函数。

使用 Simulink 实现函数的行为

您可以从架构层面设计函数,然后通过创建 Simulink 行为模型来实现这些函数的行为。

  • 要使用工具条来定义和实现函数的行为,请:

    1. 建模选项卡下,选择 Component > 创建 Simulink 行为

    2. 将 Simulink 行为的类型选为。模型参考:基于速率模型引用: 导出函数

      Create Simulink Behavior dialog box that displays the type of the behavior.

      或者,您可以右键点击一个组件,然后选择创建 Simulink 行为

  • 若要通过编程方式创建一个 Simulink 行为模型并将该模型与软件组件关联,可以使用 createSimulinkBehavior 函数。该函数创建一个基于速率或导出函数的新行为,并将软件组件链接到新模型。

    createSimulinkBehavior(component,"mySoftwareModel",BehaviorType="RateBased")

定义构造型并将其应用于函数

构造型提供了一种扩展核心语言元素和添加域特定元数据的机制。要为函数定义构造型及其属性,请使用配置文件编辑器。创建一个配置文件,添加一个适用于函数的构造型,并为该构造型添加一组通用属性。有关详细信息,请参阅在配置文件中定义和设置构造型

The Profile Editor shows a list of stereotypes and their properties.

您可以将构造型应用于组件函数和函数组,从而自动将构造型中定义的元数据添加到模型中的函数中。使用函数编辑器选择软件组件中的函数,应用构造型,查看应用于函数的构造型,以及编辑构造型的属性值。有关应用构造型观念的详细信息,请参阅应用构造型来扩展模型元素

使用类图视图可视化函数

类图是软件架构模型结构的图形表示。每个架构组件都以类框表示,并列出了方法和属性。根架构也表示为一个类框,其中列出了所有方法、构造型和属性。

软件架构模型中的所有函数都会在类图视图中显示。有关详细信息,请参阅软件架构的类图视图

A class diagram view shows a list of methods within the software architecture model.

软件架构的导入和导出函数

您可以导入和导出软件架构的函数。

  • 使用 systemcomposer.exportModel 函数输出一个 functions 字段,该字段包含一个表,其中包含函数的名称、执行顺序、父组件 ID、周期和构造型等信息。

    此示例展示了如何导出软件架构模型 mySoftwareArchitectureexportedSet 输出具有 functions 字段,该字段包含函数信息表。

    exportedSet = systemcomposer.exportModel('MySoftwareArchitecture')
    
    exportedSet = 
    
      struct with fields:
    
              components: [4×5 table]
                   ports: [6×4 table]
             connections: [3×5 table]
          portInterfaces: [0×9 table]
        requirementLinks: [0×15 table]
                  domain: 'Software'
               functions: [3×4 table]
    
    >> exportedSet.functions
    
    ans =
    
      3×4 table
    
                Name             ExecutionOrder    CompID    Period
        _____________________    ______________    ______    ______
    
        "myFunction"                  "1"           "1"      "1"   
        "Component2_Function"         "2"           "2"      "-1"  
        "Component3_D1"               "3"           "3"      "0.2" 
    
  • 使用 systemcomposer.importModel 函数导入包含函数的模型,其中 importStruct 参量可以包含包含函数信息的 functions 字段。

另请参阅

工具

对象

函数

主题