1 前言
前面介绍了一下SMO是个啥玩意,这一节我们就要把SMO应用到电机控制中。怎么针对电机控制来推导出可以在FOC控制中可用得模型呢?
2 模型搭建
在FOC中有三个坐标系统,分别是三相坐标,
α
−
β
\alpha-\beta
α−β坐标和d-q坐标,那这三种哪一种可以用来搭建模型呢?其实理论上都是可以的,主要看哪一种最为简单或者最为合适?在这里要使用
α
−
β
\alpha-\beta
α−β坐标下的方程,这里先不说原因,这个只能意会不能言传。在
α
−
β
\alpha-\beta
α−β坐标下的电压方程如下(这个方程怎么来的就不推了,有电机基础都知道,不知道的可以去查阅资料,非常简单的):
其中,p为微分算子,L为电子电感,R为定子内阻,i为定子电流,u为电子电压,w为电角速度,E为扩展反电动势,且满足:
而对于表贴式的PMSM,
L
d
=
L
q
=
L
s
L_d=L_q=L_s
Ld=Lq=Ls,所以上面的式子可以简化,然后再将其写成微分的方式即可得到系统在
α
−
β
\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的表达式为:
在这里不妨提一下,一开始引出状态观测器的的时候,是需要使用状态观测器来估算电机转子的位置去实现无传感器控制,所以必须可以通过状态观测器直接或者简介得到转子位置。从上面的式子中可以看出转子位置
θ
\theta
θ跟扩展反电动势E有关,所以只需要用状态观测器估算出
E
α
和
E
β
E_{\alpha}和E_{\beta}
Eα和Eβ即可。
根据SMO的原理,需要在观测器S中加上一个修正值z来修正模型让观测器模型逼近真实系统,从而让观测器的输出正确,那么问题来了,应该修正上述状态方程中的哪个变量呢?
可以看到在这个状态方程中,电流微分是状态变量,电压是输入,电流为输出(可能有些小伙伴对这句话不是很理解,这是自动控制里面的名词,不了解也没关系,也可以这么考虑,在真实的无传感器控制系统中,需要控制电压,然后通过电机输出的电流反馈来调节电压,所以对于电机来说,电压是输入,电流是输出)。了解完这些,再回到状态方程,首先输入和输出是不能修正的,R和L又是常量也无法修正,所以只剩下了扩展反电动势E,所以扩展反电动势E就是SMO的修正对象,给E加上修正对象后,滑膜观测器S最终确定为:
令
[
i
α
i
β
]
=
i
s
[\begin{matrix}i_{\alpha} \\ i_{\beta} \\ \end{matrix}]=i_s
[iαiβ]=is,
[
u
α
u
β
]
=
u
s
[\begin{matrix}u_{\alpha} \\ u_{\beta} \\ \end{matrix}]=u_s
[uαuβ]=us,
[
E
α
E
β
]
=
E
s
[\begin{matrix}E_{\alpha} \\ E_{\beta} \\ \end{matrix}]=E_s
[EαEβ]=Es,观测器S可简略写成:
观测器模型已经搭建完毕,剩下还有确定反馈,即z值。再来看看SMO中修正值z的定义(由观测器和真实系统的输出之差来决定),所以SMO的反馈就是电流,即
i
s
i_s
is。
所以根据SMO的框图就变成了如下形式:
再具体点,则变成如下的形式(该图是我偷来的):
再仔细的考虑一个问题,SMO的本质是什么?因为SMO中的扩展反电动势E是通过修正值z一次一次的修正(累加)得出来的,如果让扩展反电动势E的初始值为0,则扩展反电动势E就等于z的累加和,即扩展反电动势E等于z的积分。而z的来源是什么呢,是来源于误差反馈,是不是有点PID的味道,但是不同于PID,滑膜更加的简单粗暴,但是起到的作用却是非常的好。
至此,SMO搭建完毕。
3 转子位置 θ \theta θ的算法
现在不妨再来考虑考虑另外一个问题, E α 和 E β E_{\alpha}和E_{\beta} Eα和Eβ已经可以通过SMO估算得出,那么怎样通过 E α 和 E β E_{\alpha}和E_{\beta} Eα和Eβ求出转子位置 θ \theta θ呢?目前最通用的有两种,反正切法和锁相环法。
3.1 反正切法
首先将
E
α
和
E
β
E_{\alpha}和E_{\beta}
Eα和Eβ相除可得:
根据这个式子,求
E
α
E
β
\frac {E_{\alpha}}{E_{\beta}}
EβEα的反正切就可得出转子的电角度
θ
\theta
θ,所以立即推:在无传感器控制系统中使用SMO观测器得出转子位置的原理流程图如下:
给z做累加(或者低通滤波),得出
E
α
和
E
β
E_{\alpha}和E_{\beta}
Eα和Eβ,通过求
E
α
E
β
\frac {E_{\alpha}}{E_{\beta}}
EβEα的反正切最后得出转子位置
θ
\theta
θ。
3.2 锁相环法
锁相环法是另外一种根据 E α 和 E β E_{\alpha}和E_{\beta} Eα和Eβ求出转子位置 θ \theta θ的方法,不过这种方法有点绕,理不理解就靠大家的悟性了。
首先设
e
=
−
E
α
c
o
s
θ
^
−
E
β
s
i
n
θ
^
e=-E_{\alpha}cos\hat\theta-E_{\beta}sin\hat\theta
e=−Eαcosθ^−Eβsinθ^,又因为:
则可得到:
其中
θ
^
\hat\theta
θ^为最终估算的角度,而
θ
\theta
θ为隐藏在
E
α
和
E
β
E_{\alpha}和E_{\beta}
Eα和Eβ里面的角度, 让
k
=
ω
e
ψ
f
k=\omega_e\psi_f
k=ωeψf,再加上当
∣
θ
−
θ
^
∣
|\theta-\hat{\theta}|
∣θ−θ^∣在很小值的时候,有
s
i
n
(
θ
−
θ
^
)
=
θ
−
θ
^
sin(\theta-\hat\theta)=\theta-\hat{\theta}
sin(θ−θ^)=θ−θ^,则上式可以简化为:
有些人就要问了,花里胡哨最终搞出这个东西有啥用啊?其实最终就想要凑出
θ
−
θ
^
\theta-\hat{\theta}
θ−θ^这个东西,凑出这个东西怎么利用呢?
首先发挥想象,把求出
θ
\theta
θ这个过程想象成一个小系统,输入是
E
α
和
E
β
E_{\alpha}和E_{\beta}
Eα和Eβ,则输出为估算角度
θ
^
\hat\theta
θ^,即如下:
再来看看上面花里胡哨搞出来的
e
=
k
(
θ
−
θ
^
)
e=k(\theta-\hat{\theta})
e=k(θ−θ^),其中
θ
\theta
θ为隐藏在
E
α
和
E
β
E_{\alpha}和E_{\beta}
Eα和Eβ里面的角度,即输入;
θ
^
\hat\theta
θ^为最终估算的角度,即输出;输入减去输出即反馈,,感受到了吗?是不是那个熟悉的味道,没错,就是PID控制器,跟PID控制器不同的是它经过了很多花里胡哨的操作最终凑成了输入减去输出的形式,所以直接将上图转化成如下图:
这种结构在控制系统中一般称作为锁相环,再结合一下
e
=
−
E
α
c
o
s
θ
^
−
E
β
s
i
n
θ
^
e=-E_{\alpha}cos\hat\theta-E_{\beta}sin\hat\theta
e=−Eαcosθ^−Eβsinθ^,即可画出锁相环求转子角度
θ
\theta
θ的框图如下:
总结一下,锁相环法的流程就是首先使用SMO估算出扩展反电动势E,然后再利用上述的锁相环结构求出
θ
\theta
θ。