可视化构建架构
您可以在 System Composer™ 中创建和编辑可视化图来表示架构。在系统构成中使用架构元素,包括组件、端口和连接。通过分解组件来建模架构中的层次结构。在层次结构中导航。
使用 MATLAB® 代码以及函数 importModel
和 exportModel
,您可以将外部架构描述导入到 System Composer 中。有关详细信息,请参阅导入和导出架构模型。
或者,您可以使用 MATLAB 编程来创建和自定义各种架构元素。有关详细信息,请参阅以编程方式构建架构模型。
注意
加载现有数据字典时,Simulink® 会自动将其迁移到 Simulink 数据字典的“架构数据”分区。除了接口编辑器之外,您还可以使用架构数据编辑器和 Simulink.dictionary.ArchitecturalData
编程接口来管理和修改接口和值类型。有关管理架构数据的更多信息,请参阅Store Shared Data in Architectural Data Section和Store Data in Architectural Data Section Programmatically。
提示
要了解更多关于 System Composer 概念在系统工程设计中的应用,请参阅System Composer 概念。
创建架构模型
System Composer 架构代表由组件组成的系统,以及这些组件在结构上和行为上如何相互关联。不同类型的架构描述系统的不同方面。您可以使用视图来可视化架构中的组件子集。您可以使用参数编辑器在架构层级上定义参数。
System Composer 模型是包含架构信息的文件,涵盖组件、端口、连接器、接口和行为等信息。架构模型包括一个顶层架构,该架构包含系统的组成部分。此顶级架构还允许您定义该系统与其他系统的接口。
要建模系统的物理和逻辑架构,请从一个空的架构模型开始。使用以下三种方法之一创建架构模型:
在 MATLAB 命令行窗口中,输入以下命令。
systemcomposer
选择架构模型。
System Composer 提供模板架构模型,可应对系统工程和软件架构建模中的不同领域:架构模型和软件架构模型。所有架构模型都提供相同的结构功能,但有一些领域和平台特定的约束。有关架构模板的详细信息,请参阅选择系统设计的架构模板。
从 Simulink 模型或 System Composer 架构模型中,在仿真选项卡上,选择新建
,然后选择架构
。
在 MATLAB 命令行窗口中,输入以下命令。
archModel = systemcomposer.createModel("modelName"); systemcomposer.openModel("modelName");
参量
modelName
是新模型的名称。
保存架构模型。在仿真选项卡中,选择保存 。架构模型被保存为一个
SLX
文件。
架构模型包括一个顶层架构,该架构包含系统的组成部分。该顶级架构还允许定义该系统与其他系统的接口。该组合代表了一个结构化的部件列表 - 一个组件及其接口和互连的层次结构。在“构图编辑器”中编辑构图。
此示例显示了一个运动控制架构,其中传感器从电机获取信息,将信息反馈给控制器,控制器处理这些信息,然后向电机发送控制信号,使电机以特定方式运动。您可以从这个粗略的描述开始,随着设计的进展添加组件属性、接口定义和需求。
组件
组件是系统中可替换的部分,用于在架构环境中实现明确的函数。组件定义架构元素,例如函数、另一个系统、硬件、软件或其他概念实体。组件也可以是子系统或子函数。System Composer 中的 Component 元素可以表示系统层次结构中任何级别的组件,无论是包含许多子系统的重大系统组件(例如具有硬件和软件的控制器),还是层次结构最低级别的组件(例如用于消息传递的软件模块)。组件以模块的形式表示,是架构模型的一部分,并且可以分离成可重用的工件。使用接口编辑器通过端口接口在组件之间传输信息,使用参数编辑器传输参数。
使用以下方法之一将组件添加到架构:
绘制组件 - 在画布中,左键点击并拖动以创建一个矩形。释放鼠标按钮即可查看组件轮廓。选择 Component 模块选项进行提交。
从调色板创建组件 - 左键点击并拖动调色板中的组件,然后释放鼠标按钮以确认。
创建多个组件 - 右键点击一个组件并拖动,即可创建第二个组件。释放鼠标按钮以确认操作。
每个组件在同一架构级别内必须具有唯一的名称。创建后,组件的名称会突出显示,您可以直接输入名称。要更改组件的名称,请点击该组件,然后点击其名称。
只需点击并拖动即可移动组件。蓝色指南线可能会出现,以帮助对齐组件与其他组件。
通过拖动角来调整组件的大小。
将指针悬停在角落处,即可看到双箭头。
点击角并按住鼠标键拖动。如果要按比例调整组件的大小,请同时按住 Shift 按钮。
当组件达到所需大小时,释放鼠标按钮。
点击一个组件,然后按 Delete 删除它。要删除多个组件,请按住 Shift 键的同时选择它们,然后按 Delete。
在组件上添加封装图标
您可以使用封装图标,用覆盖组件主体和标题的图像来封装 System Composer 组件。封装图标可使架构图更直观地表达信息。
选择一个 Component、Reference Component 或 Variant Component 模块。
要打开添加封装图标图像对话框,请从工具栏中选择 格式 > 将图像添加到模块。
要从文件中选择图像,请点击浏览。该目录必须位于 MATLAB 路径下。
要删除封装图像,请从工具栏中选择 格式 > 编辑图像 > 删除图像。
要检查应用封装图标后的组件名称或端口名称,请使用属性检查器。要配置其他选项,如封装透明度,请使用 setMaskImage
函数。
有关在 Component 和 Variant Component 模块中使用封装图标的示例,请参阅使用四轴飞行器架构设计计算耐久性。
更改默认字体
您可以更改组件标题、链接模型或子系统名称、端口名称以及子系统组件行标签中的默认字体。要修改字体选项,请打开“字体样式”对话框。从 System Composer 工具栏中,点击字体按钮 旁边的下拉箭头,选择 格式 > 模型字体。
端口
端口是组件或架构上的节点,表示与其环境的交互点。通过端口,信息可以流向其他组件或系统,或者从其他组件或系统流入。组件端口是组件上与其他组件之间的交互点。架构端口是系统边界上的端口,无论该边界是在组件内还是在整体架构模型内。根架构具有由其端口定义的边界。
例如,传感器可能具有与电机和控制器通信的数据端口。传感器输入端口从电机接收数据,输出端口将数据传输到控制器。您可以按照 定义组件之间的端口接口 中所述定义接口来指定数据值。
注意
新创建的端口默认具有 <inherit>
接口规范,以在架构设计的早期阶段支持未知接口。如果在另一个端口上指定了接口,则在构建架构时,<inherit>
指定将该接口传播到其他连接的端口。接口规范不会自动通过模型和子系统引用传播。
添加组件端口
通过定义方向接口端口来表示组件之间的关系。您可以通过将端口放置在组件的任何边缘的任何位置来组织图。
在组件侧暂停。出现一个“+”号和端口轮廓。
点击端口轮廓。一组选项将出现在
Input
、Output
或Physical
端口。选择
Output
以确认端口。您还可以在此时为端口命名。
输出端口用 图标表示,输入端口用
图标表示,物理端口用
图标表示。
注意
物理端口是非方向性的,与实现物理网络方法的 Simscape™ 物理建模一起使用。有关使用 Simscape 的组件行为的详细信息,请参阅使用 Simscape 实现组件行为。
创建后,您可以使用箭头键将任何端口移动到任何组件边缘。
添加架构端口
您还可以为包含组件的架构创建端口。边界上的这些系统端口将系统的接口传输到其他系统。根位于架构层次结构的顶层。根架构的边界由围绕相关系统的架构端口定义。根架构的系统边界包围着您的架构模型。您可以添加架构端口来定义跨边界接口。
在系统框的任何边缘暂停,当出现 + 符号时点击。点击左侧创建输入端口,点击右侧创建输出端口。
端口名称、移动和删除
每个端口都以一个名称创建。要更改名称,请点击名称并进行编辑。
组件的端口必须具有唯一的名称。
您可以将端口移动到组件的任何一侧。选择端口并使用箭头键。一侧端口的间距是自动的。同一边缘上可以组合输入和输出端口。
选择端口并按 Delete 按钮可删除端口。
更改端口类型
要更改端口类型,请右键点击端口,选择更改端口动作,然后选择输入、输出或物理。您还可以在属性检查器中更改端口类型。在接口部分,从动作列表中选择相应的端口操作。
使用 systemcomposer.arch.PortDirection
枚举来更改端口操作。在此示例中,compPort
代表一个 systemcomposer.arch.ComponentPort
对象,archPort
代表一个 systemcomposer.arch.ArchitecturePort
对象。每个对象使用 Direction
属性来识别端口操作。
compPort.Direction = systemcomposer.arch.PortDirection.Input compPort.Direction = systemcomposer.arch.PortDirection.Physical archPort.Direction = systemcomposer.arch.PortDirection.Output archPort.Direction = systemcomposer.arch.PortDirection.Physical
对于 Input
端口或 Output
端口,您可以右键点击端口,从上下文菜单中选择共轭端口,将端口类型更改为其共轭端口。Input
端口转换为 Output
端口,Output
端口转换为 Input
端口。
连接
连接器是提供端口之间连接的线路。连接器描述信息如何在组件或架构之间流动。通过连接器,两个组件可以进行交互,而无需定义交互的性质。在端口上设置接口来定义组件之间的交互方式。连接是数据从输出端口流向输入端口的可视化表示。例如,从电机到传感器的连接传递位置信息。
连接现有端口
通过拖动一条线连接两个端口:
点击其中一个端口。
在将线拖动到另一个端口时,请保持鼠标按下状态。
在目标端口释放鼠标按钮。黑色线条表示连接已完成。如果连接不完整,将显示一条红色点线。
您可以按照这两个方向进行操作 - 从输入端口到输出端口,或者从输出端口到输入端口。您无法连接方向相同的端口。
架构端口与组件端口之间的连接用标签代替线条表示。
连接没有端口的组件
要同时快速创建端口和连接,请从一个组件边缘拖动一条线到另一个组件边缘。此连接的方向取决于组件使用的边缘 - 左侧和顶部边缘被视为输入,右侧和底部边缘被视为输出。您还可以从现有端口到组件边缘执行此操作。
您可以创建一个连接,将一个被假设为仅输入的边与一个被假设为仅输出的边连接起来。例如,您不能将假定为输入的顶部边缘与另一个顶部边缘连接,除非其中一个已经具有输出端口。
分支连接
通过分支连接将一个输出端口连接到多个输入端口。要分支,请右键点击现有连接,并在按住鼠标按钮的同时将其拖动到输入端口。释放按钮以确认新连接。
通过连接创建新组件
如果您从输出端口启动连接,并在未指定目标端口的情况下释放鼠标按钮,则会临时出现一个新组件。点击新组件将其提交。
自动连接同名端口
您可以使用智能连接工具条菜单按钮在模型画布上的组件之间自动连接同名的端口。要了解智能连接及其各种选项,请参阅 通过自定义策略智能连接端口 和 smartConnect
函数。
您还可以按照以下步骤连接同名的端口:
突出显示要连接的端口所在的组件。
按 Ctrl,然后右键点击另一个组件,您希望使用相同的名称规则连接其端口。
有关详细信息,请参阅Connect Blocks。
要使用编程接口连接同名端口,请使用 connect
函数,并将 "name"
指定为 Rule
名称-值参量。要识别端口和组件,请将 lookup
函数与 getQualifiedName
函数一起使用。
更改重叠连接的线交叉样式
在复杂的架构图中,连接器可能会重叠。您可以通过选择另一种线交叉样式来提高图的可读性。导航至 建模 > 环境 > Simulink 预设项。在 Simulink 预设项中,选择编辑器,然后选择一个线交叉样式。默认的线交叉样式,Tunnel
,如下所示。
另一个选项 Line Hop
如下所示。
有关在线交叉样式参数的更多信息,请参阅Line crossing style。
另请参阅
函数
createModel
|addComponent
|addPort
|connect
|setMaskImage
|exportModel
|importModel