第4章:功率级仿真——逆变器模型、IGBT/MOSFET开关特性、死区效应仿真
各位同学,欢迎来到功率级仿真这一章。说实话,很多做电机控制的工程师,一开始都容易忽略功率级。大家总觉得:「我算法写好了,仿真跑通了,硬件不就那样吗?」
嗯,我以前也这么想。直到有一次,我在调试一个高速主轴电机驱动时,发现电流波形总是不对劲。查了三天算法,最后发现是死区时间设置的问题。从那以后,我再也不敢小看功率级仿真了。
4.1 逆变器模型:从理想开关到实际模型
我们先从最基础的开始。逆变器模型,说白了就是把直流电变成交流电的电路。在HIL测试中,我们不可能真的去搭一个几百伏的功率电路,所以要用数学模型来模拟它。
我个人习惯把逆变器模型分成三个层次:
- 理想开关模型:开关瞬间导通、瞬间关断,没有损耗。适合算法验证初期。
- 带导通电阻模型:考虑开关管导通时的电阻Rds(on),能模拟导通损耗。
- 完整开关特性模型:包含开通/关断时间、米勒平台、寄生电容等。这是HIL测试中最常用的。
你想想看,如果只用理想模型,死区效应、开关损耗这些关键问题根本看不出来。所以我的建议是:至少用带导通电阻的模型,最好用完整模型。
核心要点:逆变器模型的核心是开关函数。每个桥臂的上下管互补导通,用Sx表示开关状态(1表示上管导通,0表示下管导通)。输出相电压Vx = Sx * Vdc - Vdc/2(对地参考)。
4.2 IGBT/MOSFET开关特性仿真
IGBT和MOSFET,这是功率器件里的两大主角。在HIL仿真中,我们怎么模拟它们的开关行为呢?
我记得刚开始做HIL时,我试图用非常精细的物理模型——什么载流子浓度、耗尽层宽度都算进去了。结果仿真步长设到10纳秒,一个开关周期要算半天。后来我学乖了,用行为级模型就够了。
4.2.1 开关暂态过程
一个实际的开关过程,不是瞬间完成的。它包含:
- 开通延迟:从门极信号到电流开始上升的时间
- 电流上升时间:电流从10%到90%的时间
- 电压下降时间:电压从90%到10%的时间
- 关断延迟:从门极信号到电压开始上升的时间
- 电压上升时间:电压从10%到90%的时间
- 电流下降时间:电流从90%到10%的时间
在HIL中,我们通常用一阶或二阶传递函数来模拟这些暂态过程。比如:
// 简化的开关暂态模型
// 输入:门极信号 gate (0或1)
// 输出:等效开关电阻 R_sw
if (gate == 1) {
// 开通过程
if (state == OFF) {
t_on = 0;
state = TURN_ON;
}
R_sw = R_on * (1 - exp(-t_on / tau_on));
t_on += dt;
} else {
// 关断过程
if (state == ON) {
t_off = 0;
state = TURN_OFF;
}
R_sw = R_off * (1 - exp(-t_off / tau_off));
t_off += dt;
}
实战技巧:tau_on和tau_off的值可以从器件数据手册中查。一般IGBT的开关时间在几十到几百纳秒,MOSFET更快一些,几纳秒到几十纳秒。我一般取数据手册典型值的1.5倍,因为实际电路中还有驱动电阻和杂散电感的影响。
4.2.2 开关损耗计算
开关损耗是功率器件发热的主要来源。在HIL仿真中,我们可以实时计算:
- 导通损耗:P_con = I^2 * Rds(on) * D(D为占空比)
- 开关损耗:P_sw = 0.5 * V * I * (t_rise + t_fall) * f_sw
我曾经在一个项目中,用这个模型预测的IGBT结温,和实际热成像仪测的结果误差在5%以内。嗯,够用了。
4.3 死区效应仿真
死区效应,这是功率级仿真里最容易踩坑的地方。什么是死区?就是上下管同时关断的那段时间,防止直通短路。
你想想看,死区时间虽然短(一般1-5微秒),但它带来的影响可不小:
- 电压畸变:实际输出电压和理想PWM电压有偏差
- 电流谐波:产生5、7次等低次谐波
- 转矩脉动:低速时尤其明显,电机可能会抖动
- 零电流钳位:电流过零时,死区效应最严重
4.3.1 死区效应的数学模型
在HIL中,死区效应的仿真其实不复杂。核心就是:在PWM信号中加入死区时间,然后根据电流方向决定输出电压。
// 死区效应仿真伪代码
// 输入:理想PWM信号 pwm_high, pwm_low
// 输入:相电流 i_phase
// 输出:实际输出电压 v_out
// 1. 插入死区
if (pwm_high == 1 && pwm_low == 1) {
// 死区状态,上下管都关断
dead_time_active = true;
}
// 2. 根据电流方向决定输出电压
if (dead_time_active) {
if (i_phase > 0) {
// 电流流入电机,下管续流二极管导通
v_out = -Vdc/2 - V_f; // V_f为二极管压降
} else if (i_phase < 0) {
// 电流流出电机,上管续流二极管导通
v_out = Vdc/2 + V_f;
} else {
// 电流为零,保持上次状态
v_out = v_out_prev;
}
}
注意:死区效应在电流过零时最明显。我曾经调试一个伺服驱动器,低速时电机嗡嗡响,查了半天发现是死区补偿没做好。后来加了自适应死区补偿算法,问题才解决。所以做HIL测试时,一定要重点测试低速、轻载工况下的死区效应。
4.3.2 死区补偿策略验证
HIL测试的一个大用处,就是验证死区补偿算法。常见的补偿策略有:
| 补偿方法 | 原理 | 优缺点 |
|---|---|---|
| 电压前馈补偿 | 根据电流方向,在电压指令中叠加补偿量 | 简单,但对电流检测精度敏感 |
| 脉冲宽度补偿 | 直接调整PWM脉冲宽度 | 精度高,但实现复杂 |
| 自适应补偿 | 根据电流误差在线调整补偿量 | 鲁棒性好,但需要额外算法 |
我个人比较推荐电压前馈补偿,因为它实现简单,在大多数工况下效果都不错。但要注意,电流检测的偏置和噪声会直接影响补偿效果。我在HIL测试中,会故意给电流信号加一些噪声和偏置,看看补偿算法的鲁棒性。
4.4 功率级仿真实战要点
好了,讲了这么多理论,我们来总结一下功率级仿真的实战要点:
- 模型精度与仿真速度的平衡:HIL是实时仿真,模型太精细跑不动,太粗糙没意义。我一般用行为级模型,开关时间用一阶近似就够了。
- 死区时间的设置:死区时间不是越大越好。太大会导致电压畸变严重,太小又有直通风险。一般取开关时间的3-5倍。
- 续流二极管的影响:别忘了续流二极管!在死区期间,电流是通过二极管续流的。二极管的压降和反向恢复特性都会影响仿真精度。
- 母线电压波动:实际系统中,母线电压不是恒定的。在HIL中,可以加入母线电压的纹波模型,看看对电流控制的影响。
最后说一句:功率级仿真做得好不好,直接决定了你的HIL测试能不能发现真实问题。别嫌麻烦,把逆变器模型、开关特性、死区效应都仿真到位了,你的电机控制算法才能经得起实际考验。
下一章,我们会讲电流采样与信号调理的仿真。到时候我会分享一个我踩过的坑——电流采样延时对控制性能的影响。敬请期待!