主要内容

systemcomposer.allocation.AllocationSet

组配置场景

描述

一个AllocationSet对象定义了一组两个系统作曲家™模型之间的分配情况。

创建

创建一个配置设置名称myNewAllocation使用systemcomposer.allocation.createAllocationSet函数。

systemcomposer.allocation.createAllocationSet (“myNewAllocation”,“Source_Model_Allocation”,“Target_Model_Allocation”);

属性

全部展开

分配组的名称,指定为一个特征向量。

例子:“MyNewAllocation”

数据类型:字符

源模型分配,指定为一个systemcomposer.arch.Model对象。

目标分配模型,指定为一个systemcomposer.arch.Model对象。

分配情况,指定为数组systemcomposer.allocation.AllocationScenario对象。

描述分配设置,指定为一个特征向量。

数据类型:字符

是否配置设置的日期与源模型、目标模型,或者两者兼有,指定为一个逻辑。

数据类型:逻辑

分配组是否有未保存的更改,指定为一个逻辑。

数据类型:逻辑

通用唯一标识符分配设置,指定为一个特征向量。

例子:91 d5de2c-b14c-4c76-a5d6-5dd0037c52df

数据类型:字符

对象的功能

createScenario 创建新的空配置场景
getScenario 得到分配情况
deleteScenario 删除配置场景
synchronizeChanges 同步更改模型的配置设置
找到 找到加载配置设置
保存 保存配置设置为文件
关闭 关闭配置设置
closeAll 关闭所有打开的配置集

例子

全部折叠

使用配置来分析轮胎压力监测系统。

概述

在系统工程中,通常用来描述一个系统在不同级别的抽象。例如,您可以描述一个系统的高级功能。这些功能可能没有与之相关的任何行为,但最有可能追溯到一些操作系统必须满足的要求。我们称这一层(或建筑)功能体系结构。在这个例子中,一个汽车轮胎压力监测系统在三个不同的体系结构描述:

  1. 功能体系结构,描述了系统的高级功能。连接显示功能之间的依赖关系。

  2. 逻辑架构,描述了系统的逻辑组件以及它们之间的数据交换。此外,该架构指定模型仿真的行为。

  3. 所需的物理硬件平台的体系结构,描述了系统在一个较高的水平。

分配过程被定义为连接这三个完全描述系统架构。连接捕捉每个架构层的信息,使其可以访问。

使用此命令打开项目。

scExampleTirePressureMonitorSystem

打开FunctionalAllocation.mldatx文件,显示分配TPMS_FunctionalArchitectureTPMS_LogicalArchitecture配置编辑器。的元素TPMS_FunctionalArchitecture显示在第一列中。的元素TPMS_LogicalArchitecture显示在第一行。箭头表示模型元素之间的分配。

箭头显示分配组件模型中。你可以观察分配模型中每个元素的层次结构。

其余的例子展示了如何使用这个配置信息来进一步分析模型。

功能逻辑分配和覆盖率分析

本节将展示如何执行覆盖分析来验证所有的功能分配。这一过程需要使用功能和逻辑体系结构之间的指定配置信息。

开始分析,负荷分配。

allocSet = systemcomposer.allocation.load (“FunctionalAllocation”);场景= allocSet.Scenarios;

确认系统中每个函数分配。

进口systemcomposer.query。*;[~,allFunctions] = allocSet.SourceModel.find (HasStereotype (IsStereotypeDerivedFrom (“TPMSProfile.Function”)));unAllocatedFunctions = [];i = 1:元素个数(allFunctions)如果isempty (scenario.getAllocatedTo (allFunctions (i))) unAllocatedFunctions = [unAllocatedFunctions allFunctions (i)];结束结束如果isempty (unAllocatedFunctions)流(所有的功能都分配的);其他的流(% d函数没有被分配的元素个数(unAllocatedFunctions));结束
所有的功能分配

结果显示所有的功能分配验证系统中所有功能分配。

分析供应商提供的功能

本节展示了如何确定哪些功能将由供应商使用指定的分配。因为供应商将提供这些组件的系统集成商,供应商信息存储在逻辑模型。

