仿真和部署软件架构
此示例展示了如何构建一个基于速率和导出函数组件的多组件软件架构模型,如何在架构级别仿真设计,以及如何生成代码。
打开软件架构模型
打开示例后,打开下面的模型。该软件架构模型有两个软件组件:Export_Function
和 Rate_Based
。
open_system('RateBasedExportFunctionSoftwareArchitectureModel')
在软件架构模型中,Export_Function
组件与 Simulink® 导出函数行为模型 export_model_software_architecture
相关联。
在此 Simulink 行为中,使用 Function-Call Subsystem 模块对两个函数进行了建模。输入端口模块连接到函数调用输入端口,并以采样时间 10ms
和 100ms
生成周期性的函数调用事件。要了解如何对这种行为进行建模,请参阅Create Export-Function Model。
如果连接到函数调用输入端口且采样时间指定为 -1(表示函数为非周期性)的输入端口模块,则使用带显式调度模块(如 Stateflow® 图)的 Simulink 测试模型进行仿真。有关更多信息,请参阅测试软件架构。
Rate_Based 组件与 rate_based_model_software_architecture
作为 Simulink 行为模型相关联。要了解如何创建此基于费率的模型,请参阅Create Rate-Based Model。
使用默认执行顺序仿真模型
仿真模型。请注意,“仿真数据检查器”显示了基于速率组件的输出。
使用函数编辑器可视化和编辑组件函数
使用函数编辑器编辑软件架构中函数的仿真执行顺序。您还可以编辑继承采样时间 (-1
) 的函数的采样时间。
函数编辑器仅在建模软件架构时可见。要打开函数编辑器,在工具栏的建模选项卡中,选择函数编辑器。
要编辑软件架构中的函数:
打开函数编辑器。打开函数编辑器后,模型会自动更新,表中会显示从模型中填充的函数。
如果软件架构模型发生变化,更新模型按钮将变为黄色,提示您需要更新函数表。
要安排函数的执行顺序,请使用向上和向下箭头或拖拽函数进行排序。
要编辑函数的采样时间,请在表中指定其周期。
要根据数据依赖关系对函数进行排序,请选中按依赖关系对函数排序复选框。要启用根据依赖关系对函数进行排序,可以设置此参数。
set_param('RateBasedExportFunctionSoftwareArchitectureModel','OrderFunctionsByDependency','on')
该参数的默认值为 off
。
或者,您可以使用 systemcomposer.arch.Function
对象以编程方式获取这些函数。
测试软件架构
您可以通过在带有明确调度模块(如 Stateflow® Chart (Stateflow))的 Simulink 测试模型中引用 Model 模块,来测试软件架构模型并仿真函数的不同执行顺序。
在此示例中,引用软件架构模型的 Model 模块为架构模型中的每个函数都有一个函数调用输入端口。
要使用 Stateflow 图周期调度程序仿真架构模型,请将 Stateflow 图函数调用输出连接到 Model 模块函数调用输入。
为软件架构生成代码
您可以从软件架构模型为导出函数和基于速率的组件的函数生成代码。
要生成代码,从 App 选项卡中选择 Embedded Coder。在 C 代码选项卡中,选择生成代码。生成的代码包含组件每个函数的入口点。有关详细信息,请参阅Generate Code for Export-Function Model。
对于导出函数组件,它生成了两个函数,这些函数与所引用的导出函数模型中的函数调用输入端口模块相对应。
请注意,每个基于速率的组件都有单独的入口点函数,这些函数与所引用的基于速率的模型中的每个采样时间相对应。
另请参阅
systemcomposer.createModel
| createArchitectureModel
| createSimulinkBehavior
| increaseExecutionOrder
| decreaseExecutionOrder