MBD笔记:SPWM技术

SPWM算法实现

基波、调制波的概念

几个容易混淆的概念:

SPWM/FOC应用中,调制波 = 基波.

频率成分角度,叫基波(区别 PWM 里的载波谐波);从PWM调制过程,叫调制波. 如果调制波中叠加了谐波,例如三次谐波注入SPWM,那么 调制波 = 基波 + 谐波.

简而言之,

标准正弦 SPWM:调制波 = 基波;
带谐波注入 / 过调制:基波是调制波里最主要的低频分量.

SPWM是什么

SPWM核心思想:用等幅不等宽的矩形脉冲序列等效替代标准正弦波,依靠电感(电机绕组 / 滤波电感)积分平滑作用,还原出近似正弦的交流电压波形.

SPWM底层原理,是 底层等效原理(面积等效准则):相同时间段内,矩形脉冲的面积和正弦波对应区间面积相等,则二者作用效果近似一致. 我们把整个正弦周期切分成无数小段,每一小段用一个直流脉冲填充,调节脉冲宽度,让脉冲面积匹配该段正弦曲线围成的面积;脉冲高度固定为直流母线电压\(U_{dc}\),只改变宽度.

MCU通过载波对比法,实现SPWM,载波是高频对称三角波. 比较逻辑:

  • 调制波电压 > 三角载波电压 → 功率管导通,输出高电平 \(U_{dc}\)
  • 调制波电压 < 三角载波电压 → 功率管关断,输出低电平 0;

输出的高低电平脉冲串,脉宽严格跟随正弦波幅值变化,正弦波峰值位置脉宽最宽、过零点脉宽最窄.

常规SPWM算法实现

基本概念

常规SPWM控制,将三角载波和对称的三相正弦调制波作比较,且生成PWM波形,本质是一种相电压控制方式.

定义三相正弦相电压:

\[\tag{26} \begin{cases} V_{am} = V_m \sin \omega t \\ V_{bm} = V_m \sin\left(\omega t - \dfrac{2}{3}\pi\right) \\ V_{cm} = V_m \sin\left(\omega t + \dfrac{2}{3}\pi\right) \end{cases} \]

其中,\(V_{am},V_{bm},V_{cm}\)是abc三相相电压(正弦波),\(V_m\) 相电压幅值(正弦波幅值),\(\omega\) 电角速度,\(t\) 系统启动后到现在的时间.

载波\(V_s\)是幅值为 \(V_{sm}\)、频率为 \(f_c\) 的三角载波.

载波信号频率\(f_c\)与调制波信号频率\(f\)之比,称为载波比

\[\tag{27} m_f = \frac{f_c}{f_m} \]

正弦调制信号与三角载波信号的幅值之比,称为调制深度调制比

\[\tag{26} m_m = \frac{V_m}{V_{sm}} \]

其中,\(V_m\) 调制波幅值(基波幅值),\(V_{sm}\) 三角载波幅值(Sawtooth /Triangle Saw Wave,锯齿波/三角载波).

载波频率\(f_c\)(Carrier Wave):PWM内部三角波频率(通常由PWM Generator 模块参数设置),决定了Inverter开关频率;
调制波频率\(f_m\)(Modulating Wave):送入PWM的三相\(U_{refA/B/C}\)正弦波频率,等于电机频率.

调制波频率计算:可由电机转速、极对数计算

\[f_m = f_e = \frac{p\cdot n}{60} = \frac{\omega_e}{2\pi} \]

其中,\(f_m\) 载波频率,\(f_e\) 电角频率,\(p\) 极对数,\(n\) 转速(rpm),\(\omega_e\) 电角速度.

工程上,对SPWM的逆变器常采用电压平均模型的方法,进行输出基波电压的计算.

\(f_c \gg f_m\)\(m_m\le 1\)时,相电压基波幅值\(V_m\)满足:

\[\tag{29} V_m = \frac{1}{2} m_m U_{dc} \]

此时,\(V_m\)随着调制深度线性变化.

对于三相电压源逆变器,以A相桥为例,

