主要内容

systemcomposer.io.ModelBuilder

模型构建器系统的作曲家架构模型

描述

构建系统作曲家™模型使用ModelBuilder对象。构建系统的作曲家在体系结构层次模型组件及其地位,港口和映射组件,组件之间通过端口之间的联系和接口的架构模型和映射端口。

创建

builder = systemcomposer.io.ModelBuilder(概要)%创建ModelBuilder对象

属性

全部展开

组件的信息,指定为一个表。表包含组件的层次信息,类型的组件(例如,组件,参考组件,不同的组件,或适配器)、原型应用于组件和组件的设置属性值的能力。

港口信息,指定为一个表。表包含的端口信息,映射组件和接口,以及原型应用。

连接信息,指定为一个表。的表包含信息表中定义的端口之间的连接端口也原型应用于连接。

接口信息,指定为一个表。表包含各种接口的定义及其元素。

例子

全部折叠

作曲家™使用体系结构规范导入系统systemcomposer.io.ModelBuilder实用程序类。这些架构规范可以定义在一个外部来源,如一个Excel®文件。

在系统作曲家,架构完全由四组信息:

  • 组件及其体系结构层次结构中的位置。

  • 港口和组件的映射。

  • 连接组件之间通过端口。在这个例子中,我们也从外部源导入接口数据定义。

  • 接口架构模型和映射到港口。

下面的例子使用了systemcomposer.io.ModelBuilder类通过上述架构信息和导入系统作曲家模型。

在这个例子中,架构信息的小型无人机系统中定义一个Excel电子表格,用于创建一个系统作曲家体系结构模型。

外部源文件

  • Architecture.xlsx——这个Excel文件包含层次体系结构的信息模型。这个例子将外部源数据映射到系统作曲家模型元素。下面是列名称的映射信息系统作曲家模型元素。

#元素:元素的名称。可以组件或端口名称。父:父元素的名称。#类:可以是组件或端口(端口)的输入/输出方向。#域:映射组件属性。属性配置文件中定义的“制造商”UAVComponent下原型PartDescriptor映射到域值在excel中源文件。#:映射组件属性。属性“ModelName”定义在概要文件UAVComponent刻板印象PartDescriptor映射到值在excel中源文件。# InterfaceName:如果端口类型的类。InterfaceName地图界面与港口的名称。 # ConnectedTo : In case of port type, it specifies the connection to other port defined in format "ComponentName::PortName".
  • DataDefinitions.xlsx——这个Excel文件包含接口数据模型的定义。下面这个例子假设之间的映射数据定义Excel中的源文件和接口层次结构系统的作曲家。

#名称:接口或元素的名称。#父:父接口名称的名字(只适用于元素)。#数据类型:数据类型的元素。可以另一个总线接口格式:InterfaceName #尺寸:尺寸的元素。#单元:单元属性的元素。#最低:最小值的元素。#最大:元素的最大值。

步骤1。实例化ModelBuilder

您可以实例化ModelBuilder类配置文件名称。

(统计,fa] = fileattrib (pwd);如果~足总。UserWrite disp (该脚本必须运行在一个可写目录的);返回;结束%的模型构建。modelName =“scExampleModelBuider”;%概要文件的名称。形象=“UAVComponent”;%的源文件阅读架构信息。architectureFileName =“Architecture.xlsx”;%实例化ModelBuilder。builder = systemcomposer.io.ModelBuilder(配置文件);

步骤2。构建接口数据定义

阅读外部源文件中的信息DataDefinitions.xlsx,建立数据模型的接口。

从Excel创建MATLAB®表源文件。

选择= detectImportOptions (“DataDefinitions.xlsx”);选择。DataRange =“A2”;%力readtable从第二行开始读。definitionContents = readtable (“DataDefinitions.xlsx”、选择);% systemcomposer.io。IdService类生成惟一的ID%给关键idService = systemcomposer.io.IdService ();rowItr = 1:元素个数(definitionContents (: 1)) parentInterface = definitionContents.Parent {rowItr};如果isempty (parentInterface)%的接口添加模型构建器的接口名称。interfaceName = definitionContents.Name {rowItr};%获得独特的界面ID. getID(容器,键)生成的%或返回(如果键已经存在)为输入键值相同%在容器内。interfaceID = idService.getID (“接口”,interfaceName);% Builder效用函数接口添加到数据%的字典。builder.addInterface (interfaceName interfaceID);其他的%的元素读取元素属性和添加元素%的父接口。elementName = definitionContents.Name {rowItr};interfaceID = idService.getID (“接口”,parentInterface);% ElementID是独特的在一个接口。%附加“E”开始的ID一致性。生成的ID%输入元素父接口名作为容器内是独一无二的。elemID = idService.getID (parentInterface elementName,“E”);%数据类型,尺寸,单位,最小和最大的属性%的元素。数据类型= definitionContents.DataType {rowItr};尺寸=字符串(definitionContents.Dimensions (rowItr));单位= definitionContents.Units (rowItr);%确保builder效用函数总是一个的输入%的字符串。如果= ~ ischar(单位)单位;结束最小= definitionContents.Minimum {rowItr};最大= definitionContents.Maximum {rowItr};% Builder功能添加元素属性界面。builder.addElementInInterface (elementName elemID interfaceID,数据类型,尺寸,单位,“真实”的、最大、最小);结束结束

