3. 被控对象建模与HIL模型架构

HIL(Hardware-in-the-Loop)仿真的核心矛盾在于:真实控制器以微秒级节拍运行,而被控对象模型必须在同样的实时约束下完成求解。如果模型精度不足,测试结论不可信;如果模型过于复杂,实时步长无法满足,仿真就会丢步甚至崩溃。因此,被控对象建模与HIL模型架构的设计,本质上是在物理保真度与计算实时性之间寻找可工程化的平衡点。

一、物理建模:从物理方程到可实时求解的形式

被控对象建模通常从物理机理出发。以电机驱动系统为例,其电气侧可用定子电压方程描述:

u_d = R·i_d + L_d·di_d/dt − ω_e·L_q·i_q
u_q = R·i_q + L_q·di_q/dt + ω_e·(L_d·i_d + ψ_f)

机械侧则用转动惯量方程:

J·dω_m/dt = T_e − T_L − B·ω_m
T_e = 1.5·p·[ψ_f·i_q + (L_d − L_q)·i_d·i_q]

这些微分方程在离线仿真中可以用变步长求解器高精度积分,但在HIL中必须转换为固定步长的离散形式。常用方法包括前向欧拉、梯形法和四阶龙格-库塔。以电流环为例,若步长 Ts = 10 μs,电感 L_d = 0.5 mH,电阻 R = 0.1 Ω,则前向欧拉离散为:

i_d[k+1] = i_d[k] + (Ts/L_d)·(u_d[k] − R·i_d[k] + ω_e[k]·L_q·i_q[k])

这里需要特别注意:离散化会引入数值阻尼和相位滞后。当 Ts 接近系统最小时间常数的 1/10 时,误差尚可接受;若接近 1/2,则可能产生虚假振荡。因此,物理建模阶段就要预估各状态变量的时间常数,为后续步长选择提供依据。

二、信号接口:控制器与模型之间的“契约”

HIL系统中,真实控制器通过I/O板卡与实时模型交换信号。接口设计必须明确四类信息:信号方向、电气形式、量程与偏置、更新速率。以某电机控制器HIL测试为例:

信号名方向电气形式量程/偏置更新率
三相电流 ia/ib/ic模型→控制器模拟 ±10 V±50 A,0 A→0 V10 μs
旋变 sin/cos模型→控制器模拟差分1 Vrms,2.5 V偏置1 μs
PWM 门极信号控制器→模型数字 3.3 V0/1100 ns
母线电压模型→控制器模拟 0–5 V0–400 V100 μs

接口映射中常见的错误是忽略偏置与比例因子。例如,控制器内部按 0 A → 2.5 V 解析电流,而模型输出按 0 A → 0 V 映射,会导致零点偏移,进而使电流环积分饱和。因此,接口表必须在建模前冻结,并在模型中以显式增益和偏置实现,而不是隐含在物理方程中。

三、模型分区:按时间尺度与耦合强度切分

一个完整的被控对象往往包含多个时间尺度:电力电子开关周期约 10 μs,电流环约 100 μs,转速环约 1 ms,热模型约 1 s。若全部放在同一任务中以最小步长求解,计算量将不可接受。模型分区的原则是:按时间尺度分层,按耦合强度决定是否解耦。

典型分区如下:

  • 快速区:逆变器开关模型、电机电流动态,步长 1–10 μs,运行在FPGA或高优先级实时任务中。
  • 中速区:转速、位置、母线电压动态,步长 100 μs–1 ms,运行在CPU实时任务中。
  • 慢速区:温度、损耗、老化模型,步长 1 s 以上,可离线或低优先级运行。

分区之间的数据交换通过零阶保持器或一阶保持器完成。快速区向中速区输出平均转矩,中速区向快速区输出转速和角度。若耦合过强,例如弱磁工况下电流与转速强耦合,则需将相关状态合并到同一分区,或采用迭代耦合,但迭代会引入额外延迟,需在实时调度中预留时间。

四、实时调度框架:任务、优先级与超时保护

实时调度框架决定模型能否稳定运行。常见架构基于抢占式实时操作系统,任务按周期和优先级组织。以下是一个典型的双速率调度配置:

任务名       周期      优先级   执行时间预算   超时动作
fast_task    10 μs     最高     6 μs          输出保持,置错误标志
medium_task  1 ms      中       200 μs        使用上一周期值
slow_task    100 ms    低       5 ms          跳过本周期
comm_task    1 ms      中       100 μs        重发或丢弃

调度设计的关键是最坏执行时间必须小于周期。若 fast_task 在 10 μs 周期内需要 12 μs,则必须降阶模型或提高处理器性能。超时保护同样重要:当快速任务超时,模型输出应保持最后有效值,并通知测试系统,而不是输出随机值导致控制器误动作。

五、精度与实时性的初始权衡

精度与实时性的权衡不是一次性决策,而是贯穿建模、分区和调度的迭代过程。初始权衡可从三个维度入手:

  • 模型阶数:电机电流环用一阶或二阶模型即可,若加入高频开关纹波,则需提高步长或改用平均模型。
  • 求解方法:前向欧拉计算量最小但精度低;梯形法精度高但需迭代;四阶龙格-库塔精度最高但计算量约为欧拉法的四倍。
  • 步长选择:步长减小提高精度但增加计算量。经验上,步长应小于最小时间常数的 1/10,同时满足实时任务预算。

一个实用的初始权衡流程是:先建立离线高精度模型作为基准,再逐步降阶并观察关键波形误差。若电流峰值误差小于 5%、相位滞后小于 5°,且实时任务未超时,则可认为初始权衡可接受。后续再通过参数辨识和在线校正进一步优化。

HIL被控对象模型架构与实时调度关系 真实控制器 电流环 / 转速环 PWM 调制 ADC 采样 旋变解码 故障保护 I/O 接口 模拟输出 模拟输入 数字 I/O PWM 捕获 旋变仿真 故障注入 实时模型分区 快速区(FPGA / 高优先级任务) 逆变器开关模型 · 电机电流动态 · 步长 1–10 μs 执行预算 ≤ 6 μs · 超时保持输出 中速区(CPU 实时任务) 转速 · 位置 · 母线电压 · 步长 100 μs–1 ms 执行预算 ≤ 200 μs · 与快速区交换平均转矩/角度 慢速区(低优先级 / 离线) 温度 · 损耗 · 老化模型 · 步长 ≥ 1 s 执行预算 ≤ 5 ms · 可跳过本周期 调度:抢占式 · 周期 10 μs / 1 ms / 100 ms · 超时保护 PWM 电流/角度 门极 电流/电压 平均转矩 温度 初始权衡:模型阶数 ↔ 求解方法 ↔ 步长 ↔ 实时预算 · 目标:电流峰值误差 < 5%,相位滞后 < 5°

上图展示了控制器、I/O接口与实时模型分区之间的信号流向和调度关系。快速区承担最高动态,中速区处理机电能量转换,慢速区负责热与老化。三者通过明确的接口和调度预算协同工作,而初始权衡的目标就是让每个分区都在自己的时间尺度内“够用且不超时”。

在实际项目中,建议先冻结接口表,再确定分区和步长,最后编写调度配置。接口表一旦变更,模型增益、偏置和调度预算都可能需要重新校核。
不要为了追求高精度而盲目减小步长。步长减半,计算量通常翻倍,而精度提升可能不到 1%。应先确认误差来源是模型阶数、离散化方法还是接口映射,再针对性优化。