前言
本文从电机无感控制的输入信息入手,拆解电机反电动势计算的理论基础和具体实现方法。
1 电机模型
链接: 磁链Ψ、磁通φ、磁势F
链接: 开绕组永磁同步电机的数学模型
链接: 控制工程中的数学建模(8)——典型环节的数学模型(之四)
链接: 反电动势的几点理解
链接: 永磁同步电机矢量控制(八)——弱磁控制(超前角弱磁) 这一篇还看不懂
2 具体应用
链接: 彻底吃透滑模观测器(PMSM无感算法)(理论精讲+推导+算法+调参+硬件运行)
3 尝试写一下观测器
3.1 控制系统状态方程
在控制系统中,状态方程通常用于描述系统内部状态变量随时间的演化规律以及它们与外部输入之间的关系。
x ˙ ( t ) = A x ( t ) + B u ( t ) \begin{equation} \dot{\mathbf{x}}(t) = \mathbf{A}\mathbf{x}(t) + \mathbf{B}\mathbf{u}(t) \end{equation} x˙(t)=Ax(t)+Bu(t)
其中:
x ( t ) ∈ R n \mathbf{x}(t) \in \mathbb{R}^n x(t)∈Rn 是系统的 n n n维状态向量,表示系统在时间 t t t处的状态。各个元素可能代表不同物理量(如位置、速度、角度、角速度等)。
x ˙ ( t ) \dot{\mathbf{x}}(t) x˙(t) 表示状态向量对时间的导数,即状态向量的变化率,它刻画了系统状态随时间的动态变化。
A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} A∈Rn×n 是系统矩阵,其元素反映了系统内部各状态变量之间的耦合关系。当系统处于无外力输入时,状态变量按 A \mathbf{A} A矩阵所描述的规律演化。
u ( t ) ∈ R m \mathbf{u}(t) \in \mathbb{R}^m u(t)∈Rm 是 m m m维控制输入向量,包含作用于系统的外部控制信号(如力、电压、转矩等)。
B ∈ R n × m \mathbf{B} \in \mathbb{R}^{n \times m} B∈Rn×m 是输入矩阵,其元素描述了每个控制输入如何直接影响各状态变量的变化。
这个状态方程形式简洁而普适,适用于许多实际的线性控制系统。对于非线性系统,状态方程可以写作更一般的形式:
x
˙
(
t
)
=
f
(
x
(
t
)
,
u
(
t
)
,
t
)
\begin{equation} \dot{\mathbf{x}}(t) = f(\mathbf{x}(t), \mathbf{u}(t), t) \end{equation}
x˙(t)=f(x(t),u(t),t)
其中 f : R n × R m × R → R n f: \mathbb{R}^n \times \mathbb{R}^m \times \mathbb{R} \rightarrow \mathbb{R}^n f:Rn×Rm×R→Rn 是一个非线性函数,描述了状态变量随时间和控制输入的非线性演化关系。
3.2 离散时间系统的状态方程
离散时间系统的状态方程描述的是系统状态变量在离散时间步长上的更新规则,而非连续时间的微分方程。以下是使用 LaTeX 格式编写的典型线性离散时间系统的状态方程:
x
[
k
+
1
]
=
A
x
[
k
]
+
B
u
[
k
]
\begin{equation} \mathbf{x}[k+1] = \mathbf{A}\mathbf{x}[k] + \mathbf{B}\mathbf{u}[k] \end{equation}
x[k+1]=Ax[k]+Bu[k]
其中:
x [ k ] ∈ R n \mathbf{x}[k] \in \mathbb{R}^n x[k]∈Rn 是系统的 n n n维状态向量在第 k k k个采样时刻(离散时间步)的值。
x [ k + 1 ] \mathbf{x}[k+1] x[k+1] 表示下一个采样时刻的状态向量,它由当前状态 x [ k ] \mathbf{x}[k] x[k]和当前控制输入 u [ k ] \mathbf{u}[k] u[k]共同决定。
A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} A∈Rn×n 是离散时间系统的状态转移矩阵,其元素反映了系统内部各状态变量在相邻两个采样时刻之间的演变关系。
u [ k ] ∈ R m \mathbf{u}[k] \in \mathbb{R}^m u[k]∈Rm 是 m m m维控制输入向量在第 k k k个采样时刻的值,它影响着系统状态的更新。
B ∈ R n × m \mathbf{B} \in \mathbb{R}^{n \times m} B∈Rn×m 是离散时间系统的输入矩阵,其元素描述了每个控制输入在当前采样时刻如何直接影响下一时刻各状态变量的值。
对于非线性离散时间系统,状态方程可以写作:
x
[
k
+
1
]
=
f
(
x
[
k
]
,
u
[
k
]
,
k
)
\begin{equation} \mathbf{x}[k+1] = f(\mathbf{x}[k], \mathbf{u}[k], k) \end{equation}
x[k+1]=f(x[k],u[k],k)
其中
f
:
R
n
×
R
m
×
Z
→
R
n
f: \mathbb{R}^n \times \mathbb{R}^m \times \mathbb{Z} \rightarrow \mathbb{R}^n
f:Rn×Rm×Z→Rn 是一个非线性函数,定义了状态变量在离散时间步
k
k
k根据当前状态
x
[
k
]
\mathbf{x}[k]
x[k]、当前控制输入
u
[
k
]
\mathbf{u}[k]
u[k]及时间索引
k
k
k的非线性更新规则。
这些离散时间状态方程为分析和设计数字控制器提供了数学模型基础,适用于计算机模拟、数字信号处理器(DSP)实现以及其他基于采样数据的控制系统。
3.3 龙伯格观测器
链接: 故障诊断4—龙伯格状态观测器设计
链接: 【现代控制理论】状态观测器——龙伯格观测器(Luenberger observer)
①
α
β
\alpha\beta
αβ轴电压方程
[
d
i
α
d
t
d
i
β
d
t
d
e
α
d
t
d
e
β
d
t
]
=
[
−
R
s
L
s
0
−
1
L
s
0
0
−
R
s
L
s
0
−
1
L
s
0
0
0
−
p
n
ω
r
0
0
p
ω
0
]
[
i
α
i
β
e
α
e
β
]
+
[
1
L
s
0
0
1
L
s
0
0
0
0
]
[
u
α
u
β
]
\begin{equation} \left[\begin{array}{c} \frac{d i_\alpha}{d t} \\ \frac{d i_\beta}{d t} \\ \frac{d e_\alpha}{d t} \\ \frac{d e_\beta}{d t} \end{array}\right]=\left[\begin{array}{cccc} -\frac{R_s}{L_s} & 0 & -\frac{1}{L_s} & 0 \\ 0 & -\frac{R_s}{L_s} & 0 & -\frac{1}{L_s} \\ 0 & 0 & 0 & -p_n \omega_r \\ 0 & 0 & p_\omega & 0 \end{array}\right]\left[\begin{array}{l} i_\alpha \\ i_\beta \\ e_\alpha \\ e_\beta \end{array}\right]+\left[\begin{array}{cc} \frac{1}{L_s} & 0 \\ 0 & \frac{1}{L_s} \\ 0 & 0 \\ 0 & 0 \end{array}\right]\left[\begin{array}{l} u_\alpha \\ u_\beta \end{array}\right] \end{equation}
dtdiαdtdiβdtdeαdtdeβ
=
−LsRs0000−LsRs00−Ls100pω0−Ls1−pnωr0
iαiβeαeβ
+
Ls10000Ls100
[uαuβ]
② 从上述方程中归纳出A、B、C矩阵(略)
③ 龙伯格观测器模型
[
d
i
^
α
d
t
d
i
^
β
d
t
d
e
^
α
d
t
d
e
^
β
d
t
]
=
[
−
R
s
L
s
0
−
1
L
s
0
0
−
R
s
L
s
0
−
1
L
s
0
0
0
−
p
n
ω
r
0
0
p
n
ω
r
0
]
[
i
^
α
i
^
β
e
^
α
e
^
β
]
+
[
1
L
s
0
0
1
L
s
0
0
0
0
]
[
u
α
u
β
]
+
K
[
i
^
α
−
i
α
i
^
β
−
i
β
]
\begin{equation} \left[\begin{array}{c} \frac{d \hat{i}_\alpha}{d t} \\ \frac{d \hat{i}_\beta}{d t} \\ \frac{d \hat{e}_\alpha}{d t} \\ \frac{d \hat{e}_\beta}{d t} \end{array}\right]=\left[\begin{array}{cccc} -\frac{R_s}{L_s} & 0 & -\frac{1}{L_s} & 0 \\ 0 & -\frac{R_s}{L_s} & 0 & -\frac{1}{L_s} \\ 0 & 0 & 0 & -p_n \omega_r \\ 0 & 0 & p_n \omega_r & 0 \end{array}\right]\left[\begin{array}{c} \hat{i}_\alpha \\ \hat{i}_\beta \\ \hat{e}_\alpha \\ \hat{e}_\beta \end{array}\right]+\left[\begin{array}{cc} \frac{1}{L_s} & 0 \\ 0 & \frac{1}{L_s} \\ 0 & 0 \\ 0 & 0 \end{array}\right]\left[\begin{array}{l} u_\alpha \\ u_\beta \end{array}\right]+\mathbf{K}\left[\begin{array}{c} \hat{i}_\alpha-i_\alpha \\ \hat{i}_\beta-i_\beta \end{array}\right] \end{equation}
dtdi^αdtdi^βdtde^αdtde^β
=
−LsRs0000−LsRs00−Ls100pnωr0−Ls1−pnωr0
i^αi^βe^αe^β
+
Ls10000Ls100
[uαuβ]+K[i^α−iαi^β−iβ]
备注:
p
n
p_n
pn是极对数,
w
r
w_r
wr是机械角速度。
⑤系统增益K矩阵
K
=
[
K
1
0
0
K
1
K
2
0
0
K
2
]
\begin{equation} \mathbf{K}= \left[\begin{array}{cc} K_1 & 0 \\ 0 & K_1 \\ K_2 & 0 \\ 0 & K_2 \end{array}\right] \end{equation}
K=
K10K200K10K2
[
d
i
^
α
d
t
d
i
^
β
d
t
d
e
^
α
d
t
d
e
^
β
d
t
]
=
[
−
R
s
L
s
0
−
1
L
s
0
0
−
R
s
L
s
0
−
1
L
s
0
0
0
−
p
n
ω
r
0
0
p
n
ω
r
0
]
[
i
^
α
i
^
β
e
^
α
e
^
β
]
+
[
1
L
s
0
0
1
L
s
0
0
0
0
]
[
u
α
u
β
]
+
[
K
1
0
0
K
1
K
2
0
0
K
2
]
[
1
0
0
0
0
1
0
0
]
[
i
^
α
−
i
α
i
^
β
−
i
β
e
^
α
−
e
α
e
^
β
−
e
β
]
\begin{equation} \left[\begin{array}{c} \frac{d \hat{i}_\alpha}{d t} \\ \frac{d \hat{i}_\beta}{d t} \\ \frac{d \hat{e}_\alpha}{d t} \\ \frac{d \hat{e}_\beta}{d t} \end{array}\right]=\left[\begin{array}{cccc} -\frac{R_s}{L_s} & 0 & -\frac{1}{L_s} & 0 \\ 0 & -\frac{R_s}{L_s} & 0 & -\frac{1}{L_s} \\ 0 & 0 & 0 & -p_n \omega_r \\ 0 & 0 & p_n \omega_r & 0 \end{array}\right]\left[\begin{array}{c} \hat{i}_\alpha \\ \hat{i}_\beta \\ \hat{e}_\alpha \\ \hat{e}_\beta \end{array}\right]+\left[\begin{array}{cc} \frac{1}{L_s} & 0 \\ 0 & \frac{1}{L_s} \\ 0 & 0 \\ 0 & 0 \end{array}\right]\left[\begin{array}{l} u_\alpha \\ u_\beta \end{array}\right]+\left[\begin{array}{cc} K_1 & 0 \\ 0 & K_1 \\ K_2 & 0 \\ 0 & K_2 \end{array}\right] \left[\begin{array}{cc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \end{array}\right]\left[\begin{array}{c} \hat{i}_\alpha-i_\alpha \\ \hat{i}_\beta-i_\beta\\ \hat{e}_\alpha-e_\alpha\\ \hat{e}_\beta-e_\beta \end{array}\right] \end{equation}
dtdi^αdtdi^βdtde^αdtde^β
=
−LsRs0000−LsRs00−Ls100pnωr0−Ls1−pnωr0
i^αi^βe^αe^β
+
Ls10000Ls100
[uαuβ]+
K10K200K10K2
[10010000]
i^α−iαi^β−iβe^α−eαe^β−eβ
注意
K
1
,
K
2
K_1,K_2
K1,K2作用于
(
i
^
α
−
i
α
)
,
(
i
^
β
−
i
β
)
(\hat{i}_\alpha-i_\alpha),(\hat{i}_\beta-i_\beta)
(i^α−iα),(i^β−iβ)。
⑥将龙伯格观测器离散化(系数:G取代K)
d
x
d
t
→
x
(
k
+
1
)
−
x
(
k
)
T
\frac{dx}{dt}\rightarrow\frac{x(k+1)-x(k)}{T}
dtdx→Tx(k+1)−x(k)
i
^
α
(
k
+
1
)
=
(
1
−
R
s
L
s
T
)
i
^
α
(
k
)
−
T
L
s
e
^
α
(
k
)
+
T
L
s
u
α
(
k
)
+
T
G
1
(
i
^
α
−
i
α
)
\hat{i}_\alpha(k+1)=(1-\frac{R_s}{L_s}T)\hat{i}_\alpha(k)-\frac{T}{L_s}\hat{e}_\alpha(k)+\frac{T}{L_s}u_\alpha(k)+TG_1(\hat{i}_\alpha-i_\alpha)
i^α(k+1)=(1−LsRsT)i^α(k)−LsTe^α(k)+LsTuα(k)+TG1(i^α−iα)
i
^
β
(
k
+
1
)
=
(
1
−
R
s
L
s
T
)
i
^
β
(
k
)
−
T
L
s
e
^
β
(
k
)
+
T
L
s
u
β
(
k
)
+
T
G
1
(
i
^
β
−
i
β
)
\hat{i}_\beta(k+1)=(1-\frac{R_s}{L_s}T)\hat{i}_\beta(k)-\frac{T}{L_s}\hat{e}_\beta(k)+\frac{T}{L_s}u_\beta(k)+TG_1(\hat{i}_\beta-i_\beta)
i^β(k+1)=(1−LsRsT)i^β(k)−LsTe^β(k)+LsTuβ(k)+TG1(i^β−iβ)
e
^
α
(
k
+
1
)
=
e
^
α
(
k
)
−
ω
e
T
e
^
β
(
k
)
+
T
G
2
(
i
^
α
−
i
α
)
\hat{e}_\alpha(k+1)=\hat{e}_\alpha(k)-\omega_eT\hat{e}_\beta(k)+TG_2(\hat{i}_\alpha-i_\alpha)
e^α(k+1)=e^α(k)−ωeTe^β(k)+TG2(i^α−iα)
e
^
β
(
k
+
1
)
=
e
^
β
(
k
)
+
ω
e
T
e
^
α
(
k
)
+
T
G
2
(
i
^
β
−
i
β
)
\hat{e}_\beta(k+1)=\hat{e}_\beta(k)+\omega_eT\hat{e}_\alpha(k)+TG_2(\hat{i}_\beta-i_\beta)
e^β(k+1)=e^β(k)+ωeTe^α(k)+TG2(i^β−iβ)
⑦计算电角度,进行位置或转速控制
PLL方法:
链接:锁相环(PLL)基本原理
链接:锁相环PLL在有感无刷直流电机速度估算中的应用
反正切方法:(直接计算或查表)
θ
=
a
r
c
t
a
n
(
−
e
α
e
β
)
\theta=arctan(-\frac{e_\alpha}{e_\beta})
θ=arctan(−eβeα)
3.4 滑膜观测器
相比于龙伯格观测器,其主要差异在于增益部分。
K
=
[
K
0
0
K
M
0
0
M
]
[
1
0
0
0
0
1
0
0
]
[
s
i
g
n
(
i
^
α
−
i
α
)
s
i
g
n
(
i
^
β
−
i
β
)
s
i
g
n
(
e
^
α
−
e
α
)
s
i
g
n
(
e
^
β
−
e
β
)
]
\begin{equation} \mathbf{K}= \left[\begin{array}{cc} K & 0 \\ 0 & K \\ M & 0 \\ 0 & M \end{array}\right] \left[\begin{array}{cc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \end{array}\right]\left[\begin{array}{c} sign(\hat{i}_\alpha-i_\alpha) \\ sign(\hat{i}_\beta-i_\beta)\\ sign(\hat{e}_\alpha-e_\alpha)\\ sign(\hat{e}_\beta-e_\beta) \end{array}\right] \end{equation}
K=
K0M00K0M
[10010000]
sign(i^α−iα)sign(i^β−iβ)sign(e^α−eα)sign(e^β−eβ)
s
i
g
n
sign
sign正数取1,负数取-1。
滑模观测自带高频抖动,一般需要配合LPF(低通滤波器)使用。
此外,还有改进的滑膜观测,见下图,懂的秒懂。
链接:滑模观测器(SMO)关键点解析和调参指导
多说一句,这个符号函数在大数据神经网络学习中也经常用到,是一种逼近目标常见的方法。
总结
龙伯格观测器本身并不难理解,难点是建立控制对象的数学模型,对于PMSM来说,电、磁、机械方面的物理关系比较复杂,比较难理解。
现代控制理论要具体落地,离不开离散化的处理,其微分处理和简化是固定套路,需要掌握。
控制系统的优劣取决于模型精确程度和控制系统稳定性。要取得良好的系统控制效果,需要在这两方面进行计算调试(当然硬件本身别掉链子)。
计算量是控制系统绕不开的一个话题,有机会写一篇关于Q值(浮点数定点化)计算的帖子。