电机FOC无感位置估计(一):龙伯格观测器

龙伯格观测器

所谓观测器就是根据系统的可测量输出信号,去估计系统不可直接测量的状态信号。本例中利用输入 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)(tt0)(x0 ^x0 )收敛
image.png

加入观测器后系统框图如下

image.png

连续时间状态方程

电机模型
image.png
α-β坐标系又称定子坐标系,即将电机定子的三相绕组投射到α-β坐标轴上,方便表示和后续处理

{ 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 +Bu y =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= LSr0000LSr00LS100we0LS1we0
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]=(1LSrTS)iα[k1]LSTSeα[k1]+LSTSuα[k1]iβ[k]=(1LSrTS)iβ[k1]LSTSeβ[k1]+LSTSuβ[k1]eα[k]=eα[k1]weeβ[k1]Tseβ[k]=eβ[k1]+weeα[k1]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]=(1LSrTS)iα[k1]LSTSeα[k1]+LSTSuα[k1]eα[k]=eα[k1]

简化后的状态矩阵:

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=[1LSrTS0LSTS1]

此时由 ∣ λ I − A   ∣ \begin{vmatrix}λI-A\ \end{vmatrix} λIA  =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=1LsrTsλ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]=(1LSrTS+h1TS)iα^[k1]LSTSeα[k1]+LSTSuα[k1]+h1TS(iα[k1])eα^[k]=eα[k1]+h2TS(iα^[k1]iα[k1]) 

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} Areducedobs=[1LSrTS+h1TSh2TSLSTS1]

{ 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λ1obs+λ2obs2+LSrh2=TS2LS(1λ1obsλ2obs+λ2obsλ1obs)

其中ST给出的 λ 1 − o b s 、 λ 2 − o b s λ_{1-obs}、λ_{2-obs} λ1obsλ2obs取值方法如下

{ λ 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. λ1obs=kλ1λ2obs=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^θqeβ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)
image.png

MATLAB仿真

仿真模型可在微信公众号获取
观测器输入为测量值iα、iβ和控制输入uα、uβ,均可测量或已知,输入ω为PLL的输出,内部结构根据式③进行搭建
image.png
初始化参数设置:
取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,输入初始化参数
image.png
角度θ和速度ω都得到了不错的跟踪
image.png
注:电流环模型来自于欧拉电子,注意其中的一点小问题

  1. 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
  1. 在应用到单片机时将下列代码进行更改
% 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电子

猜你喜欢

转载自blog.csdn.net/Kongbobo39/article/details/131166612
今日推荐