Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计

引言

最近对环路进行了一些思考,我们知道对于永磁同步电机的电流环控制,往往假定电流环的控制对象是电阻和电感的串联,这样的一个系统开环响应类似于一阶惯性系统,适合使用pi控制,并且可以根据电机的定子电阻和电感设置pi参数达到较好的控制效果。但是实际上,当电机运行起来之后,dq轴之间会存在明显的耦合,更不理想的是,q轴的电压中,占主导成分的是反电动势,在一些对环路响应要求较高的场合,使用pi控制并无法实现理想的效果。在速度环应用pi控制也有类似的问题,在一些负载不断变化的应用场景下,如风机类负载,不可能做到一组pi参数适应所有工况。这时候有必要考虑更完善的控制策略。

文章目录

  • 引言
  • 1、自抗扰控制的原理通俗版
  • 2、实现扰动估计
  • 3、实现自抗扰速度环
  • 4、控制效果仿真
  • 5、关于控制的一点思考
  • 6、下载模型

1、自抗扰控制的原理通俗版

对于一个变负载的开环速度控制系统,有
J ω m ˙ = T e − T m ( ω m ) − B ω m ( 式 1 ) J\dot{ω_m} = T_e - T_m(ω_m) - Bω_m(式1) Jωm˙=TeTm(ωm)Bωm(1)
式中 ω m ω_m ωm表示机械转速, J J J表示负载惯量, T e T_e Te表示电磁转矩, T m ( ω m ) T_m(ω_m) Tm(ωm)表示随速度变化的负载, B B B表示摩擦系数。
对于上述时变系统,想要使用一个固定参数的pi控制器实现全速度范围内的良好控制几乎是不可能的。但是如果假如 T m ( ω m ) − B ω m T_m(ω_m) - Bω_m Tm(ωm)Bωm已知,上述系统可以看作:
J ω m ˙ = T e − T l o a d J\dot{ω_m} = T_e - T_{load} Jωm˙=TeTload
复杂的时变系统等效成了一个基本的一阶系统。
此时如果把随速度变化的复杂和摩擦力看作扰动,我们把时变系统的控制问题等效成了扰动的估计问题。
自抗扰控制器要解决的问题就是扰动估计与补偿。
回到自抗扰速度控制器的框图。
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第1张图片
可以发现,从误差e3到iqref的部分像极了pi控制器加前馈的控制方式。
对照pi+前馈的控制方式来看。
NLSEF相当于pi控制器,z2/b那部分相当于前馈。
再对照上面提到的速度控制系统模型,如果把 T l o a d T_{load} Tload作为前馈进行补偿,pi控制器的控制对象变成了确定的系统 J ω m ˙ = T e J\dot{ω_m} = T_e Jωm˙=Te

2、实现扰动估计

