Solution 3.1
直接使用正弦相电压参考的 SPWM 很自然,因为它等价于“每相各跟一条正弦”。但它默认三相命令始终以零公共偏置摆放,没有利用三相三线系统那一维零序自由度。结果是:虽然目标线电压还没碰到真正极限,三相中的某一相命令却可能先碰到母线边界,导致可用幅值提前受限。也就是说,SPWM 没有把三相命令在 bus window 中摆到最省空间的位置。
若三相相电压命令是纯正弦:
$$u_a^*=V_m\cos\omega t,\quad
u_b^*=V_m\cos\!\left(\omega t-\frac{2\pi}{3}\right),\quad
u_c^*=V_m\cos\!\left(\omega t+\frac{2\pi}{3}\right),$$
为了保证每相都不超过相对母线中点的极限,必须有 $V_m\le V_{dc}/2$。而线电压峰值满足
$$u_{ab,\text{pk}}=\sqrt{3}V_m\le \frac{\sqrt{3}}{2}V_{dc}\approx0.866V_{dc}.$$
这就是 SPWM 利用率上限的物理意义:在不做零序重排时,三相相电压的峰值只能做到 $V_{dc}/2$,对应线电压峰值只能做到 $0.866V_{dc}$。它低于线电压的理论极限 $V_{dc}$,因为桥臂两端实际上允许的最大相间差值是一个相接上母线、另一相接下母线时的整条 dc bus。
教材用
$$\eta_{Vdc}=\frac{\max(u_{an},u_{bn},u_{cn})-\min(u_{an},u_{bn},u_{cn})}{2}$$
来可视化利用率,是因为在三相三线系统里,公共偏置可以任意平移三相命令,但
不能改变三相彼此之间的距离。因此“同一时刻最大值与最小值的差”就是这组三相命令必须占用的最小窗口宽度;其一半就是以零为中心时需要的半窗口高度。换句话说,真正决定是否会碰 bus limit 的,不是某一相本身有多大,而是三相命令当下的总 span 有多大。
Solution 3.2
可按教材图示这样理解:black dots 表示某一时刻三相原始相电压命令的三个取值;red dots 强调其中真正限制母线利用率的边界点,也就是当前的最大值与最小值。把较低的 red dot 压到 0 V,本质上就是对三相同时加同一个偏置,把整组三相命令往上平移,从而消除下边界的浪费空间。若希望同时均匀利用上下两个边界,则应把最大值与最小值围绕 0 对称摆放。设
$$M=\max(u_{an},u_{bn},u_{cn}),\qquad m=\min(u_{an},u_{bn},u_{cn}),$$
则选择注入后新的中点为 0,要求
$$\frac{(M+u_{ZSM})+(m+u_{ZSM})}{2}=0,$$
解得
$$u_{ZSM}=-\frac{M+m}{2}=-u_{\text{mid}},\qquad
u_{\text{mid}}=\frac{M+m}{2}.$$
它的几何意义非常直接:
沿公共偏置方向整体平移三相命令,使最小包络区间的中点落到 0 上,从而在不改变 span 的前提下,把 span 尽量居中地塞进 bus window。
零序注入为什么改变相对中性点波形、却不改变线电压,可从两层解释。
$$\tilde u_a=u_a+u_0,\qquad \tilde u_b=u_b+u_0,\qquad \tilde u_c=u_c+u_0.$$
公式证明:
$$\tilde u_{ab}=\tilde u_a-\tilde u_b=(u_a+u_0)-(u_b+u_0)=u_{ab},$$
$$\tilde u_{bc}=u_{bc},\qquad \tilde u_{ca}=u_{ca}.$$
所以所有线电压严格不变。物理解释是:三相三线电机绕组真正承受的是端子之间的电压差,而不是每个端子相对地的绝对电位。给三相同时加同一个公共偏置,相当于整个三相电势整体抬高或压低,中性点会一起漂移;绕组两端的差值没有变,因此理想情况下电流、转矩和基波线电压目标都不变。
SPWM 与 SVPWM 的幅值比可以这样推:
- SPWM 时,相电压峰值上限是 $V_{SPWM}=V_{dc}/2$。
- SVPWM 时,通过零序重排后,相电压峰值上限可增至 $V_{SVPWM}=V_{dc}/\sqrt{3}$。
因而
$$\frac{V_{SVPWM}}{V_{SPWM}}=
\frac{V_{dc}/\sqrt{3}}{V_{dc}/2}
=\frac{2}{\sqrt{3}}
\approx1.1547.$$
这表示相对于 SPWM,SVPWM 的可用电压幅值提高约 $15.47\%$。一个从 $u^*_{\alpha\beta}$ 到 $S_a^*,S_b^*,S_c^*$ 的实现链可以写成:
1. inverse Clarke:
u_a^* = u_alpha^*
u_b^* = -0.5 u_alpha^* + (sqrt(3)/2) u_beta^*
u_c^* = -0.5 u_alpha^* - (sqrt(3)/2) u_beta^*
2. phase-command extrema:
M = max(u_a^*, u_b^*, u_c^*)
m = min(u_a^*, u_b^*, u_c^*)
3. zero-sequence injection:
u_ZSM = -(M + m)/2
u'_x = u_x^* + u_ZSM
4. dc-bus normalization:
S_x^* = u'_x / V_dc + 0.5
5. duty saturation:
S_x = sat_[0,1](S_x^*)
(工程上也可 sat 到 [S_min, S_max])
若控制器上层先给的是 $u_{dq}^*$,那就再往前多一步 inverse Park,把 $u_{dq}^*$ 变成 $u_{\alpha\beta}^*$ 后,再进入上面的五步链条。