为什么要恢复相电压
永磁同步电机控制算法中,相电压是一个很关键的状态量。目前的方案中有以下几种方式处理相电压。
方式1,使用给定电压代替反馈电压。该方式得到相电压最为简单,同时计算量最小。可以省掉3路adc资源占用。但是因为死区及逆变器的非线性影响,给定电压与真实的相电压之间有一个无法精准计算的误差。并且在同步机低速工作时,这个误差占比很大,会严重影响控制性能。
方式2,电路上添加截至频率接近开关频率的rc滤波,通过adc采集相电压信号。该方法能够获取更真实的电压信号,增加的计算量也不大。但是采样信号中依然包含一定成分的开关噪声,对控制的改善作用有限。
方式3,在电路上添加截至频率远小于开关频率的rc滤波,通过adc采集相电压信号,然后通过软件补偿低通滤波带来的相位滞后与幅值衰减。该方法增加较大的计算量。但是在对性能要求高的控制器设计时,该方法能够有效提高相电压信号质量。Ti的电机控制方案insta spin即采用了这一方案。
本文着重讨论方式3所需用到的相电压补偿技术。
通过幅频特性恢复信号
考虑rc滤波器的传递函数
H
(
s
)
=
ω
c
s
+
ω
c
H(s) = \frac{\omega_c}{s + \omega_c}
H(s)=s+ωcωc
其中
ω
c
=
1
R
C
\omega_c = \frac{1}{RC}
ωc=RC1;
根据传递函数计算幅频、相频特性。可以得到在不同频率下信号的幅度衰减程度以及相位的滞后程度,进而进行补偿
∣
Y
(
j
ω
)
X
(
j
ω
)
∣
=
R
e
l
(
ω
c
j
ω
+
ω
c
)
2
+
I
m
g
(
ω
c
j
ω
+
ω
c
)
2
=
(
ω
c
2
ω
c
2
+
ω
2
)
2
+
(
−
ω
c
ω
ω
c
2
+
ω
2
)
2
\left\vert{\frac{Y(j\omega)}{X(j\omega)}}\right\vert = \sqrt{Rel \left(\frac{\omega_c}{j\omega + \omega_c} \right)^2 + Img\left(\frac{\omega_c}{j\omega + \omega_c} \right)^2} = \sqrt{\left(\frac{\omega_c^2}{\omega_c^2 + \omega^2}\right)^2 + \left(\frac{-\omega_c\omega}{\omega_c^2 + \omega^2}\right)^2 }
∣∣∣∣X(jω)Y(jω)∣∣∣∣=Rel(jω+ωcωc)2+Img(jω+ωcωc)2=(ωc2+ω2ωc2)2+(ωc2+ω2−ωcω)2
所以,滤波前信号与滤波后信号幅度之比为:
∣
X
(
j
ω
)
∣
∣
Y
(
j
ω
)
∣
=
1
+
ω
2
ω
c
2
\frac{\left\vert X(j\omega)\right\vert}{\left\vert Y(j\omega) \right\vert}={\sqrt{1 + \omega^2\omega_c^2}}
∣Y(jω)∣∣X(jω)∣=1+ω2ωc2
类似的,滤波后信号与滤波前信号的相位偏差为:
∠
(
Y
(
j
ω
)
,
X
(
j
ω
)
)
=
a
t
a
n
(
−
ω
ω
c
)
\angle{(Y(j\omega),X(j\omega))} = atan(-\frac{\omega}{\omega_c})
∠(Y(jω),X(jω))=atan(−ωcω)
对采样到的三相电压信号进行clark变换,可以得到正交的电压信号,容易计算相电压幅值,通过arctan(),容易计算相电压相位。根据输出信号频率,可以计算出当前频率的幅值衰减和相位滞后的多少,进而实时补偿。
定义相电压幅值
∣
Y
(
j
ω
)
∣
=
∣
v
s
∣
=
v
α
2
+
v
β
2
{\left\vert Y(j\omega)\right\vert} = |v_s| = \sqrt{v_{\alpha}^2 + v_{\beta}^2}
∣Y(jω)∣=∣vs∣=vα2+vβ2
故真实的相电压幅值
∣
X
(
j
ω
)
∣
=
v
s
1
+
ω
2
ω
c
2
\left\vert X(j\omega)\right\vert=v_s{\sqrt{1 + \omega^2\omega_c^2}}
∣X(jω)∣=vs1+ω2ωc2
真实的相电压相位:
ϕ
v
s
=
a
t
a
n
2
(
v
α
,
v
β
)
−
a
t
a
n
(
−
ω
ω
c
)
\phi_{vs} = atan2(v_{\alpha},v_{\beta}) - atan(-\frac{\omega}{\omega_c})
ϕvs=atan2(vα,vβ)−atan(−ωcω)
至此,可以得到经过补偿的
v
α
,
v
β
v_{\alpha},v_{\beta}
vα,vβ
v
α
=
∣
v
s
∣
s
i
n
(
ϕ
v
s
)
v_{\alpha} = |v_s| sin(\phi_{vs})
vα=∣vs∣sin(ϕvs)
v
β
=
∣
v
s
∣
c
o
s
(
ϕ
v
s
)
v_{\beta} = |v_s| cos(\phi_{vs})
vβ=∣vs∣cos(ϕvs)
搭建模型仿真
恢复后的信号能够较好的跟踪原始信号
该方法虽然可以实时的进行相电压恢复,但是改方法需要准确的知道信号的幅度和相位,对于某些信号,计算幅度和相位并不方便。除此之外,该方法还存在计算量大的缺点。
对此,本文描述一种通过传递函数反算原始信号的方法。
通过差分方程恢复信号
低通滤波器传递函数已知。为方便在dsp计算,通过后向差分转化为离散传递函数
H
(
z
)
=
Y
(
z
)
X
(
z
)
=
T
s
⋅
z
−
1
(
T
s
+
τ
)
−
T
s
⋅
z
−
1
H(z)=\frac{Y(z)}{X(z)} =\frac{Ts \cdot z^{-1} }{(Ts + \tau) - Ts \cdot z^{-1}}
H(z)=X(z)Y(z)=(Ts+τ)−Ts⋅z−1Ts⋅z−1
其中
τ
=
1
ω
c
\tau = \frac{1}{\omega_c}
τ=ωc1
转化为差分方程有
(
τ
+
T
s
)
Y
(
n
)
−
τ
Y
(
n
−
1
)
=
T
s
X
(
n
−
1
)
(\tau + Ts)Y(n) - \tau Y(n-1) = TsX(n-1)
(τ+Ts)Y(n)−τY(n−1)=TsX(n−1)
可得
X
(
n
−
1
)
=
(
τ
+
T
s
)
Y
(
n
)
−
τ
Y
(
n
−
1
)
T
s
X(n-1) = \frac{(\tau + Ts)Y(n) - \tau Y(n-1) }{Ts}
X(n−1)=Ts(τ+Ts)Y(n)−τY(n−1)
搭建模型仿真
其中蓝色信号为恢复后的信号,黄色信号为原始信号,红色信号为滤波后的信号。可以得到,恢复后的信号较好的跟随了原始信号