3. 逆变器与空间矢量脉宽调制仿真
在无位置传感器电机控制仿真中,逆变器是连接控制算法与电机模型的“执行末端”。控制器算出的电压指令最终必须由逆变器转化为三相端电压,而三相电流响应又反过来决定观测器能否正确估计转子位置。因此,本节的重点不是孤立地画一个逆变器,而是把“两电平电压源逆变器建模—SVPWM 调制—死区与非线性补偿—三相电压激励与电流响应观察”串成一条可运行的仿真链路。
两电平电压源逆变器建模
两电平电压源逆变器由直流母线 Vdc、六个开关管(上桥臂 T1/T3/T5,下桥臂 T2/T4/T6)和三相输出 A、B、C 构成。每相桥臂只有两种有效状态:上管导通、下管关断时输出接正母线,记为 Sx = 1;下管导通、上管关断时输出接负母线,记为 Sx = 0。三相开关状态组合共 8 种,对应 6 个非零电压矢量和 2 个零矢量。
仿真建模时,常用理想开关模型:
Vao = (2*Sa - Sb - Sc) * Vdc / 3
Vbo = (2*Sb - Sa - Sc) * Vdc / 3
Vco = (2*Sc - Sa - Sb) * Vdc / 3
其中 Vao、Vbo、Vco 为相对电机中性点的相电压。若只关心线电压,则 Vab = Vao - Vbo,依次类推。实际仿真中,为避免开关瞬间电流突变,可在每相输出串入小电感或使用带寄生参数的开关模型;若只验证控制逻辑,理想模型已足够。需要特别说明的是,本节所有电压、电流方向均采用“从逆变器流向电机”为正,后续图示与公式保持一致。
SVPWM 原理与实现
SVPWM 的核心思想是:在一个开关周期 Ts 内,用相邻两个非零矢量和零矢量去逼近目标参考电压矢量 Vref。设参考矢量位于第 I 扇区,由 V1(100) 和 V2(110) 合成,作用时间分别为 T1、T2,零矢量作用时间为 T0 = Ts - T1 - T2。典型七段式对称 PWM 的开关顺序为:000 → 100 → 110 → 111 → 110 → 100 → 000,这样每相开关动作一次,谐波性能较好。
实现时通常先由 Valpha、Vbeta 判断扇区,再计算基本矢量作用时间。以第 I 扇区为例:
T1 = Ts * (sqrt(3)*Valpha - Vbeta) / Vdc
T2 = Ts * Vbeta / Vdc
T0 = Ts - T1 - T2
若 T1 + T2 > Ts,说明参考矢量超出线性调制区,需要按比例缩放,否则会进入过调制。仿真中建议把扇区判断、时间计算、比较值生成写成独立函数,便于后续替换为死区补偿后的版本。
死区与非线性补偿
真实逆变器上下管不能同时导通,必须插入死区时间 Td,典型值 1~3 μs。死区会导致实际输出电压与指令电压之间出现偏差,偏差方向取决于该相电流方向:电流流出桥臂时,实际输出偏低;电流流入桥臂时,实际输出偏高。这个偏差在低速、小电流时尤为明显,会直接造成电流波形畸变和位置估计误差。
常用补偿方法是在指令电压上叠加一个与电流方向相反的补偿量:
if (Ia > 0) Vcomp_a = +Vd
else Vcomp_a = -Vd
Vd = Td / Ts * Vdc
对 B、C 相同理。仿真中可先关闭补偿,观察电流过零附近的“平顶”畸变;再开启补偿,对比电流 THD 和过零畸变是否改善。注意补偿量不宜过大,否则会在电流过零附近产生振荡。
在仿真中生成三相电压激励并观察电流响应
搭建好上述模型后,建议按以下顺序运行仿真。第一步,给定直流母线 Vdc = 300 V,开关频率 fsw = 10 kHz,死区 Td = 2 μs,参考电压幅值从 0 缓慢增加到线性调制区上限 Vdc/√3 ≈ 173 V。第二步,先关闭死区补偿,记录 A 相电流 ia 波形,重点观察电流过零点附近是否出现明显的平顶或台阶。第三步,开启补偿,补偿量按 Vd = Td/Ts·Vdc 计算,本例中 Vd = 2e-6 × 10e3 × 300 = 6 V,再观察同一工况下的电流波形。
判断结果时,可从三个角度入手:一是电流过零畸变是否减小;二是电流 THD 是否下降;三是观测器估计位置与实际位置的误差是否收敛。若补偿后电流反而出现高频振荡,说明补偿量过大或补偿方向判断有误,应减小 Vd 或加入电流过零附近的平滑处理。若电流波形整体偏斜,则要检查扇区判断和 T1、T2 计算是否与参考矢量方向一致。
Vao、Vbo、Vco 与 ia、ib、ic 两组数据,并固定步长使用 1e-6 s 或更小,否则死区细节会被数值积分“抹平”,无法用于补偿效果对比。
sign(ia),容易在过零处产生抖动。工程上常用“电流阈值 + 线性过渡”或“低通滤波后取符号”的方式处理,仿真中可先用理想符号函数验证原理,再替换为平滑版本。