1 简介
自动驾驶系统如火如荼,现在我们也要造一个自动驾驶的汽车,那么汽车内部应该使用哪些组件和块?
本文使用sysML系统工具粗略地设计一个汽车内部的各个部分。 包括各部件描述,接口,外部依赖等,构建自动驾驶汽车的内部设计利用SysML的内部块图(IBD)来详细展示系统组件。
IBD描述了块的内部结构,包括子系统、部件、接口和连接,揭示了系统内部工作机制。它用于表示软件、硬件等组件,定义端口和接口,支持递归分解。通过端口和连接器,IBD显示数据和物理流如何在部件间通信。
感知系统、控制系统、导航系统和动力系统等子系统内部结构及它们之间的交互可通过IBD清晰展现。
这种建模方法有助于理解系统结构、设计接口和进行系统集成,但可能因复杂性而难以管理,需结合其他图表示动态行为。
2 内部定义
- 结构图:内部块图 ibd
内部块图(Internal Block Diagram, IBD):
- 定义:
块:块(符号:带有关键字 = «block»的矩形)表示一个系统组件,一个模块化结构单元,封装其内容(属性、行为、约束)并支持第一类(即可以在模型存储库中绘制和直接操作)接口。
模块封装的行为包括:操作、信号和状态机。用于连接和连接(“布线”)模块接口的唯一交互点称为端口。
在 SysML 中,内部块图用于描述块(Block)内部的结构,显示块的内部组成部分(子块或部件)及其相互之间的连接关系。它通过展示各个部分之间的连接和交互,提供系统内部详细的结构视图。
internal Block Diagram (内部块图,简称IBD) 是系统建模语言 (SysML) 中的一种图,用于显示系统组件的内部结构和它们之间的连接关系。
IBD 详细描述了一个块 (block) 内部的组成部分和这些组成部分之间的接口和交互。
- 设计目的:
描述块内部的子部件及其之间的连接关系。主要用于详细建模系统的内部结构和子系统之间的交互,帮助理解和设计系统的内部工作机制。
内部块图 (IBD) 的目的是显示模块的封装结构内容(部件、属性、连接器、端口、接口),以便可以使用基于接口的设计技术递归分解和“连接”。
如果使用得当,BDD + IBD 是递归可伸缩的,并且在数学上(参数化)可模拟。
这些设计将会帮助工程师理解系统内部构造,进行分层设计。如果内部块图描述不准确,可能导致系统集成困难。
3 简单示例:
- ibd组成元素:
块可以指定软件、硬件、机械和湿件(人员、组织、设施)组件。
块支持信息和物理流的提供(实现或实现)和必需(使用)接口。块可以递归分解为部件,其中每个部件也必须由块定义。
内部块图 (ibd):内部块图是特定块拥有的静态结构图,它显示了其封装的结构内容:部件、属性、连接器、端口和接口。换句话说,IBD 是封装(“黑盒”)块的“白盒”透视图。
通过在块定义图 (BDD) 定义和内部块图 (IBD) 用法之间交替,可以将块递归分解(“嵌套”)为部件(请参阅下面的用法说明)。
- 使用示例:
行为可以由块(例如,操作、信号和状态机)封装,也可以直接或间接(通过接口)分配给块(例如,活动/操作)。
可以通过约束块对块进行数学约束,以生成数学上可模拟的参数图。以下为一个飞行器ibd图的示例
BDD 块定义与 IBD 块使用二分法,BDD和IBD相辅相成(参见黑盒与白盒),并在系统分析和设计过程中支持递归结构分解技术。
BDD 定义块的属性,包括其部件属性(强拥有的部件)和引用属性(共享部件)。
IBD 在封装它们的块的结构上下文中指定零件属性和引用属性的用法或角色。否则,IBD 中的零件属性和参照属性可能具有不同的用法或角色,具体取决于它们在 IBD 中的实现方式(“连接”)。
可以对比UML 2 类图和组件图;SA/SD系统上下文和结构图图;IDEF IDEF1X 图等。
4 主要元素和表示方法
- 方法属性
端口和接口: 使用端口(Port)和接口(Interface)来表示系统内部组件之间以及系统与外部环境之间的交互。
端口: 用于定义组件的接口点,通过端口进行交互。
接口: 定义通过端口进行的交互类型,如数据流、信号传递等。
- 部件(Part):
块的内部组成部分,表示子系统或组件。部件是块的组成部分,表示块内部的子系统或组件。
部件在块内表示,通常是较小的矩形框,并标注部件名称和类型。示例:
+-----------------+
| Block |
| Car System |
| +-------------+|
| | Camera: ||
| | SensorBlock ||
| +-------------+|
+-----------------+
- 块(Block):
系统的基本构建单元,表示系统或子系统。
块是表示系统的基本构建单元。它可以表示任何类型的系统元素,包括硬件、软件、人员或过程等。
表示方法:一个块通常在一个矩形框中表示,框内包含块的名称。
自动汽车示例:
+-----------------+
| Block |
| Car System |
+-----------------+
- 端口(Port):
块的接口点,用于定义交互接口。 端口表示块之间或块内部的交互接口点。端口可以是标准端口或流端口。
表示方法:端口在块或部件的边缘画出,通常是一个小矩形或圆形,并标注端口名称。示例:
+-----------------+
| Block |
| Car System |
| [传感器端口] |
+-----------------+
- 接口(Interface):
定义通过端口进行的交互类型。接口定义了通过端口进行的交互的类型或协议。
表示方法:接口通常与端口相关联,并且在定义端口时可以标注接口类型。示例:
+-----------------+
| Block |
| Car System |
| [传感器端口: |
| 传感器数据] |
+-----------------+
- 连接器(Connector):
表示部件之间的连接关系。 用于表示系统内部组件之间的连接,展示信号、数据或物理连接路径。连接器表示不同部件之间的连接和交互。
表示方法:连接器通常是线条,连接两个端口,并可以标注连接的类型或协议。示例:
+-----------------+ +-----------------+
| Block |-------| Block |
| 摄像系统 | | 控制系统 |
+-----------------+ +-----------------+
- 流属性(Flow Properties):
定义通过端口传递的流动数据或物理量。定义通过端口传递的流动数据或物理量,表示组件间的交互流。流属性表示通过端口进行的流动,通常是物质、能量或信息。
表示方法:流属性在端口定义中表示,并标注流动的类型和方向。示例:
+-----------------+
| Block |
| Car System |
| [燃油端口: |
| FuelType ->] |
+-----------------+
- 值属性(Value Property):
表示块内部的属性值,如大小、重量等。
表示方法:
块内表示:值属性通常在块或部件的内部用文本表示,并标注属性名称和值。
值属性类型:值属性可以有具体的类型(如整数、浮点数、字符串等)和单位。
如下一个自动驾驶汽车系统(Car System)块,其中包含一些值属性,如重量(Weight)、最大速度(MaxSpeed)和电池容量(BatteryCapacity)。示例:
+------------------------------------------------+
| Car System |
| |
| +-----------------------------------------+ |
| | Weight: 1500 kg | |
| | MaxSpeed: 220 km/h | |
| | BatteryCapacity: 75 kWh | |
| +-----------------------------------------+ |
| |
| +-----------------+ +-----------------+ |
| | Perception Sys | | Control System | |
| | [传感器端口] |----| [控制端口] | |
| +-----------------+ +-----------------+ |
| |
+------------------------------------------------+
- Reference Property(引用属性):
表示块外部的对象或块。表示方法:
块内表示:引用属性在块的内部用矩形框表示,通常标注引用属性的名称和引用的块。
箭头指示:有时在引用属性旁边使用箭头指示引用关系。
类型标注:引用属性可以标注其引用的块类型。
示例:
汽车系统(Car System)其控制系统(Control System)引用了外部的GPS系统(GPS System)。
+------------------------------------------------+
| Car System |
| |
| +-------------------+-----------------------+ |
| | Perception Sys | Control System | |
| | | | |
| | +-------------------------------------+ | |
| | | Camera: SensorBlock | | |
| | | Resolution: 1080p | | |
| | | FrameRate: 30 fps | | |
| | +-------------------------------------+ | |
| | | | |
| | [传感器端口] |----| [控制端口] | |
| +-------------------+-------+---------------+ |
| | |
| | |
| +-------------------------+ | |
| | GPS: GPS System |<----+ |
| +-------------------------+ |
| |
+------------------------------------------------+
现在的自动汽车系统(Robot System)中,其控制系统(Control System)引用了一个外部的传感器网络(Sensor Network)。