1)当\(V_m > V_{sm}\)时,\(s_a=1,s_a'=0\),即上桥臂导通,下桥臂断开;
2)当\(V_m < V_{sm}\)时,\(s_a=0,s_a'=1\),即下桥臂导通,上桥臂断开;

\(m_f=9\)时,三相逆变器SPWM示意图:

img

注:从上到下分别是:\(V_a,V_b,V_c,V_s\)波形;\(V_{AO}\)波形;\(V_{AN}\)波形

谐波分量:指信号里除了基波(我们想要的频率)之外,其他所有频率的成分. 它是逆变器输出里最核心的干扰源之一.

产生原因:PWM逆变电路使用(三角)载波对正弦信号进行调制,所以必然产生和载波有关的谐波分量.

\[\tag{30} f_h = (n\cdot m_f ± k)f \]

其中,
\(n=1,3,5,...\)时,\(k=3(2m-1)±1, m=1,2,3,...\)
\(n=2,4,6,...\)时,\(k=6m+1, m=0,1,2,...\)(或者\(k=6m-1, m=1,2,3,...\));

可知,载波频率整数倍处的高次谐波不再存在,因为\(k\neq 0\). SPWM谐波分布有明显的“集簇”特性,即一组一组地集中分布于载波频率的整数倍频率两侧.

由于3的整数倍次谐波属于零序分量,故逆变器输出电压中不再存在3 的整数倍次谐波(即3次谐波).

为什么说 “逆变器输出电压中不再存在3 的整数倍次谐波”?

因为逆变器输出的是线电压(2相之间电压,如\(U_{ab}\)),而不是相电压(如\(U_a\)

设三相输出的3次谐波:

\[\begin{cases} V_a = V_3 \sin(3\omega t) \\ V_b = V_3 \sin\left(3\omega t - 3 \cdot \dfrac{2\pi}{3}\right) = V_3 \sin(3\omega t - 2\pi) = V_3 \sin(3\omega t) \\ V_c = V_3 \sin\left(3\omega t + 3 \cdot \dfrac{2\pi}{3}\right) = V_3 \sin(3\omega t + 2\pi) = V_3 \sin(3\omega t) \end{cases} \]

其中,\(V_3\) 是3次谐波幅值.

线电压:\(U_{ab}=U_a-U_b\)
线电压3次谐波分量:\(U_{ab(3)}=U_{a(3)}-U_{b(3)}=V_3 \sin(3\omega t)-V_3 \sin(3\omega t)=0\)
同理,\(U_{bc(3)} = U_{ca(3)} = 0\)
所以说,逆变器输出电压中不存在3次谐波.

仿真模型

  • 仿真模型

参数设置:三角载波频率(PWM开关频率)\(f_{pwm}=5kHz\);正弦调制波频率\(f=50Hz\),幅值1,调制深度\(m_f=0.7\)
三角载波Carrier Wave中Time value设为[0 1/Fc/4 3/Fc/4 1/Fc] ( \(Fc=f_{pwm}=5kHz\) ).
Output values设为[0 -1 1 0];直流侧电压\(U_{dc}=700V\).

仿真设置:模型采用变步长 ode23tb 算法,最大仿真步长(Max Step Size)设为0.00001,其余不变.

img

常规SPWM:
输出三相开关状态\(s_a,s_b,s_c\)

img

根据3相开关状态计算出三相电压:

输出三相电压\(V_a,V_b,V_c\)

img

  • 仿真结果

相电压\(U_a\)的计算结果:

img

相电压\(U_a\)的FFT分析:

img

可知\(U_a\)幅值246V. 由前面调制比定义,可知,

\[m_m = \frac{V_m}{V_{sm}} \]

其中,\(V_m\) 正弦基波幅值,\(V_{sm}\) 三角波幅值.

对应SPWM应用中,我们将电容中点接地(即作为零电位参考点),所以,三角波幅值\(V_{sm} = Vdc/2\).

所以,(三相)基波幅值\(V_m = m_m\cdot V_{sm} = m_m\cdot Vdc/2 = 0.7\cdot 700/2 = 245V\),与FFT分析得到的A相基波幅值246V接近.

基于三次谐波注入的SPWM

基本概念

三次谐波注入 SPWM(THI-SPWM):在原本正弦三相调制波上,叠加幅值相等、相位完全相同的 3 倍频零序三次谐波(标准正弦波),把正弦波改成马鞍形平顶波再和三角载波比较做 SPWM 调制.

调制波:

\[\tag{31} \begin{cases} V_{\mathrm{am}} = V_{\mathrm{m1}} \sin \omega t + V_{\mathrm{m3}} \sin 3\omega t \\ V_{\mathrm{bm}} = V_{\mathrm{m1}} \sin\left(\omega t - \dfrac{2}{3}\pi\right) + V_{\mathrm{m3}} \sin 3\omega t \\ V_{\mathrm{cm}} = V_{\mathrm{m1}} \sin\left(\omega t + \dfrac{2}{3}\pi\right) + V_{\mathrm{m3}} \sin 3\omega t \end{cases} \]

\(\omega t = \dfrac{2k+1}{3},k=1,3,5,...\)时,\(sin3\omega t=0\),三次谐波分量对调制波不会产生影响.

注意:调制波注入三次谐波后的平顶波 = 基波 + 三次谐波.

核心目的:提高直流母线电压利用率(对应相电压利用率),把常规 SPWM 最大基波相电压幅值从 \(0.5V_{dc}\cdot m_m\) 提升到 3次谐波注入的 \(0.577Vdc\cdot m_m\)(即\(V_{dc}/\sqrt{3}\cdot m_m\)),和 SVPWM 电压利用率持平.

常规线电压利用率0.866(\(\frac{\sqrt 3}{2}\)):

常规 SPWM 最大线电压幅值:$U_{L(max)} = \sqrt 3\times 0.5V_{dc} = \frac{\sqrt 3}{2}V_{dc} ≈ 0.866V_{dc} $;

3 次谐波注入 SPWM 最大线电压幅值:\(V_{dc}\),线电压利用率 = 1.0.

如何获取调制波最大幅值(极值处取得最值)?

以A相电压为例,简要推导.

根据费马定理(微分中值定理),如果\(f(x)\)在点\(x_0\)处取得极值,则\(f'(x)=0\).

而连续可导函数最值,只能在极值处取得. 因此,我们先求极值:

\[\tag{32} \frac{\mathrm{d}V_{am}}{\mathrm{d}\omega t} = V_{m1} \cos\omega t + 3V_{m3} \cos 3\omega t = 0 \]

该方程有2个未知数:\(\omega t\) 极值点位置,\(V_{m3}\)三次谐波幅值. 一个方程2个未知数,通常有无数解.

我们先假设峰值出现在\(\omega t = \frac{π}{3}\)(人为选定),代入(32),求出,

\[\tag{33} f'(x)= \frac{\mathrm{d}V_{am}}{\mathrm{d}\omega t} = \frac{1}{2}V_{m1}-3V_{m3}=0\\ \therefore V_{m3}=\frac{1}{6}V_{m1} \]

证明取得最大幅值思路:需要验证2点:
1)\(\omega t = \frac{π}{3}\) 处,函数取得最大值
2)验证不削波,即相电压峰值≤直流母线限制(Udc/2)

证明过程略.

为了获得最大调制深度,在\(V_{m3}=\frac{1}{6}V_{m1},\omega t = π/3\)条件下,我们可以将\(V_{am}\)拉到母线允许的最大值Vdc/2,

\[\tag{34} V_{am}= V_{m1}sin\omega t + \frac{1}{6}V_{m1}sin3\omega t=\frac{1}{2}U_{dc} \]

可求出,

\[\tag{35} V_{m1}=\frac{1}{\sqrt 3}U_{dc} \]

调制波电压幅值从\(\frac{1}{2}Udc\)增大到了\(\frac{1}{\sqrt 3}Udc\),电压幅值增加了 15.48% .

注意:三次谐波注入本身,并不会改变基波幅值;但是,为了充分利用母线,提高调制深度,通常在三次谐波注入后,会人为提高基波幅值. 这看起来就像是调制波幅值变大了.

如何理解调制波幅值变大了?

\(v=U_msin\theta + \frac{U_m}{6}sin3\theta\),基波峰值就是\(U_m\).

不加谐波时,正弦峰值 = 基波幅值,基波最大只能拉到Vdc/2(因为有正负,正负峰值相减 ≤ Vdc);
注入三次谐波后,同等\(U_m\)合成马鞍波峰值压低至\(\frac{\sqrt 3}{2}U_m\),这样就有了电压余量;
于是,我们可以人为放大基波系数到\(U_{m2}\),让马鞍波峰值刚好触碰到母线上限\(U_{dc}/2\),从而最终基波幅值常规 SPWM 极限值大 15.47% ,调制深度更高、输出电压 / 转矩更大.

仿真模型

除了以下仿真设置不同,其他同常规SPWM仿真模型:

注入了3次谐波,频率是基波三倍,幅值\(V_{m1}/6\),调制比\(m_m = 0.7\cdot 1.1548 ≈ 0.7\cdot \frac{2}{\sqrt 3}\)

  • 仿真模型

只有SPWM模块不同:

img

  • 仿真结果

A相电压调制波计算结果:

img

其中,\(V_{m1}\) 基波电压,\(V_{m3}\) 注入的3次谐波,\(V_{m1}+V_{m3}\) 调制波.

注意调制波与实际相电压的区别:
1)相电压调制波:PWM 之前的参考指令波形(软件给定、虚拟值)
2)实际相电压:逆变器输出、加在电机绕组两端真实电压(硬件 PWM 脉冲)

