这是为什么呢?来看下我们这时的开环系统阶跃响应:
咦?怎么是一条直线呢?没错,它就是这样一个不稳定的状态,在我们高兴的做极点配置的时候,忘记了PID控制器本身还会引入一个临界稳定的极点,这个极点带来的好处0稳态误差,但是却对噪声非常敏感,也就是说,如果我们的飞机在气流平稳的地方飞行,飞机的电机性能又极佳,建模也准,最关键的,是姿态解算的精度又出奇的高的话,用这种方法得到的PID参数肯定是非常完美的。但是现实总是残酷的,具体为什么会对噪声这么敏感应该可以从系统的噪声辨识模型中得到解释,但是很遗憾到文章这里我并没有对噪声进行建模,有兴趣的可以尝试下。
这里就是使用PID控制的弊端了,它只提供了两个零点用来对极点进行抑制,但是又同时引入了一个不稳定的极点,不得已,我们只能让零点从那两个极点上向那个临界稳定的极点移动,企图用两个零点来牵制三个极点,这自然没办法达到良好的控制效果,但也就成了没有办法的办法了……大家在搜索PID参数整定方法的时候一定都听说过Ziegler-Nichols整定法则,这几乎是PID基于模型的参数整定唯一的方法了,但是为什么没人把这个如此著名的整定方法(这里指第一方法)应用在四轴的PID整定中呢?因为使用该法则有个铁打的前提:控制对象中既不能包含积分器,又不包含主导共轭复数极点,也就是说阶跃响应应该是一个S型…………………………很不幸,我们的四轴这两条都占了……积分器是在从角速度到角度转换的过程中,在与其他好多极点的共同作用中最终在我们的参数辨识中表现为了那两个讨厌的共轭复数极点,重新看一遍我的解释流程,就明白为什么不能用Ziegler-Nichols整定第一法则了,也就是为什么光用PID不能达到足够好的控制效果。
那么,既然非要用PID飞又既然缺少极点的情况下我们只能让零点右移,这么做的理由也是可以从另一个方面来佐证的:
调过PID的都知道增加微分可以提高系统的抗噪性能,减小积分会减小噪声积累(这里指Ki增加而不是Ti)反映到零点的移动中刚好就是零点向右侧的(1,0)点移动。所以可以得知,我们经过权衡能得到的PID最佳的控制参数的零点应该是落在了开环主导极点和(1,0)点连线所在的那一片区域内了,那么我们对PID的分析是否到此就结束了呢?显然没有,我还没有论证为什么大家在数年的总结中会得到“先调P,再调D,最后调I就能飞了”的实验整定方法能够凑效,并且还要提出个理论指导实践的方法来……
自控原理的书上有提到“串联响应频率校正”的设计方法,但是该方法屡试都不爽,有兴趣可以从这个方向走走,说不定能为我们的四轴PID控制器设计找到一条出路。
之前我曾说过,用Kp Ti Td型的参数设计的PID控制器稳定性对Kp并不敏感,那么我们是不是可以利用这点来优化我们的控制器设计呢?答案是肯定的。我们先来看下按照上面的‘向右看齐’参数调整方法会发生什么:
我们随便选一个在连线上的点作为参数查看它的开环零极点和闭环阶跃响应(这里Kp去1):
可以看到,积分的效果明显减弱了,系统先在0.几秒的时候迅速的达到了稳态(0.3左右)然后在以后漫长的时间内在积分作用的影响下以指数逼近最终的稳态1,大家看着这个图应该很快就想到该怎么做了,就是增大Kp,让系统的‘第一个’稳态在1附件,那问题就解决了,不错,我们这里把Kp设为4(不设置为3是为了等下验证另一个东西):
瞧,这个很丑的怪物出现了,比刚才好了不少,而且你最终得到的PID控制器输出效果会和这个差不了许多(之所以在视频上看不出来是因为人很少会从0----Pitch角0°突然给飞机一个1----Pitch角57°)另外要说的是为什么我用了4依然没有让它的第一步就稳定到1,这是因为闭环降低了系统总增益,但是这里给再高的增益会让系统不稳定,原因就在下面了:
为了更直观的说明不稳定的原因,这里要用Bode图来看一下系统闭环的频域响应:
可以看到在频域响应有个很尖的尖峰,这个尖峰就是我们说的PID在这种情况下没法达到优良控制性能的关键,你会发现,使用纯PID控制的飞控,都会在空中来回抖动,频率基本是固定的,就是这个尖峰的缘故,尤其当Pitch轴和Roll轴使用同样的控制参数的时候,抖动会叠加,你经常会看到视频里用纯PID控制的四轴在两个控制轴交界的方向上抖啊抖抖啊抖抖啊抖抖啊抖…………于是这里就是我们需要用实验来权衡的地方,这个尖峰通过减小Kp的值可以得到一定的抑制,也可以让零点向左少许移动,二者都会延长到达稳态的时间,比较明智的做法是保证有足够的响应速度的前提下适当减小增益,毕竟在PID没法很好的完成控制任务的情况下,人的操作就显得非常重要了。这里给出我使用的一组PID参数:
也就是说,我提出的整定方法,在可以建模的情况下:
①建立被控系统的模型
②根据上述的原则确定PID的开环0点应该出现的区域(就是在那个连线上)
③给一个开环情况下稳态误差较小的Kp
④看着阶跃响应微调Ti和Td使得在保证Td足够大的情况下超调量较小且积分效果打到稳态的时间又足够的长(2~3s以上依据个人口味)
⑤最后看着Bode图适当减小增益Kp
⑥回头再检查下阶跃响应是否满足心意就完事儿了
看到这儿,不知道有多少人会和我一样苦苦的一笑(这TM繁琐的步骤有意思吗?),这么做确实是一件非常不值得的事情,只是如我这般不服气的孩子凭着一股刨根问底的冲劲花了2个月用自己的方式来调PID的真实记录而已,好了,现在再来介绍不建模的情况下怎么通过试验整定四轴的PID参数
评论
查看更多