主要内容

systemcomposer.arch.ArchitecturePort

架构的输入输出端口

描述

一个ArchitecturePort对象表示System Composer™体系结构的输入和输出端口。这个类继承自systemcomposer.arch.BasePort..这个类派生自systemcomposer.arch.Element

创建

创建架构端口。

端口= addPort(建筑、“在”的)

addPort方法是构造函数systemcomposer.arch.ArchitecturePort类。

属性

全部展开

端口的名称,指定为字符向量。

例子:'纽波特'

数据类型:字符

端口方向,指定为字符向量。

数据类型:字符

与端口关联的接口名称,指定为字符向量。

数据类型:字符

与端口关联的接口,指定为systemcomposer.interface.DataInterfaceSystemComposer.ValueType.对象。

端口连接器,指定为数组systemcomposer.arch.Connectorsystemcomposer.arch.PhysicalConnector对象。

端口是否有连接,指定为逻辑。

数据类型:逻辑

拥有端口的体系结构,指定为asystemcomposer.arch.Architecture对象。

架构端口的通用唯一标识符,指定为字符向量。

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

数据类型:字符

唯一的外部标识符,指定为字符向量。外部ID在体系结构端口的整个生命周期和所有保存UUID

数据类型:字符

体系结构端口的父系统编写器模型,指定为systemcomposer.arch.Model对象。

金宝app®架构港口,指定为a.这个属性对于几个与Simulink相关的工作流和使用是必要的金宝app金宝appSimulink要求™api。

例子:手柄= get(对象,'simulinkh金宝appandle')

数据类型:

金宝appSimulink句柄到父系统编写器模型的体系架构端口,指定为a.这个属性对于几个与Simulink相关的工作流和使用是必要的金宝app金宝app仿真软件的需求api。

例子:处理=得到(对象,“SimulinkMod金宝appelHandle”)

数据类型:

对象功能

连接 创建架构模型连接
setname. 设置端口名称
setInterface 设置接口为端口
createInterface 为端口创建和设置拥有的接口
applystereotype. 将原型应用到架构模型元素
getStereotypes 获取应用于架构模型元素的原型
RemovesteToType. 从模型元素中删除刻板印象
setProperty 设置应用于元素的原型对应的属性值
getProperty 获取应用于元素的原型对应的属性值
getPropertyValue. 获得建筑产权的价值
getEvaluatedPropertyValue 从组件获取属性的评估值
getstereotypeproperties. 在元素上获取刻板型属性名称
hasStereotype 查找元素是否应用了原型
hasProperty 查找元素是否具有属性
getQualifiedName 获取模型元素限定名
摧毁 删除模型元素

例子

全部折叠

使用System Composer™以编程方式构建体系结构模型。

构建模型

要构建模型,请添加具有数据接口、数据元素和值类型的数据字典,然后添加组件、端口和连接。为端口分配一个拥有的接口。在构建模型之后,您可以创建自定义视图来关注特定的注意事项。您还可以查询模型,根据您指定的条件收集不同的模型元素。

添加组件,端口,连接和接口

创建模型并提取其架构。

model = system composer.createModel(“Mobilerobotapi”);arch = model.craritecture;

创建接口数据字典并添加数据接口。向数据接口添加数据元素。向接口数据字典添加值类型。将数据元素的类型赋给值类型。将数据字典链接到模型。

字典= systemcomposer.createDictionary (“SensorInterfaces.sldd”);界面= dictionary.addInterface (“GPSInterface”);元素= interface.addElement (“SignalStrength”);valueType = dictionary.addValueType (“signalstrongype”“单位”“数据库”'描述'GPS信号强度的);Element.SetType(ValueType);LinkDictionary(模型,“SensorInterfaces.sldd”);

将更改保存到接口数据字典。

dictionary.save

在“接口编辑器”中查看接口。

添加组件、端口和连接。将数据接口设置为稍后将连接的端口。

componentSensor = addComponent(拱门,“传感器”);sensorPorts = addPort (componentSensor。架构,{“MotionData”“SensorData”}, {“在”“出”});SensorPorts(2).setInterface(接口)ComponentPlanning = AddComponent(Arch,'规划');planningPorts = addPort (componentPlanning。架构,{“命令”“SensorData1”“MotionCommand”}, {“在”“在”“出”});planingports (2).setInterface(interface) = addComponent(arch,“运动”);motionPorts = addPort (componentMotion。架构,{“MotionCommand”“MotionData”}, {“在”“出”});

创建一个拥有的界面“MotionData”端口。在拥有的数据接口下添加拥有的数据元素。分配数据元素"回转”为单位设置为的值类型