相电压\(U_a\)的计算结果:

img

相电压\(U_a\)的FFT分析:

img

基波电压幅值为282.9V,可以看出,3次谐波注入的基波电压幅值 比常规SPWM的 增加了 \((282.9 - 246) / 246 = 15\%\).

基于零序分量注入的实现

为了提高直流电压的利用率,也可以考虑在调制波信号中注入零序分量. 调制波表达式:

\[\tag{36} \begin{cases} V_{am} = V_{m1} \sin\omega t + V_0 \\ V_{bm} = V_{m1} \sin\left(\omega t - \dfrac{2}{3}\pi\right) + V_0 \\ V_{cm} = V_{m1} \sin\left(\omega t + \dfrac{2}{3}\pi\right) + V_0 \end{cases} \]

其中,\(V_0\) 是零序分量,范围:\(-1-V_{min}\le V_0\le 1-V_{max}\)
其中,\(V_{max}=max\{V_{am},V_{bm},V_{cm}\}, V_{min}=min\{V_{am},V_{bm},V_{cm}\}\),零序信号在此区间内任意选取即可.

注:

  1. 取值范围是标幺化(Per Unit)后的表达式,标幺化之后基波幅值[-1, 1];标幺化之前,基波幅值[-Udc/2, Udc/2](未注入三次谐波)或者[-Udc/√3, Udc/√3](注入三次谐波).
  2. 前面 MBD笔记:三相PMSM数学模型(一) 讲过,零序分量是指三相电压 / 电流中幅值相等、相位完全相同的部分.

