2. SysML语言核心

SysML 不是“画图工具”,而是一套把系统结构、行为、约束和状态统一表达出来的建模语言。它从 UML 继承而来,但针对系统工程做了关键裁剪与扩展:去掉了软件实现相关的类、对象、部署等细节,增加了需求、参数、分配等系统级概念。在 SysML 的九种图中,真正承担“系统建模主干”的是五类图:块定义图(BDD)、内部块图(IBD)、参数图(PAR)、活动图(ACT)和状态机图(STM)。它们不是并列的五个画法,而是分别回答系统建模中五个不同但必须互相咬合的问题。

五类图各自回答什么问题

块定义图回答“系统由哪些类型的块组成,块与块之间是什么关系”。它定义的是类型层的结构:一个“电池包”块有哪些属性、端口、操作,它和“电芯”“BMS”“热管理子系统”之间是组合、泛化还是依赖关系。BDD 是系统词汇表和分类体系的载体,决定了后续所有图的“名词”从哪来。

内部块图回答“某个块内部,它的部件如何通过端口连接”。IBD 是实例层的结构视图:在“电池包”这个块内部,放入若干“电芯”部件、一个“BMS”部件、一个“冷却板”部件,并用连接器把电芯的高压输出端口连到 BMS 的采样端口,把冷却板的进出液口连到热管理端口。BDD 说“电池包由电芯组成”,IBD 说“这个电池包里,电芯怎么连、连到哪”。

参数图回答“系统的性能指标由哪些参数决定,约束关系是什么”。PAR 把工程方程、性能约束和设计参数绑定到块上:例如电池包的“总电压 = 串联电芯数 × 单体电压”,“续航里程 = 电池可用能量 / 百公里电耗”。PAR 是 SysML 区别于普通结构建模的关键,它让模型不仅能描述“长什么样”,还能描述“算出来是多少”。

活动图回答“系统如何通过一系列动作完成功能”。ACT 描述的是行为流:控制流、对象流、输入输出、决策与并发。例如“充电控制”活动图里,从“检测枪连接”到“握手通信”到“闭合继电器”到“恒流充电”到“恒压充电”到“结束充电”,每个动作的输入输出对象、守卫条件和并发分支都清晰可见。

状态机图回答“系统在生命周期中经历哪些状态,什么事件触发状态迁移”。STM 描述的是状态相关行为:电池包处于“休眠”“待机”“充电”“放电”“故障”等状态,什么事件(如“插入充电枪”“温度超限”“故障清除”)触发迁移,每个状态里执行什么动作。STM 特别适合表达具有模式切换、故障处理和互斥状态的系统。

SysML 五类核心图在系统建模中的角色分工 以电池包系统为例:结构定义 → 内部装配 → 参数约束 → 行为流程 → 状态迁移 块定义图 BDD 类型层 · 系统由什么组成 «block» 电池包 «block» 电芯 «block» BMS «block» 热管理 组合 组合 定义属性、端口、操作、泛化/组合关系 内部块图 IBD 实例层 · 内部如何连接 电芯1 电芯2 BMS 冷却板 高压采样 液冷回路 端口、连接器、部件、委托端口 参数图 PAR 约束层 · 性能由什么决定 总电压 = N串 × V单体 续航 = E可用 / 电耗 温升 = Q / (m·c) SOH = C当前 / C额定 绑定方程、参数、约束属性、值属性 活动图 ACT · 行为流 充电控制:动作、对象流、决策、并发 检测枪连接 握手通信 闭合继电器 温度正常? 恒流充电 恒压充电 是 否→降功率 状态机图 STM · 状态迁移 电池包:状态、事件、守卫、动作 休眠 待机 充电 放电 故障 上电 插枪 拔枪 需求 放电 温度超限 故障清除 BDD 定义类型 → IBD 装配实例 → PAR 约束性能 → ACT 描述行为 → STM 管理状态;五者通过分配关系与需求关联,共同构成可仿真、可验证的系统模型

五类图之间的协同关系

这五类图不是孤立使用的。BDD 定义的块,会在 IBD 中被实例化为部件并连接;IBD 中的部件,会在 PAR 中被赋予参数和约束;BDD 中的块,会在 ACT 中作为活动的主体或对象流节点;STM 中的状态,则往往对应 ACT 中某个动作的执行条件或结果。SysML 通过分配关系(allocate)把行为分配到结构上,通过绑定连接器(binding connector)把参数绑定到值属性上,通过需求关系(satisfy/verify)把模型元素关联到需求。

以电池包充电为例:BDD 定义“电池包”块及其组成;IBD 展示电芯、BMS、冷却板之间的端口连接;PAR 给出“充电时间 = (SOC目标 − SOC当前) × 额定容量 / 充电功率”的约束;ACT 描述从插枪到结束充电的动作序列;STM 描述电池包在休眠、待机、充电、放电、故障之间的迁移。五张图合在一起,才能支撑“充电时间是否满足需求”这类系统级问题的仿真验证。

建模时的选择原则

实际建模中,不要试图用一张图表达所有信息。判断该用哪类图,可以问四个问题:是在定义类型还是在描述实例?类型用 BDD,实例用 IBD。是在描述结构还是在描述行为?结构用 BDD/IBD,行为用 ACT/STM。是在描述连续计算还是在描述离散流程?连续约束用 PAR,离散动作流用 ACT。是在描述状态相关行为还是在描述无状态流程?有互斥状态和事件驱动用 STM,纯动作序列用 ACT。

建模建议:先建 BDD 确定系统词汇表和分类,再建 IBD 确定内部装配和接口,然后用 PAR 绑定关键性能方程,最后用 ACT 和 STM 描述行为。不要一开始就陷入某一张图的细节,五类图是互相校验的:IBD 中连不上的端口,说明 BDD 的端口定义有遗漏;PAR 中算不出的参数,说明 BDD 的属性不完整;ACT 中缺少输入对象,说明 IBD 的接口没定义清楚。

理解这五类图的角色分工,是后续把 SysML 模型与仿真模型协同起来的基础。结构图回答“系统是什么”,参数图回答“性能怎么算”,行为图回答“系统怎么动”,状态图回答“系统怎么变”。只有这四类问题都被一致地表达出来,模型才具备可仿真、可验证、可追溯的工程价值。