4. 实时仿真基础与步长选择
在 Power HIL(功率硬件在环)系统中,实时仿真器并不是“算得越快越好”,而是必须在每个固定节拍内完成一次完整的模型求解与 I/O 交换。这个固定节拍就是实时步长(time step,常用 Δt 或 Ts 表示)。步长选得过大,开关事件被“跨过”,波形失真甚至数值发散;步长选得过小,CPU/FPGA 预算被耗尽,实时性反而崩溃。本节从离散化方法、求解器类型出发,讲清步长与数值稳定性的关系,并给出结合开关频率确定步长的工程方法。
一、连续模型如何变成“每步一算”
电力电子系统本质是连续时间的微分方程,例如电感电流满足 di/dt = v/L。实时仿真器无法求解连续解,必须先把模型离散化,即把微分关系近似为相邻两个步长之间的差分关系。最常用的三种方法:
- 前向欧拉:i[k+1] = i[k] + (Δt/L)·v[k]。只用当前值,计算量最小,但稳定域有限,Δt 偏大时容易振荡发散。
- 后向欧拉:i[k+1] = i[k] + (Δt/L)·v[k+1]。需要解隐式方程,但数值稳定(A-稳定),适合刚性电路。
- Tustin(梯形):用梯形面积近似积分,精度为二阶,稳定性和精度折中较好,是很多实时求解器的默认选择。
离散化带来的直接后果是:步长 Δt 不再只是精度参数,而是进入模型系数本身。例如后向欧拉下电感等效为电阻与受控源的组合,其等效导纳与 Δt 直接相关。因此步长一变,模型行为就变。
二、求解器类型:定步长是实时仿真的前提
离线仿真常用变步长求解器(如 ode45),它根据误差自动调整步长,但步长不固定就无法保证每个实时节拍内算完,因此实时仿真必须使用定步长求解器。常见类型:
- 定步长显式求解器:如 RK4、前向欧拉,每步计算量固定,适合小步长、低刚性模型。
- 定步长隐式求解器:如后向欧拉、梯形,需要迭代或矩阵求逆,单步开销大,但允许更大步长,适合含开关的刚性网络。
- 状态空间/节点法求解器:把电路写成状态方程或节点导纳矩阵,配合预计算矩阵,适合 FPGA 并行实现。
选择求解器时,核心权衡是:单步计算时间 × 步长数 ≤ 实时预算。若模型刚性大、开关多,隐式求解器虽然单步慢,但可用更大步长,总预算反而更优。
三、步长与数值稳定性的定量关系
以最简单的 RL 电路为例,前向欧拉的稳定条件为 Δt < 2L/R,即步长必须小于电路时间常数的两倍。若 L=1 mH、R=1 Ω,时间常数 τ=1 ms,则 Δt 必须小于 2 ms;实际工程中通常取 τ/10 以下,即 100 μs 以内,才能保证波形无明显数值阻尼或振荡。
更一般地,实时步长应同时满足三个约束:
- 稳定性约束:Δt 小于最小时间常数的 1/5~1/10;
- 开关分辨率约束:每个开关周期至少采样 20~50 个点,即 Δt ≤ Tsw/20;
- 实时预算约束:单步计算时间(含 I/O)小于 Δt 的 70%~80%,留出余量。
示例(合理假设):某 Buck 变换器开关频率 fsw = 20 kHz,则 Tsw = 50 μs。按每周期 25 点采样,Δt ≤ 2 μs。若模型最小时间常数 τ = 20 μs,稳定性要求 Δt ≤ 2~4 μs。两者取严,最终选 Δt = 2 μs。此时若单步计算耗时 1.2 μs,占空比 60%,满足实时预算。
四、结合开关频率确定步长的工程流程
实际选步长不是拍脑袋,而是按下面顺序推进:
- 确定最高开关频率 fsw,max,算出最小开关周期 Tsw,min;
- 按每周期 20~50 点,得到 Δt_sw = Tsw,min / (20~50);
- 提取模型最小时间常数 τ_min,得到 Δt_stab = τ_min / (5~10);
- 取 Δt = min(Δt_sw, Δt_stab),并向上圆整到仿真器支持的步长档位(如 1 μs、2 μs、5 μs);
- 实测单步计算时间,若超过 Δt 的 80%,则改用隐式求解器或拆分模型到 FPGA。
需要特别注意的是,开关事件不能靠“碰巧采样到”。若步长与开关周期不成整数比,PWM 边沿会在相邻步之间抖动,产生非物理的谐波。工程上常让 Δt 整除 Tsw,或使用 FPGA 做事件级插值,把开关时刻精确到纳秒级。
五、常见误区与排障
实践中,步长问题往往表现为“波形看起来对,但一上功率就炸”或“跑几分钟后数值溢出”。典型原因包括:
- 步长与开关周期不成整数比:PWM 边沿抖动,谐波异常。解决:让 Δt 整除 Tsw,或启用事件插值。
- 用显式求解器跑刚性电路:小电感、大电容导致时间常数极小,步长被迫压到纳秒级。解决:换后向欧拉或梯形。
- 忽略 I/O 延迟:ADC 采样、PWM 输出、通信占用的时间未计入预算,实际单步超时。解决:用示波器测“计算开始到输出更新”的真实耗时。
- 步长过小导致 CPU 饱和:虽然数值稳定,但实时性丢失,表现为周期抖动。解决:适当增大步长并改用隐式方法,或把高频部分下放到 FPGA。
注意:步长不是越小越好。在 Power HIL 中,“能在每个节拍内算完”比“算得准”优先级更高。一个 2 μs 步长、稳定运行的模型,远比 0.5 μs 步长但频繁超时的模型更有工程价值。
六、可直接使用的步长选择检查表
| 检查项 | 判据 | 示例值 | 不满足时的动作 |
|---|---|---|---|
| 开关分辨率 | Δt ≤ Tsw / 20 | 50 μs / 25 = 2 μs | 减小步长或降低 fsw |
| 数值稳定性 | Δt ≤ τ_min / 5 | 20 μs / 10 = 2 μs | 改用隐式求解器 |
| 实时预算 | 单步耗时 ≤ 0.8 Δt | 1.2 μs ≤ 1.6 μs | 拆分模型 / 下放 FPGA |
| 步长与 Tsw 关系 | Tsw / Δt 为整数 | 50 / 2 = 25 | 调整步长或启用插值 |
| 长时间稳定性 | 连续运行 10 min 无发散 | 电流纹波偏差 < 5% | 检查刚性环节与求解器 |
把这张表当作上机前的自检清单:先算开关分辨率,再算稳定性,最后实测预算。三者同时满足,步长才算选对。若只能满足两个,优先保实时预算和稳定性,再通过 FPGA 事件插值弥补开关分辨率。