龙伯格观测器
所谓观测器就是根据系统的可测量输出信号,去估计系统不可直接测量的状态信号。本例中利用输入
u
α
、
u
β
u_α、u_β
uα、uβ,输出
i
α
、
i
β
i_α、i_β
iα、iβ去观测得到
e
α
⃗
^
、
e
β
⃗
^
\hat{\vec{e_α}}、\hat{\vec{e_β}}
eα^、eβ^,然后将
e
α
⃗
^
、
e
β
⃗
^
\hat{\vec{e_α}}、\hat{\vec{e_β}}
eα^、eβ^作为锁相环的输入去预测角度θ和速度ω
在系统可观(PBH秩判据)的情况下我们可以通过设计观测矩阵H使
e
(
A
+
H
C
)
(
t
−
t
0
)
(
x
0
⃗
^
−
x
0
⃗
)
e^{(A+HC)(t-t_0)}(\hat{\vec{x_0}}-\vec{x_0})
e(A+HC)(t−t0)(x0^−x0)收敛
加入观测器后系统框图如下
连续时间状态方程
电机模型
α-β坐标系又称定子坐标系,即将电机定子的三相绕组投射到α-β坐标轴上,方便表示和后续处理
{ e α = k e w e c o s ( w e t ) e β = k e w e s i n ( w e t ) \left\{ \begin{array}{ll} e_α = k_e w_e cos(w_et) \\ e_β = k_e w_e sin(w_et) \end{array} \right. {eα=kewecos(wet)eβ=kewesin(wet) ①
{
d
i
α
d
t
=
−
r
L
S
i
α
−
1
L
S
e
α
+
1
L
S
u
α
d
i
β
d
t
=
−
r
L
S
i
β
−
1
L
S
e
β
+
1
L
S
u
β
d
e
α
d
t
=
−
w
e
e
β
d
e
β
d
t
=
w
e
e
α
\left\{ \begin{array}{ll} \frac{di_α}{dt} = -\frac{r}{L_S}i_α -\frac{1}{L_S}e_α + \frac{1}{L_S}u_α \\ \\ \frac{di_β}{dt} = -\frac{r}{L_S}i_β -\frac{1}{L_S}e_β + \frac{1}{L_S}u_β \\ \\ \frac{de_α}{dt} = -w_e e_β \\\\ \frac{de_β}{dt} = w_e e_α \end{array} \right.
⎩
⎨
⎧dtdiα=−LSriα−LS1eα+LS1uαdtdiβ=−LSriβ−LS1eβ+LS1uβdtdeα=−weeβdtdeβ=weeα ②
系统的输入输出和状态向量按照如下进行选取,也可选取状态向量为 x ⃗ = [ i α i β w θ ] T \vec{x} = \begin{bmatrix}i_α&i_β&w&θ\end{bmatrix}^T x=[iαiβwθ]T参考,但是会引入非线性耦合
{ u ⃗ = [ u α u β ] T x ⃗ = [ i α i β e α e β ] T x ⃗ ˙ = [ d i α d t i β d t e α d t e β d t ] T y ⃗ = [ u α u β ] T \left\{ \begin{array}{ll} \vec{u} = \begin{bmatrix}u_α&u_β\end{bmatrix}^T \\\\ \vec{x} = \begin{bmatrix}i_α&i_β&e_α&e_β\end{bmatrix}^T \\\\ \dot{\vec{x}} = \begin{bmatrix}\frac{di_α}{dt}&\frac{i_β}{dt}&\frac{e_α}{dt}&\frac{e_β}{dt}\end{bmatrix}^T \\\\ \vec{y} = \begin{bmatrix}u_α&u_β\end{bmatrix}^T \end{array} \right. ⎩ ⎨ ⎧u=[uαuβ]Tx=[iαiβeαeβ]Tx˙=[dtdiαdtiβdteαdteβ]Ty=[uαuβ]T
{ x ⃗ ˙ = A x ⃗ + B u ⃗ y ⃗ = C x ⃗ \left\{ \begin{array}{ll} \dot{\vec{x}} = A\vec{x} + B \vec{u} \\ \vec{y} = C\vec{x} \end{array} \right. {x˙=Ax+Buy=Cx
其中
A
=
[
−
r
L
S
0
−
1
L
S
0
0
−
r
L
S
0
−
1
L
S
0
0
0
−
w
e
0
0
w
e
0
]
A = \begin{bmatrix} -\frac{r}{L_S}&0&-\frac{1}{L_S}&0 \\ 0&-\frac{r}{L_S}&0&-\frac{1}{L_S} \\ 0&0&0&-w_e \\ 0&0&w_e&0\\ \end{bmatrix}
A=
−LSr0000−LSr00−LS100we0−LS1−we0
B
=
[
1
L
S
0
0
1
L
S
0
0
0
0
]
B = \begin{bmatrix} \frac{1}{L_S}&0 \\ 0&\frac{1}{L_S} \\ 0&0 \\ 0&0\\ \end{bmatrix}
B=
LS10000LS100
C
=
[
1
0
0
0
0
1
0
0
]
C = \begin{bmatrix} 1&0&0&0 \\ 0&1&0&0 \end{bmatrix}
C=[10010000]
离散化
{ i α [ k ] = ( 1 − r T S L S ) i α [ k − 1 ] − T S L S e α [ k − 1 ] + T S L S u α [ k − 1 ] i β [ k ] = ( 1 − r T S L S ) i β [ k − 1 ] − T S L S e β [ k − 1 ] + T S L S u β [ k − 1 ] e α [ k ] = e α [ k − 1 ] − w e e β [ k − 1 ] T s e β [ k ] = e β [ k − 1 ] + w e e α [ k − 1 ] T s \left\{ \begin{array}{ll} i_α[k] = (1-\frac{rT_S}{L_S})i_α[k-1] -\frac{T_S}{L_S}e_α[k-1] + \frac{T_S}{L_S}u_α[k-1] \\\\ i_β[k] = (1-\frac{rT_S}{L_S})i_β[k-1] -\frac{T_S}{L_S}e_β[k-1] + \frac{T_S}{L_S}u_β[k-1] \\ \\ e_α[k] = e_α[k-1] - w_e e_β[k-1]T_s \\\\ e_β[k] = e_β[k-1] + w_e e_α[k-1]T_s \end{array} \right. ⎩ ⎨ ⎧iα[k]=(1−LSrTS)iα[k−1]−LSTSeα[k−1]+LSTSuα[k−1]iβ[k]=(1−LSrTS)iβ[k−1]−LSTSeβ[k−1]+LSTSuβ[k−1]eα[k]=eα[k−1]−weeβ[k−1]Tseβ[k]=eβ[k−1]+weeα[k−1]Ts③
为方便计算令转速ω=0,于是得到如下模型( i α 、 i β i_α、i_β iα、iβ形式相同)
{ i α [ k ] = ( 1 − r T S L S ) i α [ k − 1 ] − T S L S e α [ k − 1 ] + T S L S u α [ k − 1 ] e α [ k ] = e α [ k − 1 ] \left\{ \begin{array}{ll} i_α[k] = (1-\frac{rT_S}{L_S})i_α[k-1] -\frac{T_S}{L_S}e_α[k-1] + \frac{T_S}{L_S}u_α[k-1] \\\\ e_α[k] = e_α[k-1] \\ \end{array} \right. ⎩ ⎨ ⎧iα[k]=(1−LSrTS)iα[k−1]−LSTSeα[k−1]+LSTSuα[k−1]eα[k]=eα[k−1]④
简化后的状态矩阵:
A r e d u c e d = [ 1 − r T S L S − T S L S 0 1 ] A_{reduced} = \begin{bmatrix} 1-\frac{rT_S}{L_S}&-\frac{T_S}{L_S} \\ 0&1 \\ \end{bmatrix} Areduced=[1−LSrTS0−LSTS1]
此时由 ∣ λ I − A ∣ \begin{vmatrix}λI-A\ \end{vmatrix} λI−A =0得特征值
{ λ 1 = 1 − r T s L s λ 2 = 1 \left\{ \begin{array}{ll} λ_1 = 1-\frac{rTs}{Ls} \\ λ_2 = 1 \end{array} \right. {λ1=1−LsrTsλ2=1
观测器重构状态向量
x
⃗
^
˙
=
A
x
⃗
^
+
B
u
⃗
+
H
(
y
⃗
^
−
y
⃗
)
\dot{\hat{\vec{x}}} = A\hat{\vec{x}} + B \vec{u} + H(\hat{\vec{y}} - \vec{y})
x^˙=Ax^+Bu+H(y^−y)
x
⃗
^
˙
\dot{\hat{\vec{x}}}
x^˙状态量分别是
i
α
⃗
^
、
i
β
⃗
^
、
e
α
⃗
^
、
e
α
⃗
^
\hat{\vec{i_{α}}}、\hat{\vec{i_{β}}}、\hat{\vec{e_{α}}}、\hat{\vec{e_{α}}}
iα^、iβ^、eα^、eα^,H矩阵应该对电流
i
α
⃗
^
、
i
β
⃗
^
\hat{\vec{i_{α}}}、\hat{\vec{i_{β}}}
iα^、iβ^的影响相同[欧拉电子],对反电动势
e
α
⃗
^
、
e
α
⃗
^
\hat{\vec{e_{α}}}、\hat{\vec{e_{α}}}
eα^、eα^的影响相同,于是设H矩阵为:
H = [ h 1 0 0 h 1 h 2 0 0 h 2 ] H= \begin{bmatrix} h_1&0 \\ 0&h_1 \\ h_2&0 \\ 0&h_2 \\ \end{bmatrix} H= h10h200h10h2
令 w = 0 w=0 w=0,有
{ i α ^ [ k ] = ( 1 − r T S L S + h 1 T S ) i α ^ [ k − 1 ] − T S L S e α [ k − 1 ] + T S L S u α [ k − 1 ] + h 1 T S ( − i α [ k − 1 ] ) e α ^ [ k ] = e α [ k − 1 ] + h 2 T S ( i α ^ [ k − 1 ] − i α [ k − 1 ] ) \left\{ \begin{array}{ll} \hat{i_α}[k] = (1-\frac{rT_S}{L_S}+h_1T_S)\hat{i_α}[k-1] -\frac{T_S}{L_S}e_α[k-1] + \frac{T_S}{L_S}u_α[k-1] +h_1T_S(-i_α[k-1]) \\\\ \hat{e_α}[k] = e_α[k-1] + h_2T_S(\hat{i_α}[k-1] - i_α[k-1]) \ \end{array} \right. ⎩ ⎨ ⎧iα^[k]=(1−LSrTS+h1TS)iα^[k−1]−LSTSeα[k−1]+LSTSuα[k−1]+h1TS(−iα[k−1])eα^[k]=eα[k−1]+h2TS(iα^[k−1]−iα[k−1])
A r e d u c e d − o b s = [ 1 − r T S L S + h 1 T S − T S L S h 2 T S 1 ] A_{reduced-obs} = \begin{bmatrix} 1-\frac{rT_S}{L_S}+h_1T_S&-\frac{T_S}{L_S} \\ h_2T_S&1 \\ \end{bmatrix} Areduced−obs=[1−LSrTS+h1TSh2TS−LSTS1]
{ h 1 = λ 1 − o b s + λ 2 − o b s − 2 T S + r L S h 2 = L S ( 1 − λ 1 − o b s − λ 2 − o b s + λ 2 − o b s λ 1 − o b s ) T S 2 \left\{ \begin{array}{ll} h_1 = \frac{λ_{1-obs}+λ_{2-obs}-2}{T_S}+\frac{r}{L_S} \\\\ h_2 = \frac{L_S(1 - λ_{1-obs} - λ_{2-obs}+ λ_{2-obs} λ_{1-obs})}{T_S^2} \\ \end{array} \right. ⎩ ⎨ ⎧h1=TSλ1−obs+λ2−obs−2+LSrh2=TS2LS(1−λ1−obs−λ2−obs+λ2−obsλ1−obs)
其中ST给出的 λ 1 − o b s 、 λ 2 − o b s λ_{1-obs}、λ_{2-obs} λ1−obs、λ2−obs取值方法如下
{ λ 1 − o b s = λ 1 k λ 2 − o b s = λ 2 k \left\{ \begin{array}{ll} λ_{1-obs} = \frac{λ_1}{k} \\\\ λ_{2-obs} = \frac{λ_2}{k} \\ \end{array} \right. ⎩ ⎨ ⎧λ1−obs=kλ1λ2−obs=kλ2, k > 1 k>1 k>1
锁相环PLL
锁相环就是一些种利用外部输入的参考信号控制环路内部振荡信号的频率和相位的反馈电路,在配置单片机时钟时就利用了PLL的特性对时钟进行倍频。在这里相当于一个简单的反馈电路
输入为q轴真实角度θq,输出为观测值θq-hat
由泰勒公式及eα、eβ的表达式可知在
Δ
θ
≈
0
Δθ \approx 0
Δθ≈0时
θ
q
^
−
θ
q
≈
e
β
c
o
s
(
θ
q
^
)
−
e
α
s
i
n
(
θ
q
^
)
\hat{θ_q} - θ_q \approx e_βcos(\hat{θ_q}) - e_αsin(\hat{θ_q})
θq^−θq≈eβcos(θq^)−eαsin(θq^),于是我们可以将PLL的
θ
q
^
−
θ
q
\hat{θ_q} - θ_q
θq^−θq替换为
e
β
c
o
s
(
θ
q
^
)
−
e
α
s
i
n
(
θ
q
^
)
e_βcos(\hat{θ_q}) - e_αsin(\hat{θ_q})
eβcos(θq^)−eαsin(θq^),锁相环的输入变为龙伯格观测器的状态
e
α
⃗
^
、
e
β
⃗
^
\hat{\vec{e_α}}、\hat{\vec{e_β}}
eα^、eβ^,输出为
w
^
、
θ
^
\hat{w}、\hat{θ}
w^、θ^,龙伯格观测器与锁相环一同完成对电机转子的位置估计
{
e
α
=
k
e
w
e
c
o
s
(
w
e
t
)
e
β
=
k
e
w
e
s
i
n
(
w
e
t
)
\left\{ \begin{array}{ll} e_α = k_e w_e cos(w_et) \\ e_β = k_e w_e sin(w_et) \end{array} \right.
{eα=kewecos(wet)eβ=kewesin(wet)
MATLAB仿真
仿真模型可在微信公众号获取
观测器输入为测量值iα、iβ和控制输入uα、uβ,均可测量或已知,输入ω为PLL的输出,内部结构根据式③进行搭建
初始化参数设置:
取k = 4,计算得
{
h
1
=
−
14678
h
2
=
79875
\left\{ \begin{array}{ll} h_1 = -14678 \\ h_2 = 79875 \\ \end{array} \right.
{h1=−14678h2=79875
simulink空白处右键——>模型属性,点击InitFcn,输入初始化参数
角度θ和速度ω都得到了不错的跟踪
注:电流环模型来自于欧拉电子,注意其中的一点小问题
- T1和T2没有同步更新
% if T1+T2 > Tpwm
% T1 = T1/(T1+T2)*Tpwm;
% T2 = T2/(T1+T2)*Tpwm;
% else
% T1 = T1;
% T2 = T2;
% end
% 以上代码有问题,T1更新后会影响T2的计算
T = T1 + T2;
if T > Tpwm
T1 = T1/T*Tpwm;
T2 = T2/T*Tpwm;
else
end
- 在应用到单片机时将下列代码进行更改
% ta = (Tpwm-(T1+T2))/4.0;
% tb = ta+T1/2;
% tc = tb+T2/2;
ta = (Tpwm-(T1+T2))/2.0;
tb = ta+T1;
tc = tb+T2;
微信公众号:BOBO的实验小课堂
参考:
[1] ST. 相电流检测以及电机位置,速度获取. https://www.stmcu.com.cn/ecosystem/app/Motor-control
[2] Euler电子