1 前言
前面说到只要搭建出系统的状态方程,就可以进行完整的卡尔曼滤波的流程,这节就介绍怎么搭建出能给卡尔曼滤波的状态方程。
2 模型搭建
首先列出在《小猫爪:PMSM之FOC控制10-搭建SMO状态观测器》中推导出来的电机在
α
−
β
\alpha-\beta
α−β坐标下的方程如下:
其中
A
=
[
−
R
L
s
0
0
−
R
L
s
]
A=[\begin{matrix} -\frac{R}{L_s} & 0 \\ 0 & -\frac{R}{L_s} \\ \end{matrix}]
A=[−LsR00−LsR],扩展反电动势E的表达式为:
再加上转速
ω
\omega
ω跟转子位置
θ
\theta
θ的关系如下:
将这几个式子结合一下得:
2.1 矩阵化
把上一篇文章的线性系统的状态观测器模型拿过来:
怎样把上面的式子变化成状态观测器矩阵的形式呢?首先确认状态变量依次是
i
α
˙
,
i
β
˙
,
ω
˙
,
θ
˙
\dot{i_{\alpha}},\dot{i_{\beta}},\dot\omega,\dot\theta
iα˙,iβ˙,ω˙,θ˙,则有:
另外输入是
u
u
u,对于电机来说输入是电压,则有:
那输出矩阵
y
y
y是什么呢?观察卡尔曼观测器的结构如下:
卡尔曼观测器的反馈是真实系统输出的测量值和卡尔曼观测器的输出的差,所以这两者的输出应该是等价等维的,所以卡尔曼观测器的输出取决于能测量到什么,很显然在无传感器控制系统中,只能测量出电流,所以卡尔曼观测器的输出矩阵
y
y
y为:
既然
y
y
y和
x
x
x都知道了,
H
H
H则就是:
结合
u
u
u和
x
˙
\dot{x}
x˙,不难看出
B
B
B为:
接下来还差一个
A
A
A,突然发现这个
A
A
A始终没办法确定,因为这不是一个线性系统,没关系,先直接带下来,所有将状态方程写成矩阵的形式为:
暂时令:
即目前的状态方程是这样的:
2.2 线性化
在矩阵化的过程中,遇到了非线性的因素导致没有求出A,接下来,只需要把矩阵 A A A求出来,那么就可以将电机系统在 α − β \alpha-\beta α−β坐标下的状态方程和观测方程搭建起来。那么怎么求出这个A呢?
那就需要著名的泰勒公式了,如下:
取前两项,后面全部看成泰勒余项则有:
f
(
x
)
=
f
(
x
0
)
+
f
′
(
x
0
)
(
x
−
x
0
)
+
o
(
x
−
x
0
)
f(x)=f(x_0)+f^{'}(x_0)(x-x_0)+o(x-x_0)
f(x)=f(x0)+f′(x0)(x−x0)+o(x−x0) 令
f
(
x
)
=
G
(
x
)
f(x)=G(x)
f(x)=G(x),并且省略泰勒余项则有:
G
(
x
)
=
G
(
x
0
)
+
G
′
(
x
0
)
(
x
−
x
0
)
G(x)=G(x_0)+G^{'}(x_0)(x-x_0)
G(x)=G(x0)+G′(x0)(x−x0) 这个时候再将这个
G
(
x
)
G(x)
G(x)代入到之前总结的状态方程中去得:
x
˙
=
G
(
x
0
)
+
G
′
(
x
0
)
(
x
−
x
0
)
+
B
u
\dot x=G(x_0)+G^{'}(x_0)(x-x_0)+Bu
x˙=G(x0)+G′(x0)(x−x0)+Bu 化简得:
x
˙
=
G
′
(
x
0
)
x
+
B
u
+
(
G
(
x
0
)
−
G
′
(
x
0
)
x
0
)
\dot x=G^{'}(x_0)x+Bu+(G(x_0)-G^{'}(x_0)x_0)
x˙=G′(x0)x+Bu+(G(x0)−G′(x0)x0) 从这个式子中就可以很清楚得看出电机系统在时刻
x
0
x_0
x0,矩阵
A
=
G
′
(
x
0
)
A=G^{'}(x_0)
A=G′(x0),到此为止A矩阵终于确定好了,即
A
x
0
=
∂
(
G
(
x
)
)
∂
x
A_{x_0}= \frac {\partial(G(x))}{\partial x}
Ax0=∂x∂(G(x)),即:
到目前为止,整个电机系统的状态方程的矩阵化已经全部完成。
2.3 离散化
接下来还有一个最最重要的问题,那就是离散化,因为状态方程是建立在连续系统的基础上,需要将其转化成离散化系统后,才能在微控制器中实现卡尔曼滤波状态观测器,下面就开始进行离散化。
其实之前再求卡尔曼滤波中矩阵
F
F
F的时候已经介绍过了。首先列出上面总结的状态方程为:
x
˙
=
G
(
x
)
+
B
u
\dot x=G(x)+Bu
x˙=G(x)+Bu,在离散化系统下,令
x
=
x
k
−
1
x=x_{k-1}
x=xk−1,而微分
x
˙
\dot x
x˙在离散化系统中的表达方式为
x
˙
=
x
k
−
x
k
−
1
Δ
t
\dot{x}=\frac{x_{k}-x_{k-1}}{\Delta t}
x˙=Δtxk−xk−1,则上式变成:
x
k
−
x
k
−
1
Δ
t
=
G
(
x
k
−
1
)
+
B
u
k
−
1
\frac{x_{k}-x_{k-1}}{\Delta t}=G(x_{k-1})+Bu_{k-1}
Δtxk−xk−1=G(xk−1)+Buk−1 移动一下项该式就变成:
x
k
=
x
k
−
1
+
(
G
(
x
k
−
1
)
+
B
u
k
−
1
)
Δ
t
{x_{k}}=x_{k-1}+(G(x_{k-1})+Bu_{k-1})\Delta t
xk=xk−1+(G(xk−1)+Buk−1)Δt 其中
Δ
t
\Delta t
Δt也就是微控制器的算法执行周期,该式自然而然也就替换了卡尔曼滤波过程中的第一个公式,即计算预估值,相比较于使用泰勒展开得到的式子,这个式子算出的结果更加准确。
3 扩展卡尔曼滤波的流程
经过上面的一顿操作,终于是把电机系统的扩展卡尔曼滤波观测器搭建完毕了,最后总结一下,扩展卡尔曼在电机FOC无感控制中的具体流程如下:
该流程中涉及到的所有矩阵以及变量名称都可以在文章中找到。现在就可以总结出扩展卡尔曼观测器的系统框图:
至此扩展卡尔曼滤波状态观测器的搭建就介绍完了。