
在储能逆变器中,SPWM因算法简单、高频段开关损耗可控,适用于开关频率≥2kHz(高频段);SVPWM通过空间矢量合成高效利用电压空间,降低低频段谐波与矢量切换损耗,适用于开关频率≤2kHz(低频段),实际工程中常结合两者,并通过优化调制参数(如非对称载波比)平衡谐波与开关损耗。
| 特性/场景 | SPWM | SVPWM |
|---|---|---|
| 定义 | 正弦调制波与三角载波比较生成脉冲 | 电压空间矢量合成控制输出 |
| 谐波特性 | 高频段谐波小(载波频率高),低频段谐波大(调制比大,脉宽剧烈变化) | 低频段谐波显著降低(磁链轨迹更圆),高频段谐波与SPWM相当 |
| 计算复杂度 | 低(三角载波与正弦波比较,简单比较运算) | 高(需计算矢量作用时间,涉及三角函数) |
| 开关损耗 | 较低(高频段开关频率高,但脉宽变化快,损耗可能大) | 较低(低频段开关频率低,矢量切换次数少,损耗低,但低频段矢量切换多时损耗可能增加) |
| 适用频率 | 高频段(开关频率≥2kHz,如10kHz以上) | 低频段(开关频率≤2kHz,如1kHz以下) |
| 电压利用率 | 较低(低频段脉宽变化大,电压利用率下降) | 较高(低频段高效利用电压空间,利用率接近1) |
| 核心权衡 | 开关频率高 vs 低频谐波大 | 低频谐波低 vs 计算复杂度高、矢量切换损耗 |
高频与低频选择核心结论:开关频率≥2kHz(高频段)选SPWM(计算简单,开关频率高抑制谐波);开关频率≤2kHz(低频段)选SVPWM(磁链轨迹更圆,降低低频谐波与开关损耗)。实际工程中常采用“频率切换”策略(如开关频率从10kHz降至1kHz时切换到SVPWM),或通过优化载波比(如非对称载波比)在高频段进一步抑制谐波。
SPWM伪代码(单相桥臂,高频段,调制比m=0.8,载波比N=50):
def generate_spwm(high_freq=10000, output_freq=50, m=0.8):
sampling_rate = 20000 # 20kHz采样率
total_samples = 2000 # 100ms采样点数
carrier = np.zeros(total_samples)
modulate = np.zeros(total_samples)
output = np.zeros(total_samples)
for i in range(total_samples):
t = i / sampling_rate
carrier[i] = high_freq * t # 三角载波(线性上升下降)
modulate[i] = m * np.sin(2 * np.pi * output_freq * t) # 正弦调制波
# 三角载波与正弦波比较
if modulate[i] > carrier[i]:
output[i] = 1 # 高电平
else:
output[i] = 0 # 低电平
return output
注:载波比N=载波频率/输出频率=10000/50=200,这里取N=50是为了简化示例,实际高频段N通常≥50,抑制谐波。
SVPWM伪代码(三相逆变器,低频段,调制比m=0.8,零矢量选择Sine策略):
def generate_svpwm(output_freq=50, m=0.8):
sampling_rate = 2000 # 2kHz采样率(低频段)
total_samples = 2000 # 1ms采样点数
theta = np.zeros(total_samples) # 磁链位置
vector = np.zeros(total_samples) # 矢量选择
time = np.zeros(total_samples) # 矢量作用时间
for i in range(total_samples):
t = i / sampling_rate
theta[i] = 2 * np.pi * output_freq * t # 磁链位置
# 矢量选择(基于磁链位置)
if theta[i] in [0, 2*np.pi]: # 矢量0(零矢量)
vector[i] = 0
time[i] = 0
elif theta[i] in [np.pi/3, np.pi]: # 矢量Ud/2
vector[i] = 1
time[i] = (m - np.sin(theta[i])) / (3 * np.sin(np.pi/3))
elif theta[i] in [2*np.pi/3, 4*np.pi/3]: # 矢量-Ud/2
vector[i] = 2
time[i] = (m - np.sin(theta[i])) / (3 * np.sin(np.pi/3))
elif theta[i] in [5*np.pi/3, 2*np.pi]: # 矢量-Ud
vector[i] = 3
time[i] = (m - np.sin(theta[i])) / (3 * np.sin(np.pi/3))
else: # 零矢量(Sine策略,等权重选择零矢量0或4)
vector[i] = 4
time[i] = (m - np.sin(theta[i])) / (3 * np.sin(np.pi/3))
# 输出开关状态(假设矢量0对应开关状态000,矢量1对应100等)
switch_states = vector_to_switches(vector)
return switch_states
注:零矢量选择策略(如Sine策略)可优化低频段磁链轨迹,减少谐波;调制比m≤1,实际工程中m通常取0.8-1.0。
(约90秒)
“在储能逆变器中,SPWM和SVPWM的选择主要取决于工作频率。高频段(开关频率高于2kHz,比如10kHz以上),我们通常用SPWM,因为算法简单,开关频率高时谐波问题不突出,而且实现成本低;低频段(开关频率低于2kHz,比如1kHz以下),SVPWM更合适,它能通过空间矢量合成更高效利用电压空间,让输出电压的磁链轨迹更接近圆形,从而降低低频谐波和开关损耗。实际工程中,我们常采用‘频率切换’策略,比如开关频率从10kHz降到1kHz时,自动切换到SVPWM。另外,为了优化调制,我们还会用非对称载波比(比如载波比N=2k+1,k取1时N=3),在高频段进一步抑制谐波。比如低频时SVPWM选择零矢量(如Sine策略),使磁链轨迹更圆,减少低频谐波;高频时SPWM用高载波比(如50:1),让谐波集中在高频段,不影响输出。总结来说,高频选SPWM,低频选SVPWM,并通过优化调制参数平衡谐波与开关损耗。”