供应商= {“供应商”,“Supplier B”,“供应商C”,《供应商D '};functionname = arrayfun (@ x (x)。名称、allFunctions“UniformOutput”、假);numFunNames =长度(allFunctions);numSuppliers =长度(供应商);allocTable =表(“大小”(numFunNames numSuppliers),“VariableTypes”repmat (“替身”1、numSuppliers));allocTable.Properties。VariableNames =供应商;allocTable.Properties。RowNames = functionname;i = 1: numFunNames elem = scenario.getAllocatedTo (allFunctions(我));j = 1:元素个数(elem) elemSupplier = elem (j) .getEvaluatedPropertyValue (“TPMSProfile.LogicalComponent.Supplier”);allocTable{我strcmp (elemSupplier、供应商)}= 1;结束结束

供应商负责的表显示相应的功能。

allocTable
allocTable =8×4表供应商供应商B供应商C供应商D __________ __________ __________ __________报告轮胎压力水平1 0 0 0计算如果压力低1 0 0 0测量轮胎压力0 0 0 0测量轮胎压力0 0 1 0测量轮胎的温度0 0 0 1测量旋转0 1 0 0报告低胎压1 0 0 0计算轮胎压力0 1 0 0

分析软件部署策略

你可以确定发动机控制单元(ECU)有足够的房子所有的软件组件的能力。软件组件分配给核心本身,但ECU是预算的组件属性。

平台架构。

platformArch = systemcomposer.loadModel (“PlatformArchitecture”);

负载分配。

softwareDeployment = systemcomposer.allocation.load (“SoftwareDeployment”);frontECU = platformArch.lookup (“路径”,“PlatformArchitecture / ECU面前”);rearECU = platformArch.lookup (“路径”,“PlatformArchitecture /后方ECU”);scenario1 = softwareDeployment.getScenario (场景1的);scenario2 = softwareDeployment.getScenario (场景2的);frontECU_availMemory = frontECU.getEvaluatedPropertyValue (“TPMSProfile.ECU.MemoryCapacity”);rearECU_availMemory = rearECU.getEvaluatedPropertyValue (“TPMSProfile.ECU.MemoryCapacity”);frontECU_memoryUsed1 = getUtilizedMemoryOnECU (frontECU scenario1);frontECU_isOverBudget1 = frontECU_memoryUsed1 > frontECU_availMemory;rearECU_memoryUsed1 = getUtilizedMemoryOnECU (rearECU scenario1);rearECU_isOverBudget1 = rearECU_memoryUsed1 > rearECU_availMemory;frontECU_memoryUsed2 = getUtilizedMemoryOnECU (frontECU scenario2);frontECU_isOverBudget2 = frontECU_memoryUsed2 > frontECU_availMemory;rearECU_memoryUsed2 = getUtilizedMemoryOnECU (rearECU scenario2);rearECU_isOverBudget2 = rearECU_memoryUsed2 > rearECU_availMemory;

建立一个表展示结果。

softwareDeploymentTable =表([frontECU_memoryUsed1; frontECU_availMemory;frontECU_isOverBudget1; rearECU_memoryUsed1 rearECU_availMemory; rearECU_isOverBudget1),[frontECU_memoryUsed2;frontECU_availMemory;frontECU_isOverBudget2; rearECU_memoryUsed2;rearECU_availMemory;rearECU_isOverBudget2),“VariableNames”,{场景1的,场景2的},“RowNames”,{“前面ECUMemory使用(MB)”,“前面ECU内存(MB)”,“前面ECU超载”,“使用后ECU内存(MB)”,“后方ECU内存(MB)”,“后方ECU超载”})
softwareDeploymentTable =6×2表场景1场景2 __________ __________面前ECUMemory使用(MB) 110 90前ECU内存(MB) 100 100前ECU超载1 0后ECU内存使用量(MB) 0 20后方ECU内存(MB) 100 100后ECU重载0 0
函数场景memoryUsed = getUtilizedMemoryOnECU (ecu)

每个组件的ECU,积累所需的二进制大小为每个软件组件分配。

coreNames = {“Core1”,“嵌”,“Core3”,“Core4”};memoryUsed = 0;i = 1:元素个数(coreNames)核心= ecu.Model.lookup (“路径”,(ecu.getQualifiedName' / 'coreNames{我}]);allocatedSWComps = scenario.getAllocatedFrom(核心);j = 1:元素个数(allocatedSWComps) binarySize = allocatedSWComps (j) .getEvaluatedPropertyValue (“TPMSProfile.SWComponent.BinarySize”);memoryUsed = memoryUsed + binarySize;结束结束结束

更多关于

全部展开

版本历史

介绍了R2020b