ownedInterface = motionPorts (2) .createInterface (“DataInterface”);OwneedElement = OwnedInterface.AddElement(“回转”);子接口= ownedElement.createOwnedType (“单位”'度');

在“接口编辑器”中查看接口。选择“MotionData”港口运动组件。在接口编辑器中,从字典视图港口界面视图

使用接口规则和默认名称规则连接组件。接口规则在共享相同接口的组件上连接端口。默认情况下,名称规则在共享相同名称的组件上连接端口。

c_sensordata = connect(arch,componentsentor,componentplanning,“规则”“界面”);c_motionData =连接(拱门,componentMotion componentSensor);c_motionCommand =连接(拱门,componentPlanning componentMotion);

添加和连接架构端口

在体系结构上添加体系结构端口。

archPort = addPort(拱门,“命令”“在”);

连接命令需要一个组件端口作为参数。获取部件端口,进行连接。

compPort = getPort (componentPlanning,“命令”);c_Command =连接(archPort compPort);

保存模型。

model.save

打开模型。

systemcomposer.openModel (“Mobilerobotapi”);

通过pressıng安排布局Ctrl + Shift +一个或使用此命令。

金宝appSimulink.BlockDiagram.arrangeSystem (“mobileRobotAPI”);

用原型创建和应用概要文件

概要文件是可以应用于任何模型的XML文件。您可以将带有属性的原型添加到概要文件中,然后用特定的值填充属性。与System Composer的内置分析功能一起,构造型帮助您优化系统的性能、成本和可靠性。

创建个人资料并添加刻板印象

创建一个概要文件。

profile = systemcomposer.createprofile(“GeneralProfile”);

创建适用于所有元素类型的刻板印象。

elemSType = addStereotype(概要文件,“projectElement”);

为不同类型的组件创建刻板印型。您可以根据您的设计需求选择这些类型。

pcompstype = addstereotype(配置文件,“physicalComponent”'适用于'“组件”);sCompSType = addStereotype(概要文件,“softwareComponent”'适用于'“组件”);

为连接创建一个模板。

sconnstype = addstereottype(配置文件,“standardConn”'适用于'“连接器”);

添加属性

向原型添加属性。您可以使用属性来捕获模型元素的元数据,并分析非功能性需求。在导入概要文件的任何模型中,这些属性被添加到应用原型的所有元素中。

addProperty (elemSType“ID”“类型”“uint8”);addProperty (elemSType'描述'“类型”“字符串”);addProperty (pCompSType'成本'“类型”“双”“单位”“美元”);addProperty (pCompSType“重量”“类型”“双”“单位”‘g’);AddProperty(scompstype,'develcost'“类型”“双”“单位”“美元”);AddProperty(scompstype,'develtime'“类型”“双”“单位”“小时”);addProperty (sConnSType“unitCost”“类型”“双”“单位”“美元”);addProperty (sConnSType“unitWeight”“类型”“双”“单位”‘g’);addProperty (sConnSType“长度”“类型”“双”“单位”“米”);

保存配置文件

profile.save;

将概要文件应用于模型

将概要文件应用到模型。

ApplyProfile(型号,“GeneralProfile”);

将原型应用于组件。有些组件是物理组件,有些则是软件组件。

applyStereotype (componentPlanning“GeneralProfile.softwareComponent”) applyStereotype (componentSensor“GeneralProfile.physicalComponent”) applyStereotype (componentMotion“GeneralProfile.physicalComponent”的)

将连接器原型应用于所有连接。

batchApplyStereotype(拱,“连接器”“GeneralProfile.standardConn”);

将通用元素原型应用于所有连接器和端口。

batchApplyStereotype(拱,'成分'“generalprofile.projectelement”);batchApplyStereotype(拱,“连接器”“generalprofile.projectelement”);

为每个组件设置属性。

setProperty (componentSensor'generalprofile.projectelement.id'“001”);setProperty (componentSensor“GeneralProfile.projectElement.Description”“‘所有传感器的中央单元’”);setProperty (componentSensor“GeneralProfile.physicalComponent.Cost”“200”);setProperty (componentSensor“GeneralProfile.physicalComponent.Weight”“450”);setProperty(ComponentPlanning,'generalprofile.projectelement.id'“002”);setProperty(ComponentPlanning,“GeneralProfile.projectElement.Description”“电脑”计划);setProperty(ComponentPlanning,“GeneralProfile.softwareComponent.develCost”“20000”);setProperty(ComponentPlanning,“GeneralProfile.softwareComponent.develTime”“300”);setProperty (componentMotion'generalprofile.projectelement.id'“003”);setProperty (componentMotion“GeneralProfile.projectElement.Description”“电机及电机控制器”);setProperty (componentMotion“GeneralProfile.physicalComponent.Cost”“4500”);setProperty (componentMotion“GeneralProfile.physicalComponent.Weight”'2500');

