查看: 3316|回复: 6

闲谈PID控制

[复制链接]
发表于 2012-9-10 09:21:17 | 显示全部楼层 |阅读模式
最近我在做一个项目中有PID控制,就搜了些网上的文章,来学习。
发现网上的文章,很多公式都是错误的,有的居然连位置式和增量式都故意搞了很多区别,甚至影响控制性能。
我虽是自动化专业,但做这方面很少,于是抱着学习的想法,说说自己的认识,也和大家交流下。


PID的所谓位置式和增量式的,从控制算法上看,没有本质区别。
Out[k] = Out[k-1] + delta;
delta = P*E+I*ξE+D*de
如果看输出的Out值,就是位置式的,如果看delta就是增量式的。

实际应用中有又位置式和增量式,
有的执行有记忆特性,就是增量式的,如步进电机
有的执行机构,没有记忆性,就是位置式的,如加热

 楼主| 发表于 2012-9-10 09:21:54 | 显示全部楼层
P = kp * e(n);
I = Ki *( e(n) + e(n-1) + e(n-2) );
D = Kd * ( e(n)-e(n-1) );

P比较简单,不再赘述
I是积分项,对应几个离散误差累计,根据需要而定,误差的累计个数本质是积分周期的体现
D是微分项,一般使用最近2次的误差之差,也有使用e(n) - e(n-2)的情况

PID = P + I + D;
输出控制信号 U(n) = U(n-1) + PID;
 楼主| 发表于 2012-9-12 09:37:55 | 显示全部楼层
PID的变种

标准PID可能无法实现满意的控制,此时就要变种,比如模糊控制。

最简单的模糊控制,是分段式的,每一段使用不同的PID参数。

有人的加热控制,在初始阶段只是用比例环节,以提高响应速度,到离目标温度较近时再采用PID三个环节一起上,本质上也是分段PID,就是低温段Ki和Kd的值为0

但简单的分段式,对于变化较大的系统,有时仍不能满足需要,这时可以用PID动态整定
关于PID整定的话题,我们后面讨论,这里先说下动态整定。
在温度控制中,对PID的参数,进行动态调整,相当于一个控制cycle中有几千几万次的整定。这样可以随时使用最佳的PID参数,毕竟整个cycle整定出来的PID参数不一定适合于所有的控制阶段。
发表于 2012-9-12 15:48:29 | 显示全部楼层
占位
 楼主| 发表于 2012-9-12 21:09:33 | 显示全部楼层
2.JPG        1.JPG


上面2个图是炉温控制系统的仿真
仔细看一下,这2张图的区别,PID参数的Ki做了改变。
有个有趣的现象,积分环节越大,震荡的幅度越大,收敛得越慢。

在加热温度控制系统中,积分环节的增大不但无法加快收敛,反而会有想反的效果。
实际应用中,很多人遇到了此问题,很多人采用变种PID解决掉了,但追究问题的来源。

加热系统是个单向温度控制系统,也就是只能主动加热,而降温只能靠被动散热。
加热的升温是很快的,而自然散热就很慢了,否则锅炉的热效率不太低了。
所以加热的温控系统,在温度稳定后,误差也基本是正误差,而非负误差。
看上面的2张图,后面的阻尼振荡的收敛过程,是不是基本在设定温度上方摆动。

细心的你应该发现了,好像温度的超调几乎是无可避免的。
没错,我是故意把这个问题暴露出来的。
实际的控制系统中,也经常有这个现象,而这来源于一个加热热量的传递过程,还有温度测量传感器的反应速度。
这个测试的是纯粹的PID计算,无法避免超调就很正常了。

当我们找到了问题的源头,解决起来就好办多了。


PID之所以变种,是因为它不满足需求了。
如果找到了PID无法控制系统于指定的稳定范围的根源,PID变种的方法选择自然就明确了。
发表于 2012-11-11 20:36:03 | 显示全部楼层
学习了,PID真是简单也不简单
发表于 2012-11-15 17:11:21 | 显示全部楼层
谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表