下面是\(V_0\)几种典型取值.

均值零序信号

取极值的均值:

\[\tag{38} V_0=-\frac{1}{2}(V_{max}+V_{min}) \]

其中,\(V_{max}=max\{V_a,V_b,_Vc\}\)三相瞬时电压最大值,\(V_{min}=min\{V_a,V_b,_Vc\}\)三相瞬时电压最小值.

特点:原来的正弦信号中由于注入了一定的高次谐波信号,波顶被削平,因此提高了线性调节范围.

  • 仿真模型

调制比:0.7*1.1548.
其他配置同基于三次谐波注入的SPWM.

在基于三次谐波注入的模型基础上,修改SPWM子模块如下:

img

  • 仿真结果

A相基波电压(原始信号)\(V_{m1}\),注入的零序信号\(V_0\),合成参考信号(调制波)\(V_{m1}+V_0\)计算结果:

img

可以看出,原来的正弦信号(黄线),由于注入高次谐波信号(蓝线,均值零序信号),其波顶被削平了(红线).

极值零序信号

取极大值或者极小值作为零序信号.

极大值:

\[\tag{39} V_0=1-V_{max} \]

极小值:

\[\tag{40} V_0=-1-V_{min} \]

特点:调制波每个周期在波峰或波谷有一段时间状态不变,因此可减小开关损耗,但正负半周波形不对称.

  • 仿真模型

基于三次谐波注入,修改SPWM模块,采用极大值零序信号注入,模型如下:

img

  • 仿真结果

A相调制波电压计算结果:

img

可以看出,由于注入高次谐波,每个周期在波峰有一段区间状态保持不变,且正负半周波形不对称,称为“平顶波”.

交替零序信号

如果某一瞬间\(V_0\)极大值的幅值大于极小值的幅值,那么取极大值作为零序信号,否则,取极小值作为零序信号.

i.e. 零序信号取3相正弦信号瞬时值幅值最大的那个.

\[\tag{41} V_0 = \begin{cases} 1 - V_{\max}, & |V_{\max}| \geqslant |V_{\min}| \\ -1 - V_{\min}, & |V_{\max}| \leqslant |V_{\min}| \end{cases} \]

  • 仿真模型

在基于三次谐波注入的模型基础上,修改SPWM子模块如下:

img

计算交替零序信号\(V_0\)的matlab fcn实现参考公式(41),内容如下:

function V0 = fcn(Vmax, Vmin)

if (abs(Vmax) >= abs(Vmin))
    V0 = 1-Vmax;
else
    V0 = -1-Vmin;
end
  • 仿真结果

img
调制波每个周期在波峰和波谷处各有\(π/10\)状态保持不变,但正负半周波形保持对称,同时也保留了基于均值信号方法所具有的调制范围大的优点.

参考

袁雷. 北京航天航空大学出版社. 现代永磁同步电机控制原理及MAIL_A_Q仿真

posted @ 2026-06-16 21:01  明明1109  阅读(53)  评论(0)    收藏  举报