systemcomposer.arch.PhysicalConnector
说明
PhysicalConnector
对象表示 System Composer™ 模型物理端口之间的连接器。此类继承自 systemcomposer.arch.BaseConnector
。该类派生自 systemcomposer.arch.Element
。
属性
连接器名称,指定为字符向量。
示例: 'newConnector'
数据类型: char
连接器所属架构,指定为 systemcomposer.arch.Architecture
对象。
连接端口,指定为 systemcomposer.arch.ArchitecturePort
或 systemcomposer.arch.ComponentPort
对象数组。
连接器的父 System Composer 模型,指定为 systemcomposer.arch.Model
对象。
Simulink® 句柄,指定为 double
。
此属性对于多个 Simulink 相关工作流以及使用 Requirements Toolbox™ 编程接口是必需的。
示例: handle = get(object,'SimulinkHandle')
数据类型: double
父级 System Composer 模型的 Simulink 句柄,指定为 double
。
此属性对于多个 Simulink 相关工作流以及使用 Requirements Toolbox 编程接口是必需的。
示例: handle = get(object,'SimulinkModelHandle')
数据类型: double
唯一外部标识符,指定为字符向量。外部 ID 在元素的整个生命周期以及所有保留 UUID
的操作中都会被保留。
数据类型: char
统一唯一标识符,指定为字符向量
示例: '91d5de2c-b14c-4c76-a5d6-5dd0037c52df'
数据类型: char
对象函数
applyStereotype | 为架构模型元素应用构造型 |
getStereotypes | 获取应用于架构模型元素的构造型 |
removeStereotype | 从模型元素中移除构造型 |
setProperty | 设置与应用于元素的构造型相对应的属性值 |
getProperty | 获取与应用于元素的构造型相对应的属性值 |
getPropertyValue | 获取架构属性值 |
getEvaluatedPropertyValue | 从元素中获取属性的计算值 |
getStereotypeProperties | 获取元素上的构造型属性名称 |
getSourceElement | 获取源端口上为连接选择的数据元素 |
getDestinationElement | 获取连接目标端口上选择的数据元素 |
hasStereotype | 查找元素是否已应用构造型 |
hasProperty | 查找元素是否具有属性 |
getQualifiedName | 获取模型元素的限定名称 |
lookup | 搜索架构元素 |
destroy | 移除模型元素 |
示例
使用 System Composer™ 以编程方式构建架构模型。
要构建模型,需添加包含数据接口、数据元素、值类型和物理接口的数据字典,然后添加组件、端口和连接。创建带有构造型和属性的配置文件,然后将这些构造型应用于模型元素。为端口分配专属接口。模型构建完成后,您可以创建自定义视图来关注特定的考虑因素。您还可以查询模型,根据指定的准则收集不同的模型元素。
添加组件、端口、连接和接口
创建一个模型并提取其架构。
model = systemcomposer.createModel("mobileRobotAPI");
arch = model.Architecture;
创建一个数据字典并添加一个数据接口。向该数据接口添加一个数据元素。向数据字典中添加一个值类型。将数据元素的类型指定为该值类型。添加一个物理接口和带有物理域类型的物理元素。将数据字典链接到模型。
dictionary = systemcomposer.createDictionary("SensorInterfaces.sldd"); interface = dictionary.addInterface("GPSInterface"); element = interface.addElement("SignalStrength"); valueType = dictionary.addValueType("SignalStrengthType",Units="dB", ... Description="GPS Signal Strength"); element.setType(valueType); physicalInterface = dictionary.addPhysicalInterface("PhysicalInterface"); physicalElement = addElement(physicalInterface,"ElectricalElement", ... Type="electrical.electrical"); linkDictionary(model,"SensorInterfaces.sldd");
保存对数据字典的更改。
dictionary.save
保存模型。
model.save
打开模型。
systemcomposer.openModel("mobileRobotAPI");
在接口编辑器中查看接口。
添加组件、端口和连接。将物理接口设置为稍后要连接的物理端口。
componentSensor = addComponent(arch,"Sensor"); sensorPorts = addPort(componentSensor.Architecture,{'MotionData','SensorPower'}, ... {'in','physical'}); sensorPorts(2).setInterface(physicalInterface) componentPlanning = addComponent(arch,"Planning"); planningPorts = addPort(componentPlanning.Architecture, ... {'Command','SensorPower1','MotionCommand'}, ... {'in','physical','out'}); planningPorts(2).setInterface(physicalInterface) componentMotion = addComponent(arch,"Motion"); motionPorts = addPort(componentMotion.Architecture,{'MotionCommand','MotionData'}, ... {'in','out'});
在 MotionData
端口上创建一个专属接口。在专属数据接口下添加一个专属数据元素。为数据元素 Rotation
指定一个单位设置为 degrees
的值类型。
ownedInterface = motionPorts(2).createInterface("DataInterface"); ownedElement = ownedInterface.addElement("Rotation"); subInterface = ownedElement.createOwnedType(Units="degrees");
在接口编辑器中查看接口。选择 Motion
组件上的 MotionData
端口。在接口编辑器中,将视图从字典视图切换为端口接口视图。
使用接口规则和默认名称规则连接组件。接口规则会将共享同一接口的组件端口连接起来。默认情况下,名称规则会将共享相同名称的组件端口连接起来。
c_sensorData = connect(arch,componentSensor,componentPlanning,Rule="interface");
c_motionData = connect(arch,componentMotion,componentSensor);
c_motionCommand = connect(arch,componentPlanning,componentMotion);
添加和连接架构端口
在架构上添加一个架构端口。
archPort = addPort(arch,"Command","in");
connect
命令需要一个组件端口作为参量。先获取组件端口,然后进行连接。
compPort = getPort(componentPlanning,"Command");
c_Command = connect(archPort,compPort);
保存模型。
model.save
按 Ctrl+Shift+A 或使用以下命令整理布局。
Simulink.BlockDiagram.arrangeSystem("mobileRobotAPI");
创建和应用带有构造型的配置文件
配置文件是可以应用于任何模型的 XML 文件。您可以在配置文件中添加具有属性的构造型,然后在配置文件编辑器中用特定值来为这些属性赋值。除了 System Composer 的内置分析功能之外,构造型还可以帮助您优化系统的性能、成本和可靠性。
创建配置文件并添加构造型
创建一个配置文件。
profile = systemcomposer.createProfile("GeneralProfile");
创建一个适用于所有元素类型的构造型。
elemSType = addStereotype(profile,"projectElement");
为不同类型的组件创建构造型。您可以根据自己的设计需求选择适当的类型。
pCompSType = addStereotype(profile,"physicalComponent",AppliesTo="Component"); sCompSType = addStereotype(profile,"softwareComponent",AppliesTo="Component");
为连接创建一个构造型。
sConnSType = addStereotype(profile,"standardConn",AppliesTo="Connector");
添加属性
为构造型添加属性。您可以使用属性来捕获模型元素的元数据,并分析非功能性需求。在导入了该配置文件的任何模型中,这些属性都会被添加到应用了该构造型的所有元素中。
addProperty(elemSType,'ID',Type="uint8"); addProperty(elemSType,'Description',Type="string"); addProperty(pCompSType,'Cost',Type="double",Units="USD"); addProperty(pCompSType,'Weight',Type="double",Units="g"); addProperty(sCompSType,'develCost',Type="double",Units="USD"); addProperty(sCompSType,'develTime',Type="double",Units="hour"); addProperty(sConnSType,'unitCost',Type="double"',Units="USD"); addProperty(sConnSType,'unitWeight',Type="double",Units="g"); addProperty(sConnSType,'length',Type="double",Units="m");
保存配置文件
profile.save;
将配置文件应用到模型
将配置文件应用到模型。
applyProfile(model,"GeneralProfile");
将构造型应用于组件。有些组件是物理组件,有些组件是软件组件。
applyStereotype(componentPlanning,"GeneralProfile.softwareComponent") applyStereotype(componentSensor,"GeneralProfile.physicalComponent") applyStereotype(componentMotion,"GeneralProfile.physicalComponent")
将连接器构造型应用于所有连接。
batchApplyStereotype(arch,'Connector',"GeneralProfile.standardConn");
将通用元素构造型应用于所有连接器和端口。
batchApplyStereotype(arch,'Component',"GeneralProfile.projectElement"); batchApplyStereotype(arch,'Connector',"GeneralProfile.projectElement");
为每个组件设置属性。
setProperty(componentSensor,'GeneralProfile.projectElement.ID','001'); setProperty(componentSensor,'GeneralProfile.projectElement.Description', ... 'Central unit for all sensors'); setProperty(componentSensor,'GeneralProfile.physicalComponent.Cost','200'); setProperty(componentSensor,'GeneralProfile.physicalComponent.Weight','450'); setProperty(componentPlanning,'GeneralProfile.projectElement.ID','002'); setProperty(componentPlanning,'GeneralProfile.projectElement.Description', ... 'Planning computer'); setProperty(componentPlanning,'GeneralProfile.softwareComponent.develCost','20000'); setProperty(componentPlanning,'GeneralProfile.softwareComponent.develTime','300'); setProperty(componentMotion,'GeneralProfile.projectElement.ID','003'); setProperty(componentMotion,'GeneralProfile.projectElement.Description', ... 'Motor and motor controller'); setProperty(componentMotion,'GeneralProfile.physicalComponent.Cost','4500'); setProperty(componentMotion,'GeneralProfile.physicalComponent.Weight','2500');
将所有连接的属性设置为相同值。
connections = [c_sensorData c_motionData c_motionCommand c_Command]; for k = 1:length(connections) setProperty(connections(k),'GeneralProfile.standardConn.unitCost','0.2'); setProperty(connections(k),'GeneralProfile.standardConn.unitWeight','100'); setProperty(connections(k),'GeneralProfile.standardConn.length','0.3'); end
添加层次结构
在 Motion
组件内添加两个名为 Controller
和 Scope
的组件。定义端口。将组件连接到架构以及彼此之间,并应用连接器构造型。架构图中的层次结构可以为组件的内部行为提供更详细的描述。
motionArch = componentMotion.Architecture; motionController = motionArch.addComponent('Controller'); controllerPorts = addPort(motionController.Architecture,{'controlIn','controlOut'}, ... {'in','out'}); controllerCompPortIn = motionController.getPort('controlIn'); controllerCompPortOut = motionController.getPort('controlOut'); motionScope = motionArch.addComponent('Scope'); scopePorts = addPort(motionScope.Architecture,{'scopeIn','scopeOut'},{'in','out'}); scopeCompPortIn = motionScope.getPort('scopeIn'); scopeCompPortOut = motionScope.getPort('scopeOut'); c_planningController = connect(motionPorts(1),controllerCompPortIn);
对于输出端口连接,可以指定目标数据元素。
c_planningScope = connect(scopeCompPortOut,motionPorts(2),DestinationElement="Rotation"); c_planningConnect = connect(controllerCompPortOut,scopeCompPortIn, ... "GeneralProfile.standardConn");
保存模型。
model.save
按 Ctrl+Shift+A 或使用以下命令整理布局。
Simulink.BlockDiagram.arrangeSystem("mobileRobotAPI/Motion");
创建模型引用
模型引用可以帮助您按层次结构组织大型模型,并可实现对其架构和行为的一次定义,多次重用。当一个组件引用另一个模型时,该组件上的任何现有端口都会被删除,而引用模型上的端口会出现在该组件上。
创建一个新的 System Composer 模型。将 Controller
组件转换为引用组件,以引用新模型。要在 Controller
组件上添加端口,必须更新引用模型 mobileMotion
。
referenceModel = systemcomposer.createModel("mobileMotion"); referenceArch = referenceModel.Architecture; newComponents = addComponent(referenceArch,"Gyroscope"); referenceModel.save linkToModel(motionController,"mobileMotion");
保存模型。
referenceModel.save model.save
创建变体组件
您可以使用 makeVariant
函数将 Motion
组件转换为变体组件。原始组件会作为可选的变体选择项之一嵌入到变体组件中。您可以在变体组件中设计其他变体选择项,并切换活动选择项。变体组件允许您在架构模型中以编程方式选择不同的行为设计,从而进行权衡研究和分析。
[variantComp,choice1] = makeVariant(componentMotion);
添加一个名为 MotionAlt
的变体选择项。第二个参量定义名称,第三个参量定义标签。标签用于标识选择项。活动选择项由标签控制。
choice2 = addChoice(variantComp,{'MotionAlt'},{'MotionAlt'});
在 MotionAlt
上创建所需的端口。
motionAltPorts = addPort(choice2.Architecture,{'MotionCommand','MotionData'},{'in','out'});
将 MotionAlt
设置为活动变体。
setActiveChoice(variantComp,"MotionAlt")
按 Ctrl+Shift+A 或使用以下命令整理布局。
Simulink.BlockDiagram.arrangeSystem("mobileRobotAPI/Motion");
保存模型。
model.save
清理
在再次运行此示例之前,请运行此脚本以删除生成的工件。
cleanUpArtifacts
详细信息
术语 | 定义 | 应用 | 更多信息 |
---|---|---|---|
架构 | System Composer 架构代表由组件组成的系统,以及这些组件在结构上和行为上如何相互关联。 | 不同类型的架构描述系统的不同方面。您可以使用视图来可视化架构中的组件子集。您可以使用参数编辑器在架构层级上定义参数。 | |
根 | 根位于架构层次结构的顶层。根架构的边界由围绕相关系统的架构端口定义。 | 根架构的系统边界包围着您的架构模型。您可以添加架构端口来定义跨边界接口。 | |
模型 | System Composer 模型是包含架构信息的文件,涵盖组件、端口、连接器、接口和行为等信息。 | 对模型执行操作,包括提取根级架构、应用配置文件、链接接口数据字典或从模型架构生成实例。System Composer 模型存储为 SLX 文件。 | 创建带接口和需求链接的架构模型 |
组件 | 组件是系统中可替换的部分,用于在架构环境中实现明确的函数。组件定义架构元素,例如函数、另一个系统、硬件、软件或其他概念实体。组件也可以是子系统或子函数。 | 组件以模块的形式表示,是架构模型的一部分,并且可以分离成可重用的工件。使用接口编辑器通过端口接口在组件之间传输信息,使用参数编辑器传输参数。 | |
端口 | 端口是组件或架构上的节点,表示与其环境的交互点。通过端口,信息可以流向其他组件或系统,或者从其他组件或系统流入。 | 组件端口是组件上与其他组件之间的交互点。架构端口是系统边界上的端口,无论该边界是在组件内还是在整体架构模型内。根架构具有由其端口定义的边界。 | |
连接器 | 连接器是提供端口之间连接的线路。连接器描述信息如何在组件或架构之间流动。 | 通过连接器,两个组件可以进行交互,而无需定义交互的性质。在端口上设置接口来定义组件之间的交互方式。 |
术语 | 定义 | 应用 | 更多信息 |
---|---|---|---|
物理子系统 | 物理子系统是具有 Simscape™ 连接的 Simulink 子系统。 | 具有 Simscape 连接的物理子系统采用物理网络方法,适合仿真具有真实物理组件的系统,代表一个数学模型。 | 使用 Simscape 实现组件行为 |
物理端口 | 物理端口代表 Simscape 物理建模连接器端口,称为 Connection Port (Simscape)。 | 使用物理端口连接架构模型中的组件或启用 Simulink 子系统中的物理系统。 | 定义组件上的物理端口 |
物理连接器 | 物理连接器可以表示特定物理域的非定向守恒连接。连接器也可以表示物理信号。 | 使用物理连接器连接表示系统特征的物理组件,以实现数学仿真。 | 带直流电机行为的架构模型 Simscape |
物理接口 | 物理接口定义流经物理端口的信息类型。可以将同一个接口分配给多个端口。物理接口是复合接口,相当于一个 | 使用物理接口来捆绑物理元素,以便使用至少一个物理域来描述物理模型。 | 指定端口上的物理接口 |
物理元素 | 物理元素描述物理接口的分解。物理元素等同于 | 将物理元素的 | 使用 Simscape 描述组件行为 |
版本历史记录
在 R2021b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)