2. 多领域系统建模语言与标准

多领域虚拟样机的集成,本质上要解决三个层面的问题:用什么语言描述模型、用什么格式交换模型、用什么接口把模型连起来联合仿真。Modelica、FMI、SysML 分别在这三个层面扮演不同角色,它们不是互相替代的关系,而是互补的标准体系。理解它们各自"管什么、不管什么",是搭建多领域集成方案的前提。

一、三类标准的分工定位

Modelica 是一种面向对象的、基于方程的建模语言。它的核心思想是"声明式建模":用户描述系统的物理方程(微分方程、代数方程),而不是描述求解步骤。求解器负责把方程整理成可计算的形式。Modelica 天然支持多领域——机械、电气、热流体、控制等库可以混合使用,因为不同领域的连接都归结为"势变量相等、流变量求和为零"的广义基尔霍夫定律。

FMI(Functional Mock-up Interface) 是一个模型交换与联合仿真接口标准,它不规定模型内部怎么建模,只规定模型对外暴露什么接口。一个符合 FMI 的模型被打包成 FMU(Functional Mock-up Unit),内部可以是 Modelica 编译结果、Simulink 模型、C 代码甚至商业软件导出的黑盒。FMI 让"不同工具建的模型"能在同一个仿真环境里协同运行。

SysML(Systems Modeling Language) 是 UML 面向系统工程的扩展,用于系统架构与需求建模。它描述的是系统的组成、接口、行为、需求和参数约束,通常不直接参与数值仿真。SysML 的价值在于把"系统怎么分解、模块之间怎么交互"讲清楚,为后续 Modelica/FMI 的模型划分提供架构依据。

一句话区分:SysML 回答"系统由什么组成、怎么交互";Modelica 回答"每个部件遵循什么物理规律";FMI 回答"这些部件怎么在仿真工具之间传递数据"。

二、Modelica 的语法要素

Modelica 模型的基本单元是 model 或 block,内部由变量声明、方程段和连接组成。关键语法要素包括:

  • 变量类型:Real(连续量)、Integer、Boolean、parameter(仿真前确定的参数)、constant(常量)。
  • 方程段:用 equation 声明代数/微分方程,用 = 表示等式而非赋值。方程数量必须与未知量数量匹配,否则模型欠定或过定。
  • 连接器:通过 connector 定义接口,典型如 Pin(电气)、Flange(机械转动)。连接时自动生成"势相等、流和为零"的方程。
  • 继承与替换:extends 复用父类,replaceable 支持在实例化时替换子模型,便于搭建可配置的模型库。

下面是一个简化的直流电机电枢回路示例,用于说明方程建模的写法:

model DCMotorArmature
  parameter Real R = 1.2 "电枢电阻(Ohm)";
  parameter Real L = 0.005 "电枢电感(H)";
  parameter Real Ke = 0.05 "反电动势系数(V·s/rad)";
  Real u "端电压(V)";
  Real i "电枢电流(A)";
  Real omega "角速度(rad/s)";
equation
  u = R*i + L*der(i) + Ke*omega;
end DCMotorArmature;

注意 der(i) 表示电流对时间的导数,Modelica 工具会自动选择求解器处理这个微分方程。参数 R、L、Ke 是仿真前设定的,i、omega、u 是随时间变化的变量。

三、FMI 的两种模式与接口规范

FMI 定义了两种运行模式,这是实际集成中最容易混淆的地方:

模式含义典型场景
Model Exchange(ME)FMU 只提供方程/导数,求解器由主仿真工具提供需要统一求解器、强耦合系统
Co-Simulation(CS)FMU 自带求解器,按通信步长与外部交换数据工具封装、黑盒模型、弱耦合

FMI 接口的核心函数包括:fmi2Instantiate(实例化)、fmi2SetReal/fmi2GetReal(读写变量)、fmi2DoStep(推进一个通信步长)、fmi2Terminate(结束)。在 CS 模式下,主控工具在每个通信步长调用各 FMU 的 fmi2DoStep,并交换输入输出变量。通信步长的选择直接影响精度和稳定性:步长过大,耦合变量在步内被冻结,可能引入误差甚至发散;步长过小,则调用开销上升。

CS 模式下,FMU 之间通过输入输出变量耦合,存在"代数环"时不能直接求解,需要引入通信步长内的延迟或迭代。若系统刚性较强,应优先考虑 ME 模式或缩短通信步长。

四、SysML 与模型集成的衔接

SysML 的 块定义图(BDD) 描述系统层级分解,内部块图(IBD) 描述块之间的端口连接,参数图(Parametric Diagram) 用约束块表达参数之间的数学关系。在多领域集成中,SysML 通常先给出系统架构:哪些子系统、各自接口是什么、哪些量需要跨系统传递。这些接口和参数随后映射为 Modelica 的连接器或 FMI 的输入输出变量。

例如,一个"电动助力转向系统"在 SysML 中被分解为电机、减速器、ECU、传感器四个块,IBD 标出电机与减速器之间的转矩/转速接口。到了 Modelica 层,这个接口就对应一个转动连接器;到了 FMI 层,转矩和转速就成为两个 FMU 之间交换的 Real 变量。这种"架构—模型—接口"的逐层映射,是保证多领域集成一致性的关键。

五、标准协同关系图解

下图给出三类标准在虚拟样机集成流程中的协同关系:SysML 提供架构与接口定义,Modelica 提供物理模型与方程,FMI 提供跨工具交换与联合仿真接口,最终汇聚到联合仿真环境中运行。

多领域集成中三类标准的协同关系 SysML 系统架构 / 需求 / 接口 BDD · IBD · 参数图 定义子系统与端口 不参与数值求解 Modelica 多领域物理建模语言 方程 / 连接器 / 继承 机械·电气·热·控制 声明式,求解器自动处理 FMI 模型交换 / 联合仿真接口 FMU 打包 · ME / CS fmi2DoStep 通信步长 跨工具黑盒集成 架构映射 封装导出 联合仿真环境(主控工具) 调度各 FMU · 交换输入输出变量 · 推进通信步长 观察耦合变量曲线 · 判断收敛与稳定性 集成结果:多领域耦合仿真 机械响应 · 电气功率 · 热平衡 · 控制效果 接口不一致 → 变量 映射错误 / 步长发散

六、集成实践中的关键判断

在实际项目中,选择哪种标准组合取决于集成目标。若所有模型都能在同一 Modelica 工具内建立,直接用 Modelica 连接器集成最简单,求解器统一、精度可控。若模型分散在不同工具(如 Simulink 控制器 + AMESim 液压 + 自研 C 代码),则必须用 FMI 封装为 FMU,此时要重点确认:各 FMU 的输入输出变量名是否与接口定义一致、单位是否统一、通信步长是否匹配系统动态。SysML 则在整个过程中作为架构基线,防止模型划分与系统分解脱节。

一个常见的集成检查清单如下,可在搭建联合仿真前逐项确认:

  • SysML 架构中的每个接口,是否都有对应的 Modelica 连接器或 FMI 变量?
  • 跨 FMU 传递的变量,单位、量纲、正方向是否一致?
  • CS 模式下通信步长是否小于系统最快时间常数的 1/5~1/10?
  • 是否存在代数环?若有,是否已通过延迟或迭代处理?
  • 各 FMU 的初始条件是否协调,避免仿真启动瞬间出现大跳变?

掌握这三类标准的分工与衔接方式,就能在虚拟样机集成中做到"架构有依据、模型有语言、交换有接口",而不是把不同工具的文件简单拼在一起。