将连接属性设置为相同。

connections = [c_sensordata c_motiondata c_motioncommand c_command];为了k = 1:长度(连接)setProperty(连接(k),“GeneralProfile.standardConn.unitCost”“0.2”);setProperty(连接(k),“GeneralProfile.standardConn.unitWeight”“100”);setProperty(连接(k),'generalprofile.standardconn.length'“0.3”);结尾

添加层次结构

添加两个组件控制器范围运动组件。定义的端口。应用连接器构造型将组件连接到体系结构,并相互连接。体系结构图中的层次结构创建了额外的详细级别,指定组件在内部的行为方式。

motionArch = componentMotion.Architecture;motionController = motionArch.addComponent ('控制器');controllerPorts = addPort (motionController。架构,{'Controlin'“controlOut”}, {“在”“出”});controllerCompPortIn = motionController.getPort ('Controlin');ControllerComportout = MotionController.getPort(“controlOut”);motionScope = motionArch.addComponent (“范围”);scopePorts = addPort (motionScope。架构,{'scopein''Scopeout'}, {“在”“出”});scopecompportin = motionscope.getport('scopein');scopeCompPortOut = motionScope.getPort ('Scopeout');c_planningController =连接(motionPorts (1) controllerCompPortIn);%对于输出连接,必须指定接口元素c_planningScope =连接(scopeCompPortOut motionPorts (2),“DestinationElement”“回转”);c_planningConnect =连接(controllerCompPortOut scopeCompPortIn,“GeneralProfile.standardConn”);

保存模型。

model.save

通过pressıng安排布局Ctrl + Shift +一个或使用此命令。

金宝appSimulink.BlockDiagram.arrangeSystem (“mobileRobotAPI /运动”);

创建模型参考

模型引用可以帮助您分层组织大型模型,并定义架构或行为,然后您可以重用。当一个组件引用另一个模型时,该组件上的任何现有端口都将被删除,被引用模型上存在的端口将出现在该组件上。

创建一个新的System Composer模型。转换传感器组件进入引用组件以引用新模型。添加其他端口传感器组件时,您必须更新所引用的模型“mobileSensor”

referenceModel = systemcomposer.createModel (“mobileSensor”);引用咨询= righeCemodel.architecture;newcomponents = addcomponent(引用咨询,“ElectricSensor”);linkDictionary (referenceModel“SensorInterfaces.sldd”);referenceModel。保存linkToModel (componentSensor,“mobileSensor”);

将构造型应用于链接引用模型的体系结构和组件。

referenceModel.applyProfile (“GeneralProfile”);referenceArch.applyStereotype (“GeneralProfile.softwareComponent”);batchapplystereotype(引用咨询,'成分'“generalprofile.projectelement”的)

向参考组件添加端口和连接。

sensorPorts = addPort (componentSensor。架构,{“MotionData”“SensorData”}, {“在”“出”});sensorPorts (2) .setInterface(接口)连接(拱、componentSensor componentPlanning,“规则”'界面');Connect(Arch,ComponentMotion,Componentsensor);

保存模型。

ReferenceModel.Save Model.Save.Save.

使不同组件

你可以转换规划组件转换为变量组件makefariant.函数。原始组件作为可用的变体选择之一嵌入到变体组件中。您可以在变体组件中设计其他变体选择,并切换活动选择。变体组件允许您在架构模型中以编程方式选择行为设计,以执行交易研究和分析。

[variantComp, choice1] = makeVariant (componentPlanning);

添加一个名为的额外变体选择PlanningAlt.第二个参数定义名称,第三个参数定义了标签。标签识别选择。主动选择由标签控制。

choice2 = addChoice (variantComp, {“PlanningAlt”}, {“PlanningAlt”});

创建所需的端口PlanningAlt

setActiveChoice(variantComp,choice2)架构,{“命令”“SensorData1”“MotionCommand”}, {“在”“在”“出”});planningAltPorts (2) .setInterface(接口)

使PlanningAlt活性变体。

setActiveChoice (variantComp“PlanningAlt”的)

通过pressıng安排布局Ctrl + Shift +一个或使用此命令。

金宝appSimulink.BlockDiagram.arrangeSystem (“mobileRobotAPI /规划”);

保存模型。

model.save

清理

取消对该代码的注释,并运行它以清理由本示例创建的工件。

% bdclose(“mobileRobotAPI”)% bdclose(“mobileSensor”)%s金宝appimulink.data.dictionary.closeall% systemcomposer.profile.Profile.closeAll%删除(“Profile.xml”)%删除(“SensorInterfaces.sldd”)

更多关于

全部展开

在R2019A引入