在自抗扰控制器中,使用扩张状态观测器进行扰动观测。
二阶扩张状态观测器定义如下:
{ e 2 = z 1 − ω z 1 ˙ = z 2 − β 1 e 2 + b u z 2 ˙ = − β 2 e 2 \left\{ \begin{aligned} e_2& = z_1 - \omega\\ \dot{z_1}& = z2 - \beta_1e_2 + bu\\ \dot{z_2} &= - \beta_2e_2 \end{aligned} \right. e2z1˙z2˙=z1ω=z2β1e2+bu=β2e2
对照扩张状态观测器定义,以及系统模型,我们定义扰动为 T l o a d = T m ( ω m ) + B ω m T_{load} = T_m(ω_m) + Bω_m Tload=Tm(ωm)+Bωm搭建适用于我们系统的观测器如下图。
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第2张图片
e 2 e_2 e2为0时, z 1 = ( i q T e − z 2 ) 1 s 1 J m z1 = (i_q Te - z2)\frac{1}{s}\frac{1}{J_m} z1=(iqTez2)s1Jm1
式中 T e Te Te表示转矩常数,我画模型时没有做好区分,不要跟上面式子中的 T e Te Te混淆。
1 s \frac{1}{s} s1表示积分, J m J_m Jm表示负载惯量, z 2 z2 z2为总的扰动。

式1可以写为: ω m = ( T e − T m ( ω m ) − B ω m ) 1 s 1 J m \omega_m = (T_e - T_m(ω_m) - Bω_m)\frac{1}{s}\frac{1}{J_m} ωm=(TeTm(ωm)Bωm)s1Jm1
通俗的说,当 e 2 = 0 e2=0 e2=0时, ω m = z 1 \omega_m = z1 ωm=z1,又因为, i q T e = T e i_q Te = T_e iqTe=Te,所以存在
z 2 = T m ( ω m ) + B ω m z2 = T_m(ω_m) + Bω_m z2=Tm(ωm)+Bωm
即,当观测器收敛时,实现对扰动 z 2 z2 z2的观测。

3、实现自抗扰速度环

实现扰动观测后,剩下的事情变得非常简单。

一阶跟踪微分器(TD)作用是对给定信号进行平滑处理,避免给定信号突变。笔者认为在一些场合不加也可以。
其simulink框图如下:
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第3张图片
其中系数k决定了对给定信号的跟踪速度快慢,k越大跟踪越快。

一阶非线性状态误差反馈控制器(NLSEF)用比例控制加前馈实现。
整体框图如下:
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第4张图片

4、控制效果仿真

模拟一个负载转矩随速度变化而变化的负载。
T m ( ω m ) = ω m ∗ 0.3 T_m(ω_m) = ω_m * 0.3 Tm(ωm)=ωm0.3
负载惯量 J m = 0.01469 k g ⋅ m 2 Jm = 0.01469kg·m^2 Jm=0.01469kgm2
0时刻给定速度10rad/s,0.05时刻,给定速度阶跃到30rad/s
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第5张图片
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第6张图片
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第7张图片
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第8张图片

图中,黄色波形为速度给定,蓝色波形为速度反馈。
可以看到,在0时刻,给定速度从0阶跃到10,反馈速度达到了给定速度的90%使用调节时间小于3.5e-3秒。在0.05时刻,给定速度从10阶跃到了30,反馈速度在5e-3秒内近似达到给定速度,超调量极小。最终的速度稳态误差小于0.01rad/s.

再来看负载转矩与观测到的扰动波形。
Simulink永磁同步电机控制仿真系列八:使用自抗扰控制(adrc)实现速度闭环以及扰动估计_第9张图片
图中,黄色波形为负载转矩,蓝色波形为观测到的扰动。
因为仿真中我把摩擦系数调到了0,在稳态时,观测到的扰动等于负载转矩。在快速动态响应时,控制器对其他非线性因素也进行了补偿。
使用pi控制器,通过调节pi增益,也能够达到较好的控制效果,但是当系统发生变化后,比如改变 T m ( ω m ) T_m(\omega_m) Tm(ωm)后,pi参数需要重新调节,但是自抗扰控制方法具备更广泛的适应性。

5、关于控制的一点思考

自抗扰控制方法的关键思想是估算扰动,并对扰动进行补偿。
它之所以能够对扰动进行估计,是因为我们在实现自抗扰控制的过程中,分析了被控对象的模型,将模型分为了理想的部分和扰动的部分。
相比较学习一种控制方法,更重要的是理解其中的思想,实现扰动估计后,我们可以把扰动补偿用在pi控制器。我们也可以把扰动补偿用在电流环或者其他控制对象。在电流环可以把耦合项和电阻压降当做扰动进行估算。甚至我们电机的参数是确定的,可以直接跳过扩张状态观测器,直接计算出扰动进行补偿。

6、下载模型

模型下载链接:Simulink永磁同步电机控制仿真系列八模型

感谢大家认真读完文章。写博客1年多,深感其中的艰辛,中间因为工作繁忙的原因险些放弃。对于一个涉及仿真及较多公式的文章,从确定一个主题后从搭建模型开始,到文章发布,往往需要8个小时以上的时间。是部分网友的鼓励让我坚持了下来,在留言中知道不少朋友期待着我新的文章,实在是受宠若惊。真的非常感谢各位的支持,我也希望能够和各位共同成长。

你可能感兴趣的:(永磁同步电机,matlab,控制器,simulink,pmsm,adrc,自抗扰控制)