软件架构的函数编写与扩展
函数是可以在软件组件中定义的入口点。对于内联组件,您可以从架构层面编写函数,以安排和自定义每个软件组件的功能,从而进行仿真和生成代码。您可以在函数编辑器的函数选项卡上编写、可视化并安排组件函数的执行顺序。然后,您就可以为自己编写的函数实现 Simulink® 行为。
对于引用组件,函数会自动从引用的行为 Simulink 模型创建。有关信息,请参阅仿真和部署软件架构。
本主题描述了如何:
编写和可视化函数。
将函数添加到函数组中。
实现 Simulink 函数行为。
使用构造型为函数添加自定义属性。
导入和导出函数。
有关初始化函数的信息,请参阅在软件架构中调度组件初始化。
使用函数编辑器创建作者函数和函数组
您可以使用函数编辑器将构造型应用于软件架构中的函数、编辑采样时间并指定函数周期。
函数编辑器仅在建模软件架构时可见。要打开函数编辑器,在建模选项卡上的工具栏中,点击函数编辑器。
在函数编辑器的函数选项卡中,您可以编写、查看并安排模型中各组件函数的执行顺序。

打开函数编辑器后,模型会自动更新,表中将显示模型中各组件的函数。
如果软件架构模型发生变化,更新模型按钮将变为黄色,提示您需要更新函数表。
要更改组件函数的顺序,请使用上下箭头,或拖动函数进行排序。
如果您的软件架构模型中包含两个或多个周期相同的函数,您可以将函数分组,并对函数组进行调度,该调度将贯穿整个模型层次结构。
函数编辑器可视化在架构级别创建的函数以及在组件引用的 Simulink 模型中实现的函数。
编写组件函数
要向模型中的软件组件添加函数:
点击添加函数 按钮,并选择一个组件作为该函数的父级。

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

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

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

您可以根据数据依赖关系自动对函数进行排序。此功能适用于行为模型中的函数。要启用自动排序,请选中架构模型上的按依赖关系对函数排序复选框或启用
OrderFunctionsByDependency。set_param('MySoftwareArchitecture','OrderFunctionsByDependency','on')
该参数的默认值为
off。
此外,您还可以使用 addFunction 函数为组件编写函数。
函数分组
自 R2026a 起
您可以在软件架构模型中按时间段对函数进行分组。创建函数组时,函数的执行顺序会贯穿整个模型层次结构。
要创建函数组,请使用以下方法之一:
若要按期间自动对函数进行分组,请在函数编辑器中点击按周期对函数进行分组 。
要在函数编辑器中手动选择要添加到新函数组中的函数,请按住 Ctrl 或 Shift 键,点击同一时期的函数,然后点击函数分组
。或者,右键点击所选内容,然后从菜单中选择函数分组。
要以编程方式创建函数组,请使用
systemcomposer.arch.Architecture对象的createFunctionGroup函数。要在函数编辑器中交互式地创建一个函数组,请点击并拖动一个函数,将其放置到另一个与之周期相同的函数上。
注意
当您使用函数组对软件架构模型进行仿真时,系统将遵循该执行顺序。在代码生成中,每个函数组都是一个新的入口点,其中包含该函数组内的组件函数。
使用 Simulink 实现函数的行为
您可以从架构层面设计函数,然后通过创建 Simulink 行为模型来实现这些函数的行为。
要使用工具条来定义和实现函数的行为,请:
在建模选项卡下,选择 Component > 创建 Simulink 行为。
将 Simulink 行为的类型选为。模型参考:基于速率或模型引用: 导出函数。

或者,您可以右键点击一个组件,然后选择创建 Simulink 行为。
若要通过编程方式创建一个 Simulink 行为模型并将该模型与软件组件关联,可以使用
createSimulinkBehavior函数。该函数创建一个基于速率或导出函数的新行为,并将软件组件链接到新模型。createSimulinkBehavior(component,"mySoftwareModel",BehaviorType="RateBased")
定义构造型并将其应用于函数
构造型提供了一种扩展核心语言元素和添加域特定元数据的机制。要为函数定义构造型及其属性,请使用配置文件编辑器。创建一个配置文件,添加一个适用于函数的构造型,并为该构造型添加一组通用属性。有关详细信息,请参阅在配置文件中定义和设置构造型。

您可以将构造型应用于组件函数和函数组,从而自动将构造型中定义的元数据添加到模型中的函数中。使用函数编辑器选择软件组件中的函数,应用构造型,查看应用于函数的构造型,以及编辑构造型的属性值。有关应用构造型观念的详细信息,请参阅应用构造型来扩展模型元素。
使用类图视图可视化函数
类图是软件架构模型结构的图形表示。每个架构组件都以类框表示,并列出了方法和属性。根架构也表示为一个类框,其中列出了所有方法、构造型和属性。
软件架构模型中的所有函数都会在类图视图中显示。有关详细信息,请参阅软件架构的类图视图。

软件架构的导入和导出函数
您可以导入和导出软件架构的函数。
使用
systemcomposer.exportModel函数输出一个functions字段,该字段包含一个表,其中包含函数的名称、执行顺序、父组件 ID、周期和构造型等信息。此示例展示了如何导出软件架构模型
mySoftwareArchitecture。exportedSet输出具有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字段。
另请参阅
工具
对象
函数
addFunction|decreaseExecutionOrder|increaseExecutionOrder|createFunctionGroup|add|ungroup|remove|systemcomposer.importModel|systemcomposer.exportModel