2. SysML语言核心
SysML 不是“画图工具”,而是一套把系统结构、行为、约束和状态统一表达出来的建模语言。它从 UML 继承而来,但针对系统工程做了关键裁剪与扩展:去掉了软件实现相关的类、对象、部署等细节,增加了需求、参数、分配等系统级概念。在 SysML 的九种图中,真正承担“系统建模主干”的是五类图:块定义图(BDD)、内部块图(IBD)、参数图(PAR)、活动图(ACT)和状态机图(STM)。它们不是并列的五个画法,而是分别回答系统建模中五个不同但必须互相咬合的问题。
五类图各自回答什么问题
块定义图回答“系统由哪些类型的块组成,块与块之间是什么关系”。它定义的是类型层的结构:一个“电池包”块有哪些属性、端口、操作,它和“电芯”“BMS”“热管理子系统”之间是组合、泛化还是依赖关系。BDD 是系统词汇表和分类体系的载体,决定了后续所有图的“名词”从哪来。
内部块图回答“某个块内部,它的部件如何通过端口连接”。IBD 是实例层的结构视图:在“电池包”这个块内部,放入若干“电芯”部件、一个“BMS”部件、一个“冷却板”部件,并用连接器把电芯的高压输出端口连到 BMS 的采样端口,把冷却板的进出液口连到热管理端口。BDD 说“电池包由电芯组成”,IBD 说“这个电池包里,电芯怎么连、连到哪”。
参数图回答“系统的性能指标由哪些参数决定,约束关系是什么”。PAR 把工程方程、性能约束和设计参数绑定到块上:例如电池包的“总电压 = 串联电芯数 × 单体电压”,“续航里程 = 电池可用能量 / 百公里电耗”。PAR 是 SysML 区别于普通结构建模的关键,它让模型不仅能描述“长什么样”,还能描述“算出来是多少”。
活动图回答“系统如何通过一系列动作完成功能”。ACT 描述的是行为流:控制流、对象流、输入输出、决策与并发。例如“充电控制”活动图里,从“检测枪连接”到“握手通信”到“闭合继电器”到“恒流充电”到“恒压充电”到“结束充电”,每个动作的输入输出对象、守卫条件和并发分支都清晰可见。
状态机图回答“系统在生命周期中经历哪些状态,什么事件触发状态迁移”。STM 描述的是状态相关行为:电池包处于“休眠”“待机”“充电”“放电”“故障”等状态,什么事件(如“插入充电枪”“温度超限”“故障清除”)触发迁移,每个状态里执行什么动作。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。
理解这五类图的角色分工,是后续把 SysML 模型与仿真模型协同起来的基础。结构图回答“系统是什么”,参数图回答“性能怎么算”,行为图回答“系统怎么动”,状态图回答“系统怎么变”。只有这四类问题都被一致地表达出来,模型才具备可仿真、可验证、可追溯的工程价值。