主要内容

systemcomposer.arch.Model

表示System Composer模型的类

描述

使用模型类来管理System Composer™模型中的体系结构对象。

创建

创建模型。

objModel = systemcomposer.createModel (“NewModel”

createModel方法的构造函数systemcomposer.arch.Model班级。

特性

展开全部

模型的名称,指定为字符向量。

例子:“NewModel”

数据类型:char

模型的根架构,指定为systemcomposer.arch.Architecture对象。

万博1manbetx®句柄,指定为数值。

数据类型:双倍的

附加到模型的概要文件,指定为systemcomposer.profile.Profile对象。

包含接口的字典对象,指定为aSystemComposer.Interface.Dictionary.对象。如果模型没有链接到外部字典,这是隐式字典的句柄

模型视图,指定为数组systemcomposer.view.view.对象。

例子:objView =得到(objModel,“意见”)

对象的功能

打开 开放式体系结构模型
关闭 关闭模式
保存 保存架构模型或数据字典
找到 使用查询查找体系结构模型元素
查找 搜索架构元素
openViews 开放式架构视图编辑器
createView 创建体系结构视图
getView 查找体系结构视图
deleteView 删除体系结构视图
applyProfile 将配置文件应用于模型
removeProfile 从模型中移除轮廓
saveToDictionary 将接口保存到字典中
linkDictionary 将数据字典链接到体系结构模型
unlinkdictionary. 从体系结构模型中断开数据字典
renameProfile 在模型中重命名概要文件
迭代 迭代模型元素

例子

全部折叠

此示例显示如何使用System Composer™API构建架构模型。

准备工作空间

从工作区中清除所有概要文件。

systemcomposer.profile.Profile.closeAll;

建立一个模型

要构建模型,请使用接口和接口元素添加数据字典,然后添加组件,端口和连接。构建模型后,您可以创建自定义视图以专注于特定问题。您还可以根据您指定的条件查询模型以收集不同的型号元素。

添加组件,端口和连接

创建模型并提取其架构。

模型= systemcomposer.createModel ('mobilerobotapi');拱= model.Architecture;

创建数据字典,添加接口。将接口链接到模型。

字典= systempormposer.createdictionary(“SensorInterfaces.sldd”);界面= addInterface(字典,“GPSInterface”);interface.addElement (“质量”);LinkDictionary(模型,“SensorInterfaces.sldd”);

添加组件,端口和连接。将接口设置为端口,稍后将连接。

组件= AddComponent(arch,{“传感器”“规划”“运动”});sensorPorts = addPort(组件(1)。架构,{'motiondata''sensoldata'},{“在”“出”});sensorPorts (2) .setInterface(接口);planningPorts = addPort(组件(2)。架构,{“命令”'sensordata1''MotionCommand'},{“在”“在”“出”});planningPorts (2) .setInterface(接口);motionPorts = addPort(组件(3)。架构,{'MotionCommand''motiondata'},{“在”“出”});

用接口规则连接组件。该规则连接共享相同接口的组件的端口。

c_sensorData =连接(拱门,组件(1),组件(2),'规则'“接口”);c_motionData =连接(拱、组件(3),组件(1));c_motionCommand =连接(拱门,组件(2),组件(3));

保存数据字典

将更改保存到数据字典。

Dictionary.save();

添加和连接架构端口

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

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

连接命令需要组件端口作为参数。获取部件端口并连接:

compPort = getPort(组件(2),“命令”);c_command = Connect(Archport,Compport);

保存模型。

保存(模型)

打开模型

open_system (gcs);

按压力安排布局Ctrl + Shift +一个或者使用以下命令:

万博1manbetxsimulink.blockdiagram.ArrangeSystem('mobilerobotapi');

创建和应用个人资料和刻板印象

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

创建概要文件并添加原型

创建配置文件。

形象= systemcomposer.createProfile (“GeneralProfile”);

创建一个应用于所有元素类型的原型:

elemSType = addStereotype(概要文件,'ProjectElement');

为不同类型的组件创建原型。这些类型由设计需求决定,并由您自行决定:

pCompSType = addStereotype(概要文件,'LeatherComponent'“AppliesTo”“组件”);sCompSType = addStereotype(概要文件,“softwareComponent”“AppliesTo”“组件”);

为连接创建一个模板:

sConnSType = addStereotype(概要文件,“standardConn”“AppliesTo”'连接器');

添加属性

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

addProperty (elemSType“ID”'类型'“uint8”);addProperty (elemSType“描述”'类型''细绳');addProperty (pCompSType“成本”'类型'“双”“单位”'美元');addProperty (pCompSType“重量”'类型'“双”“单位”'G');addProperty (sCompSType“develCost”'类型'“双”“单位”'美元');addProperty (sCompSType“develTime”'类型'“双”“单位”'小时');addProperty (sConnSType“unitCost”'类型'“双”“单位”'美元');addProperty (sConnSType'单调''类型'“双”“单位”'G');addProperty (sConnSType“长度”'类型'“双”“单位”“米”);

保存配置文件

保存(配置文件);

将配置文件应用于模型

将配置文件应用于模型:

applyProfile(模型,“GeneralProfile”);

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

applyStereotype(组件(2),“GeneralProfile.softwareComponent”) applyStereotype(组件(1),“GeneralProfile.physicalComponent”(3) applyStereotype(组件),“GeneralProfile.physicalComponent”

将连接器刻板印象应用于所有连接:

batchApplyStereotype(拱,'连接器''generalprofile.standardconn');

将常规元素刻板印象应用于所有连接器和端口:

batchApplyStereotype(拱,“组件”“GeneralProfile.projectElement”);batchApplyStereotype(拱,'连接器'“GeneralProfile.projectElement”);

为每个组件设置属性:

setProperty(组件(1),“GeneralProfile.projectElement.ID”'001');setProperty(组件(1),'generalprofile.projectelement.description'“所有传感器的中央单位”''');setProperty(组件(1),“GeneralProfile.physicalComponent.Cost”'200');setProperty(组件(1),“GeneralProfile.physicalComponent.Weight”'450');setProperty(组件(2),“GeneralProfile.projectElement.ID”'002');setProperty(组件(2),'generalprofile.projectelement.description''''计划电脑''');setProperty(组件(2),'generalprofile.softwarecomponent.develcost'“20000”);setProperty(组件(2),'generalprofile.softwarecomponent.develtime''300');setProperty(组件(3),“GeneralProfile.projectElement.ID”'003');setProperty(组件(3),'generalprofile.projectelement.description'“电机及电机控制器”);setProperty(组件(3),“GeneralProfile.physicalComponent.Cost”“4500”);setProperty(组件(3),“GeneralProfile.physicalComponent.Weight”“2500”);

将连接属性设置为相同:

连接= [c_sensorData c_motionData c_motionCommand c_Command];setProperty(connections(k)) = 1:length(connection)“GeneralProfile.standardConn.unitCost”'0.2');setProperty(连接(k),'generalprofile.standardconn.unitweight''100');setProperty(连接(k),“GeneralProfile.standardConn.length”'0.3');结束

添加层次结构

添加两个组件控制器范围运动成分。定义端口。将它们连接到架构并相互连接,应用连接器刻板印象。架构图中的层次结构创建了一种额外的详细信息,指定组件在内部的行为方式。

motionArch =组件(3).Architecture;运动= motionArch.addComponent ({“控制器”“范围”});controllerPorts = addPort(运动(1)。架构,{“controlIn”'Contricout'},{“在”“出”});ControllerCompportin = Motion(1).getport(“controlIn”);ControllerCompportout = Motion(1).getPort('Contricout');scopeports = Addport(Motion(2).Architecture,{“scopeIn”“scopeOut”},{“在”“出”});(2) .getPort (scopeCompPortIn =运动“scopeIn”);(2) .getPort (scopeCompPortOut =运动“scopeOut”);c_planningController =连接(motionPorts (1) controllerCompPortIn);c_planningScope =连接(scopeCompPortOut motionPorts (2));c_planningConnect =连接(controllerCompPortOut scopeCompPortIn,'generalprofile.standardconn');

保存模型。

保存(模型)

按压力安排布局Ctrl + Shift +一个或者使用以下命令:

万博1manbetxsimulink.blockdiagram.ArrangeSystem('Mobilerobotapi / Motion');

创建模型引用

模型引用对于分层组织大型模型非常有用,并允许您一次性定义体系结构或行为并重用它。当一个组件引用另一个模型时,该组件上的任何现有端口都将被删除,被引用模型上存在的端口将出现在该组件上。

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

newModel = systemcomposer.createModel (“mobileSensor”);newArch = newModel.Architecture;newComponents = addComponent (newArch,“ElectricSensor”);保存(newModel);linkToModel(组件(1),“mobileSensor”);

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

referenceModel = get_param (“mobileSensor”“SystemComposerModel”);referenceModel.applyProfile (“GeneralProfile”);referenceModel.Architecture.applyStereotype (“GeneralProfile.softwareComponent”);batchapplystereotype(ReferenceModel.architecture,“组件”“GeneralProfile.projectElement”

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

sensorPorts = addPort(组件(1)。架构,{'motiondata''sensoldata'},{“在”“出”});sensorPorts (2) .setInterface(接口)连接(拱、组件(1),(2)组件,'规则'“接口”);连接(拱门,组件(3),组件(1));

保存模型。

保存(ReferenceModel)保存(型号)

制作一个变型组件

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

[VariantComp,Choice1] = Mantuvariant(组件(2));

添加一个名为策划.第二个参数定义名称,第三个参数定义标签。标签标识选择。主动选择是由标签控制的。

选择2 = AddChoice(VariantComp,{'策略'},{'策略'});

创建所需的端口策划

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

使策划活跃的变体。

SetAceChoice(VariantComp,'策略'

按压力安排布局Ctrl + Shift +一个或者使用以下命令:

万博1manbetxsimulink.blockdiagram.ArrangeSystem('Mobilerobotapi /规划');

保存模型。

保存(模型)

清理

取消注释以下代码并运行以清除此示例创建的伪像:

% bdclose(“mobileRobotAPI”)% bdclose(“mobileSensor”)% 万博1manbetxSimulink.data.dictionary.closeAll%systemcomposer.profile.profile.closeall%删除('profile.xml')%删除('sensorinterfaces.sldd')

更多关于

展开全部

介绍了R2019a