2. 多学科协同的建模语言与标准
多学科协同工程的核心矛盾在于:机械、电气、控制、热流、软件等专业各自拥有成熟的建模语言与工具链,但它们的抽象层次、时间语义、接口约定和求解机制并不一致。若强行用单一语言描述所有学科,要么牺牲表达精度,要么导致工具链不可维护。因此,工程上更可行的路线是“各专业用各自最擅长的语言建模,再通过标准化的交换与集成机制把它们连接起来”。SysML、Modelica、FMI正是这条路线上的三类关键支撑:SysML负责系统级结构与需求语义,Modelica负责多物理域连续动态行为,FMI负责把可执行模型封装成可跨工具交换的功能单元。
三类语言的定位差异
SysML是UML在系统工程领域的扩展,它的强项不是求解微分方程,而是描述系统“由什么组成、满足什么需求、与外部如何交互”。块定义图(BDD)刻画系统层级与部件类型,内部块图(IBD)刻画部件之间的端口与连接,活动图、状态机图描述行为逻辑,需求图建立需求到设计元素的追溯关系。SysML模型通常是结构性与约束性的,它回答“系统架构是否完整、接口是否闭合、需求是否被覆盖”,而不直接给出仿真数值。
Modelica则是一种面向对象的、非因果的连续动态建模语言。它用方程而非赋值语句描述物理规律,例如电容的 i = C*der(v)、弹簧的 F = k*(x - x0),求解器自动进行符号处理与指标约简。Modelica适合描述机、电、液、热、控耦合的连续时间行为,典型工具包括Dymola、OpenModelica、SimulationX等。它的优势在于多物理域统一方程表达,但模型通常绑定在特定工具与求解器上,跨工具直接复用困难。
FMI(Functional Mock-up Interface)不是建模语言,而是模型交换与联合仿真的接口标准。它把模型打包成FMU(Functional Mock-up Unit),内部包含模型描述文件modelDescription.xml、编译后的动态库以及可选资源。FMI 2.0/3.0定义了FMI for Model Exchange和FMI for Co-Simulation两种模式:前者导出方程供外部求解器求解,后者自带求解器、以固定或可变步长与外部环境交换输入输出。FMI的价值在于把“模型”与“工具”解耦,使SysML架构模型、Modelica物理模型、Simulink控制模型可以在同一联合仿真环境中协同运行。
模型交换与集成标准
仅有语言还不够,模型要在工具之间流动,必须依赖交换标准。当前工程实践中主要有三条路径:
- 基于FMI的联合仿真:把Modelica、Simulink、Adams等模型分别导出为FMU,由主仿真器(如SimulationX、Dymola、Python的
fmpy)按统一时间步推进。主仿真器负责调度、数据交换和步长协调,各FMU只暴露输入输出变量。这是目前跨工具协同最通用的方式。 - 基于SysML的架构集成:用SysML IBD定义系统级端口与连接,把每个学科模型视为一个“黑盒”块,通过代理端口(proxy port)和流属性(flow property)约定交互变量。SysML模型本身不仿真,但可作为集成框架,把FMI接口映射到IBD连接上。
- 基于Modelica的跨域统一建模:当学科耦合紧密、需要统一求解时,直接在Modelica中建立多物理域模型,利用其连接器机制(如
Modelica.Blocks.Interfaces.RealInput、Modelica.Fluid.Interfaces.FluidPort)实现物理量守恒。这种方式精度高,但模型规模受求解器限制。
实际项目中,三种路径常混合使用:SysML做顶层架构与需求追溯,Modelica做核心物理域建模,FMI做工具间集成。例如,某电动助力转向系统协同项目中,SysML定义EPS的子系统划分与接口,Modelica建立电机、减速器、齿条动力学模型,Simulink建立ECU控制逻辑,两者分别导出FMU后在联合仿真环境中以1 ms步长交换转矩、电流和角度信号。
跨学科语义对齐方法
模型能交换不等于能正确协同。跨学科语义对齐要解决五类典型冲突:
| 冲突类型 | 典型表现 | 对齐方法 |
|---|---|---|
| 单位不一致 | 机械用N·m,控制用N·mm;温度用K与℃混用 | 在FMI变量定义中强制标注单位,联合仿真前做量纲检查 |
| 坐标系与方向 | 机械Z轴向上,电气正方向定义相反 | 在SysML IBD中定义参考坐标系,接口变量附带方向约定 |
| 时间语义 | 控制周期1 ms,热模型时间常数10 s | FMI Co-Simulation中设置不同通信步长,或采用多速率调度 |
| 接口变量命名 | 同一物理量在不同工具中叫torque、Trq、M |
建立接口字典,用SysML值类型统一命名并映射到FMU变量 |
| 因果方向 | Modelica非因果,Simulink输入输出固定 | 导出FMU时明确causality属性(input/output/parameter) |
语义对齐的落地做法是建立接口契约表。以某无人机舵机协同为例,接口契约表可包含以下字段:
接口名称: Aileron_Actuator_Interface
所属系统: 飞控-舵机协同
物理量: 舵面偏转角 δ (deg)
方向: 飞控 → 舵机 (input)
单位: deg
范围: -25 ~ +25
更新周期: 5 ms
FMI变量名: actuator.delta_cmd
SysML流属性: AileronCmd.delta
坐标系: 机体坐标系,右滚为正
这张表同时被SysML接口定义、Modelica连接器和FMI变量描述引用,任何一方修改都必须同步更新。工程上通常用脚本从SysML模型自动生成FMI变量映射文件,减少手工不一致。
总结来看,SysML、Modelica、FMI在协同工程中并非竞争关系,而是分别承担架构语义、物理语义、集成语义三个层次。跨学科语义对齐的关键不在于选择哪一种语言,而在于把接口契约作为一等公民管理起来,让单位、方向、时间步和命名在架构层、物理层和集成层之间保持一致。只有做到这一点,多学科模型才能真正从“各自能跑”走向“联合可信”。