控制电机PID的结构和参数算法选择
在电机控制中,无论是DTC控制方法还是FOC控制方法,最后都要基于PID控制器来实现。想与大家具体的讨论下对PID控制器的自己的理解和感悟
PID结构图如下:(simulink)
可以清晰的看到三个部分:
Kp(比例部分):可以减少系统的稳态误差但不能消除它彻底,可以减少系统飞上升时间。
Ki(积分环节):可以彻底消除稳态误差但是会使系统的瞬态响应变的更不稳定。
Kd(微分环节):提高系统的稳定性,减少超调量,和提高瞬态响应的性能。
一般设计一个PID控制在一个系统上,可以得到理想的结果通过以下步骤:
1.通过对系统开环的响应分析,决定什么性能是需要提高的。
2.增加一个比例环节先提高系统上升到稳态的时间。
3.增加一个积分环节彻底消除稳态误差。
4.增加一个微分环节彻底消除超调量。
5.综合调整PID参数得到一个理想的输出结果。
并不是每个系统都需要PID我觉得,有时候PI能达到效果就好,对于控制器的设计,越简单越好。
当然也可以通过分析PID控制器的性能来判断,如阻尼比,自然频率等等。
其实,真是调节的时候,按照上面基本的方法有时候并不能得到好的输出,必须通过很多算法来得到,有很多种算法现在,每个都声称自己最好,每个系统都会根据自己的参数性能有个特定的算法,个人觉得没有什么使用面很广的PID的算法。基本大众的如Self Tuning Ziegler Nichols 。在这里上传一篇关于这方面的文章和自己写的程序,供大家参考,文件格式不支持,截个图吧:
a1,a2,b1,b2
是系统传递函数的参数,最后可以算出Kp,ki,Kd。非常基本的一个。
电机控制中,有个比较实际的问题如:控制器的
driving signal有时候受限制于实际情况,所以,这时候也会印象到系统的性能。
在
simulink模型中后加个saturation模块模拟受限的实际情况,系统系统如图:
比较平缓无明显棱角上升时间较慢的是受限于实际情况后的系统性能,可以看出某些系统的特质变化挺明显的。
最后一个就是
PID控制器中的积分环节,当你突然加入一个非常大的负载到电机中时,系统的PID控制器会工作,这是积分环节不断积分调节超出最大值会溢出,这种情况称为Integtal windup.所以。通常会加一个限制在控制器后(Simulink中用saturation来表示),第3秒时施加个vaule为6的step来表示突然加的负载。
红色为不加饱和器的系统性能,可以看到,稳态时有微微的上下波动
蓝色为加饱和器的系统性能,稳态时波动明显减小。