步骤3。构建体系结构规范

从Excel架构规范是由MATLAB表源文件。

excelContents = readtable (architectureFileName);%遍历表的每一行。rowItr = 1:元素个数(excelContents (: 1))%读取excel文件的每一行和列。类= excelContents.Class (rowItr);父母= excelContents.Parent (rowItr);Name = excelContents.Element {rowItr};%使用builder填充表的内容。如果比较字符串(类,“组件”)ID = idService.getID (“薪酬”、名称);%根ID是默认设置为零。如果比较字符串(父,“scExampleSmallUAV”)parentID =“0”;其他的parentID = idService.getID (“薪酬”、家长);结束% Builder效用函数来添加组件。builder.addComponent(名称、ID parentID);%读取属性值类型= excelContents.Kind {rowItr};域= excelContents.Domain {rowItr};% *建筑商建立原型和属性值。builder.setComponentProperty (ID、“StereotypeName”,“UAVComponent.PartDescriptor”,“ModelName”、善良、“制造商”域);其他的%在这个例子中,连接的端口名和父组件名称%是生成惟一的id作为关键港口。portID = idService.getID (“端口”strcat(名称、父));%对根港口体系结构。列表被认为是“0”。如果比较字符串(父,“scExampleSmallUAV”)列表=“0”;其他的列表= idService.getID (“薪酬”、家长);结束% Builder效用函数添加端口。构建器。addPort(名称、类、portID列表);% InterfaceName指定接口连接到端口的名称。interfaceName = excelContents.InterfaceName {rowItr};%得到界面ID. getID()将返回相同的id%在步骤2中添加界面时生成的。interfaceID = idService.getID (“接口”,interfaceName);% Builder将接口映射到港口。builder.addInterfaceToPort (interfaceID portID);%阅读与信息之间建立联系%的组件。与= excelContents.ConnectedTo {rowItr};%与格式:% (DestinationComponentName:: DestinationPortName)。%对于这个示例,考虑到当前端口的连接。如果~ isempty(与)connID = idService.getID (“连接”,与);分裂=分裂(与,“::”);%的端口ID连接端口。%在这个例子中,端口ID是由连接%端口名和父组件名称。如果端口id已经% getID()函数返回相同的id生成输入键。connectedPortID = idService.getID (“端口”strcat(分裂(2)将(1)));%使用builder来填充连接表。sourcePortID = portID;destPortID = connectedPortID;%生成器添加连接。builder.addConnection(与、connID sourcePortID destPortID);结束结束结束

步骤3。导入模型从填充表builder.build函数

[模型,importReport] = builder.build (modelName);

关闭模式

bdclose (modelName)

更多关于

全部展开

算法

组件 描述
addComponent (compName、ID、ParentID) 添加组件名称和ID作为孩子的组件IDParentID。在根的情况下,ParentID是0。
变长度输入宗量setComponentProperty (ID)

刻板印象在组件ID。键值对的原型中定义的属性名称和值可以作为输入传递。在这个例子中

builder.setComponentProperty (ID、“StereotypeName”,“UAVComponent.PartDescriptor”,“ModelName”、善良、“制造商”域)
ModelName制造商属性在刻板印象PartDescriptor

港口 描述
addPort (portName、方向,ID列表) 添加端口名称和ID与方向(输入或输出)和ID作为组件列表
变长度输入宗量setPropertyOnPort (ID) 设置刻板印象在端口ID。键值对的原型中定义的属性名称和值可以作为输入传递。
连接 描述
addConnection (connName ID、sourcePortID destPortID) 添加端口之间的连接名称和IDsourcePortID(方向:输出)destPortID(方向:输入)中定义的端口。
变长度输入宗量setPropertyOnConnection (ID) 设置刻板印象与ID。键值对的原型中定义的属性名称和值可以作为输入传递。
接口 描述
addInterface (interfaceName ID) 接口名称和ID添加到数据字典。
addElementInInterface (elementName ID、interfaceID数据类型,尺寸,单位,复杂性、最大值、最小值) 添加元素名称和ID与ID作为下一个接口interfaceID。数据类型、尺寸单位、复杂性和最大和最小是一个元素的属性。这些属性指定为字符串。
addAnonymousInterface (ID、数据类型、尺寸、单位、复杂性、最大值、最小值) 添加匿名接口ID和元素属性等数据类型,尺寸,单位,复杂性,最大和最小。匿名接口的数据类型不能是另一个接口名称。匿名接口没有像其他界面元素。
接口和端口 描述
addInterfaceToPort (interfaceID portID) 链接与ID指定为一个接口InterfaceID与ID指定为一个端口PortID
模型 描述
构建(modelName) 建立模型和模型名称作为输入传递。
日志记录和报告 描述
getImportErrorLog () 得到ErrorLogs在导入模型时生成的。后叫build ()函数
getImportReport () 得到一个进口的报告。后叫build ()函数。
介绍了R2019b