FMI / FMU(Pro)
此接口在 realvirtual 6.3.5(Professional)中基于新的高性能原生联合仿真核心完全重建。它取代了以前的、已弃用的 FMI 集成。
概述
FMI 接口将 FMU(功能模拟单元)连接到您的 realvirtual 仿真。FMI(功能模拟接口)是交换仿真模型的开放行业标准,受 150 多种工具支持,如 Modelica、Dymola、Simulink、Amesim 和 OpenModelica(参见 fmi-standard.org)。
使用 FMU Interface,您可以将经过验证的物理和控制模型——液压缸、电气驱动器、热模型、控制器——直接带入虚拟调试场景。FMU 与 Unity 物理时间步完美同步地计算其动态,所有 FMU 变量显示为普通的 realvirtual PLC 信号,您可以像连接任何其他接口的信号一样将它们连接到驱动器、行为和其他组件。
该接口支持具有 Windows 64 位二进制的 FMI 2.0 联合仿真 FMU。
快速开始
- 将您的
.fmu文件复制到Assets/StreamingAssets/FMU/(如果文件夹不存在则创建)。StreamingAssets 是必需的,以便 FMU 在构建的应用程序中作为真实文件可用。 - 将组件 realvirtual > Interfaces > FMU (FMI 2.0) 添加到空的游戏对象。
- 在 Fmu File 中输入文件名(例如
BouncingBall.fmu)。 - 点击 ⬇️ Import Signals。所有 FMU 输入、输出和可调参数都作为信号游戏对象在接口下创建——在编辑模式下,因此您可以在按播放之前将它们连接到组件。
- 将信号连接到您的场景(驱动器、行为、自定义脚本)并按播放。接口加载 FMU,显示 🟢 Connected,并与物理同步步进模型。
主要属性
Fmu File(字符串)要加载的 .fmu 包。相对名称相对于 Assets/StreamingAssets/FMU/ 解析;绝对路径按原样使用。
Step Mode(枚举)联合仿真的推进方式。Physics Synced(默认)每个 FixedUpdate 执行恰好一个宏步长,使用 Unity 物理时间步——FMU 时间与仿真时间保持一致,暂停或 Time.timeScale 更改会自动响应。Free Running 以独立于物理的后台周期步进 FMU。
Step Size(浮点数,秒)在 Physics Synced 模式下,这是内部子步分辨率:物理时间步被分成大致此大小的相等子步。在 Free Running 模式下,这是每个通信周期的固定宏步长。
Tolerance(浮点数)在初始化时传递给 FMU 的求解器容差。
Allow Viewer To Fmu(布尔值)如果启用,写入 PLC 输入信号的值在每步之前发送到 FMU。如果禁用,输入信号被忽略。
Import Signals(按钮)通过读取 FMU 自身的 modelDescription.xml 在编辑模式下创建或更新 FMU 的信号——无需手动信号映射。重新导入是安全的:现有信号保留用户设置的值。
信号
信号命名为 (例如 BouncingBall.h),遵循标准的 realvirtual 约定:
| FMU 变量 | realvirtual 信号 | 方向 |
|---|---|---|
| Output / 计算参数 | PLCOutputFloat / Int / Bool / Text | FMU → 场景 |
| Input / 可调参数 | PLCInputFloat / Int / Bool / Text | 场景 → FMU |
| Fixed 参数、局部、时间 | (无信号) | 内部 |
输入信号使用 FMU 声明的起始值初始化,因此模型在您更改输入之前的行为与设计完全一致。固定(不可调)参数在 FMU 初始化后不能更改——这是 FMI 标准定义的——因此没有信号。
每个 FMU 接口恰好托管一个 FMU。要在场景中使用多个 FMU,为每个 FMU 添加一个接口。
常见使用场景
- 详细组件物理 – 使用经过验证的 FMU 模型模拟气动缸、液压轴或电气驱动器,而不是在 Unity 中近似。
- 闭环控制 – 运行从 Simulink 或 Modelica 导出的控制器模型对抗虚拟机器。
- 虚拟调试的工厂模型 – 将仿真专家开发的特定领域仿真模型(热、流体、机械)耦合到调试场景中。
- 实时模型调优 – 可调 FMU 参数是普通输入信号;从检视器、WebViewer 或 MCP 在运行时调整它们。
错误行为
接口可以干净降级:如果原生核心或 FMU 文件缺失,接口简单地保持 Disconnected 并记录警告——场景永远不会崩溃。FMU 步骤拒绝(fmi2Discard)和错误会在控制台中报告,包含 FMU 自身的日志消息。
另请参见
- Simulink 接口 — 直接的 MathWorks Simulink 联合仿真
- 自定义接口 — 构建自己的接口