3. 被控对象模型与实时仿真

在 dSPACE HIL 平台中,被控对象模型(Plant Model)是运行在实时处理器上的“虚拟实物”。它必须在一个固定步长内完成全部计算,否则会破坏闭环时序,导致测试结果失真。因此,把 Simulink/Simscape 等离线模型转化为可实时执行的模型,是 HIL 工程中最关键的一步。本节围绕模型分割、实时化方法、求解器选择、接口定义与闭环验证五个环节展开,并给出可操作的参数与判断依据。

一、模型分割:按实时性与耦合强度切分

模型分割的目标是让每个计算单元都能在步长内完成,同时不破坏物理耦合。常用依据有三条:刚性程度(快动态与慢动态分离)、耦合强度(强耦合必须同核)、采样率需求(高频部分单独成核)。例如整车模型中,发动机扭矩动态(时间常数约 10 ms)与车身运动(约 1 s)可分离;而电机与逆变器电流环(约 100 μs)必须与 PWM 模型同核。

分割后通常形成“主模型 + 子模型”结构:主模型运行在实时核 0,负责整车动力学与接口调度;子模型运行在核 1~3,负责高频电气或液压部分。核间通过共享内存或反射内存交换数据,交换周期必须与最慢子模型步长一致。若某子模型计算时间超过步长的 70%,应继续拆分或降低其内部状态数。

二、实时化方法:从离线到定步长

离线模型常含变步长求解器、代数环、查表外推和连续状态。实时化时需做四类处理:

  • 定步长离散化:将连续积分器替换为前向欧拉或 Tustin 离散模块,步长取 1 ms 或 0.1 ms。
  • 代数环消除:在反馈路径插入单位延迟(z-1),把代数环变为因果链。延迟会引入一步相位滞后,需在验证时确认不影响稳定性。
  • 查表与插值:把外推改为线性插值并限制输入范围,避免实时运行时越界。
  • 计算量优化:合并重复子系统、用定点或单精度替代双精度、把矩阵运算展开为标量运算。

以某 1 ms 步长的电池模型为例,原始双精度版本单步耗时 0.82 ms,接近上限;改为单精度并展开 3×3 矩阵后降至 0.31 ms,留出足够余量。这类优化应在模型分割之后、求解器选择之前完成。

三、求解器选择:定步长下的取舍

dSPACE 实时系统只支持定步长求解器。常用选项及适用场景如下:

求解器特点适用场景
Euler(前向欧拉)计算量最小,一阶精度,稳定性一般步长足够小、动态不刚性的模型
Heun / RK2二阶精度,计算量约为 Euler 的 2 倍中等刚性、对精度有要求的动力学
RK4四阶精度,计算量大步长较大且动态平滑的模型
Tustin(双线性)频域保角,适合滤波器与控制器离散控制器、信号调理环节

选择原则:先看刚性比(最大与最小时间常数之比)。刚性比大于 100 时,Euler 需要极小步长才能稳定,此时应改用 Tustin 或对快动态单独分割;刚性比小于 10 时,Euler 在 1 ms 下通常足够。另一个判据是相位裕度损失:Euler 在步长 T 下引入约 ωT/2 的相位滞后,若闭环截止频率为 100 rad/s、T=1 ms,滞后约 0.05 rad(约 2.9°),可接受;若 T=5 ms,滞后约 14.3°,需重新评估。

HIL 被控对象模型实时化与闭环验证链路 离线被控对象模型 变步长 / 代数环 双精度 / 查表外推 模型分割 刚性 / 耦合 / 采样率 主模型 + 子模型 实时化处理 定步长 / 消代数环 单精度 / 展开矩阵 求解器选择 Euler / Heun / RK4 Tustin 模型接口定义(I/O 映射与信号调理) 输入:传感器仿真值 / 执行器反馈 / 总线报文 输出:执行器驱动 / 传感器模拟 / 故障注入 闭环验证:实时核 ↔ 真实 ECU 观测:CPU 负载 / 超时计数 / 步长抖动 / 波形偏差 判据:负载 < 70% · 无超时 · 偏差 < 5% 不通过 → 回到分割或求解器调整 迭代优化 示例参数:步长 1 ms · 核 0 主模型 · 核 1 高频子模型 · 交换周期 1 ms · 单精度

四、模型接口定义:让虚拟对象与真实 ECU 对齐

接口定义决定 HIL 能否正确闭环。需要明确四类信号:

  • 输入信号:来自真实 ECU 的执行器驱动(如喷油脉宽、PWM 占空比),需定义量程、极性、采样率和故障默认值。
  • 输出信号:送往 ECU 的传感器仿真值(如曲轴位置、氧传感器电压),需定义更新率和分辨率。
  • 总线信号:CAN/CAN FD 报文,需定义报文 ID、周期、信号起始位与字节序。
  • 故障注入信号:开路、短路、漂移,需定义注入点与恢复条件。

接口定义应形成一张 I/O 映射表,至少包含:信号名、方向、物理量、量程、单位、更新率、对应 dSPACE 通道、故障默认值。例如“节气门位置反馈”方向为输出,量程 0~5 V,更新率 1 ms,通道 DS2102 DAC0,故障默认 0.5 V。映射表完成后,用 dSPACE ConfigurationDesk 生成接口代码,避免手工连线错误。

五、闭环验证:从波形到指标

闭环验证分三步。第一步开环检查:断开 ECU,手动给定执行器信号,观察模型输出是否符合物理预期,例如给定 50% 占空比,电机转速应稳定在对应值附近。第二步闭环接入:连接真实 ECU,运行典型工况(怠速、加速、急减速),用 ControlDesk 记录关键波形。第三步指标判定:

  • 实时性:CPU 负载低于 70%,超时计数为 0,步长抖动小于 5%。
  • 一致性:与离线仿真同工况对比,关键量(转速、扭矩、温度)偏差小于 5%。
  • 稳定性:闭环无持续振荡,相位裕度不低于 30°。

若偏差超标,优先检查代数环延迟是否过大、求解器是否与刚性不匹配、接口量程是否接反。例如某次验证中转速偏差达 12%,排查发现曲轴信号更新率被误设为 10 ms,改为 1 ms 后偏差降至 3%。这说明接口更新率与模型步长必须一致,否则会引入额外滞后。

建议在模型分割阶段就为每个子模型标注“最大允许计算时间”,实时化后逐项测量,避免后期返工。dSPACE 的 RTI 测量功能可直接读取每个子系统的单步耗时。
不要用离线变步长求解器的结果直接作为 HIL 基准。离线结果可能因步长自适应而“过于精确”,与定步长实时结果存在固有差异,应统一用相同步长的离线定步长仿真作为对比基准。

综上,模型分割决定计算能否并行,实时化决定能否在步长内完成,求解器决定精度与稳定性的平衡,接口定义决定闭环能否正确建立,闭环验证则给出可量化的通过判据。五者顺序推进、迭代优化,才能让被控对象模型在 dSPACE HIL 平台上真实可信地运行。