做PID温控加热开发的一点感受

jackxiang 2010-2-26 23:42 | |
1.PID是一种闭环控制系统,根据控制量的实际值与设定的偏差来计算下一步的控制量;P使输入与输出成一种比例关系,I则
是对控制过程偏差的积分,使系统朝偏差减小的方向行进,最终达到消灭静差的目的,D则是用在有滞后和较大惯性的系统控
制中,而温度控制就是这样的,微分项可以“预测”误差变化的趋势,所以减小超调、消除震荡就靠它了。

2.算法选用位置式,数据类型用unsigned int
    很多资料上都推荐增量式,但这样一来必须选用float;用unsigned int的话,如果温差的差变化不大,大多数情况积分
项会被省咯,用定点数,则就得用double。
    而位置式则无此问题,个人理解,增量式积分在最终输出项了,即先乘积分系数,后积分,位置式则相反,所以选用位
置式用定点数损失不大。
    51单片机不适合用float、double;资源消耗太大了。

3.要想使波动范围小,那么数据输入精度非常重要
    如果输入的温度值精度为1度,想达到 -1度的控制精度,是不可能的,最少也得0.1度左右,有些资料推荐在计算前给温
度值*10,输出时再/10,这样做基本没什么作用,仅仅是方便了计算;基于温差变化而计算,若迟迟得不到温差变化,又怎
么能计算呢。

4.温度控制的范围也很重要
    也就是在用unsigned int、用定点数时,若控制的温度范围很大时,计算时会产生溢出,若选好范围即可解决,如控制
的范围为0-300度,其实根据位置式公式计算,温差在40度左右系统才会减小输出功率,那么我们在温差在40度之内后才开始
用PID控制,之前全功率加热,这样减小了数据量,也减轻了无效的计算,当然不能忘了温差为负数时,也要限制温差计算范
围,范围之外的关闭输出。

5.参数的整定很累人
    一定要按先比例后积分,再微分,同时要作好记录、分析,不要想着为节省三个系数都先给个经验值,再同时调,结果
很可能欲速则不达,本人已经有过教训了;最后当你对系统的加热过程越了解,也就越接近完成了。
PID的改良算法有很多,必要时要采用。

晓奇大侠是这方面的高手,他有一篇文章关于PID对我帮助很大,非常感谢他的帮助,我这里说的那里基本都说过。呵呵。
欢迎大家批评指正,我对PID也是只知皮毛,了解也很肤浅。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2733/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]