程序化创建和管理分配
此示例展示了如何使用分配编辑器和编程接口创建和管理 System Composer™ 分配。
在系统工程中,架构系统通常在不同层次上进行描述。功能架构 [1] 描述了系统的高度函数。逻辑架构 [2] 描述了系统的逻辑组件以及它们之间如何交换数据。您可以使用分配来建立从功能组件到逻辑组件的关系,并指示部署策略。
分配建立从一个模型中的架构元素(组件、端口和连接器)到另一个模型中的架构元素的有向关系。通过基于资源的分配,您可以将功能架构元素分配给逻辑架构元素,以及将逻辑架构元素分配给物理架构元素。
分配方案包含源模型和目标模型之间的一组分配关系。在分配方案中的模型元素之间进行分配。默认分配方案称为
Scenario 1
。分配集由一个或多个分配方案组成,这些分配方案描述源模型和目标模型之间的各种分配关系。在分配编辑器中创建包含分配方案的分配集。分配集保存为 MLDATX 文件。
要交互式地创建分配,请参阅交互式创建和管理分配。
提示
要了解更多关于 System Composer 概念在系统工程设计中的应用,请参阅System Composer 概念。
使用轮胎压力监测系统创建和管理分配
此示例使用轮胎压力监测系统 (TPMS) 工程。要打开工程,请使用此命令。
openProject("scExampleTirePressureMonitorSystem");
创建新的分配集
您可以使用分配编辑器创建一个分配集。在此示例中,TPMS_FunctionalArchitecture.slx
是源模型,TPMS_LogicalArchitecture.slx
是目标模型。
要为这些模型创建分配集,请使用此命令。
allocSet = systemcomposer.allocation.createAllocationSet(... 'FunctionalToLogical', ...% Name of the allocation set 'TPMS_FunctionalArchitecture', ... % Source model 'TPMS_LogicalArchitecture' ... % Target model );
要查看分配集,请使用以下命令打开分配编辑器。
systemcomposer.allocation.editor
在两个模型之间创建分配
此示例展示了如何在 TPMS 工程中通过编程在两个模型之间创建分配。
获取功能架构模型中用于报告函数的 systemcomposer.arch.Component
对象。
functionalArch = systemcomposer.loadModel('TPMS_FunctionalArchitecture'); reportLevels = functionalArch.lookup('Path',... 'TPMS_FunctionalArchitecture/Report Tire Pressure Levels'); reportLow = functionalArch.lookup('Path',... 'TPMS_FunctionalArchitecture/Report Low Tire Pressure');
获取逻辑架构模型中 TPMS 报告系统组件的 systemcomposer.arch.Component
对象。
logicalArch = systemcomposer.loadModel('TPMS_LogicalArchitecture'); reportingSystem = logicalArch.lookup('Path',... 'TPMS_LogicalArchitecture/TPMS Reporting System');
在默认场景中创建分配。
defaultScenario = allocSet.getScenario('Scenario 1');
alloc = defaultScenario.allocate(reportLevels,reportingSystem);
defaultScenario.allocate(reportLow,reportingSystem);
您还可以选择删除低轮胎压力报告与报告系统之间的分配。
% defaultScenario.deallocate(reportLow,reportingSystem);
在分配中使用构造型
此示例展示了如何通过编程将构造型应用于分配,以及如何使用构造型对分配进行参数化。
allocSet.applyProfile("TPMSProfile") alloc.applyStereotype("TPMSProfile.FunctionalAllocation") setProperty(alloc,"TPMSProfile.FunctionalAllocation.IsImplemented","true")
参考
[1] Carter, Jeffrey. “Functional Architecture.” Guide to the Systems Engineering Body of Knowledge (SEBoK) v. 2.7, released October 31, 2022. https://sebokwiki.org/wiki/Functional_Architecture.
[2] Faisandier, Alan, Garry Roedler, and Rick Adcock. “Logical Architecture.” Guide to the Systems Engineering Body of Knowledge (SEBoK) v. 2.7, released October 31, 2022. https://sebokwiki.org/wiki/Logical_Architecture.
另请参阅
对象
systemcomposer.allocation.AllocationScenario
|systemcomposer.allocation.AllocationSet
|systemcomposer.allocation.Allocation