位置式PID、增量式PID与经典PID控温效果比较

2020-01-12 17:28发布

本帖最后由 coleyao 于 2012-6-7 20:20 编辑

  理想的控温曲线很多人都了解是个啥样子,但要是想用PID控温,得到理想的控温曲线就没那么容易了(通常认为延时越大,升温越快就越不容易控制)。
不过有了PID温控仿真器之后,PID温控就变得很简单了,我在附件中列举了在这三种PID控温方式得到较理想控温曲线时的PID参数(这些参数在升温速率快慢、延时长短、设定温度距离环境温度远近等各种场合适应性较广),大家有空可以自己确认一下(仿真器中温度采集和控温的周期均为1秒)或者亦可尝试寻找一下各种PID控制方式下最佳的PID参数,这三种PID控制方式我个人觉得经典式PID效果最差,尽管在大延时,高升温速率下也能稳定,但控温时间长,波动较大;位置式PID次之,在升温速率30度每分钟,延时达20秒时仍有较理想的控温曲线,缺点是继续增加升温速率或延时时间则会出现振荡;增量式PID最佳,在升温速率40度每分钟,延时达20秒时仍有较理想的控温曲线,缺点同位置式PID(当然这些是我通过仿真软件得到的结论,本人并没有用增量式或位置式PID解决过实际问题,写这个仿真软件的目的一方面是为了交流和学习,另一方面是为了将PID控制的效果和其它方法如PreF_v方法作个比较,我目前在温控系统中实际用过的是改进型的PreF_v方法)。
  当然,我个人的看法是没有最好,只有更好,使用PreF_v控制方法(仅有两个参数PreK和FdK需要调整,并且本身就是时域的方法,而不是像PID那样用频域方法解决时域问题)在升温速率达到70度每分钟,延时达100秒时仍能得到较理想的控温曲线。(注:仿真软件在51分论坛上可以下载,效果请各网友自行评估。)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
48条回答
coleyao
1楼-- · 2020-01-14 17:42
davidd 发表于 2012-6-7 21:39
看了你程序中的PID算法:
PID 位置: 递增量=KP*ET[CountT]-KI*ET[CountT-1]+KD*ET[CountT-2];
PID 增量:  ...

谢谢指正,我就说吗,怎么PID中间见不到积分分量,不过我是从本论坛中别人的帖子中间摘过来的,没有进一步查证其它书籍资料,所以这些系数有点乱,幸好我在软件中有说明,希望不致给大家带来困扰!
bg8wj
2楼-- · 2020-01-14 20:33
 精彩回答 2  元偷偷看……
coleyao
3楼-- · 2020-01-14 22:06
本帖最后由 coleyao 于 2012-6-8 12:10 编辑
bg8wj 发表于 2012-6-8 07:57
软件中提到的PID 位置: 递增量=KP*ET[CountT]-KI*ET[CountT-1]+KD*ET[CountT-2]怎么看也么有搞懂。看来 ...


   谢谢这位老兄/?大姐引经据典对PID公式的来龙去脉讲得这么透彻,软件我之前就讲了,主要目的不是让使用者能直接商用的,而是熟悉一下P、I、D各个参数的作用,各参数分别变化时整个系统稳定性的变动状况,给使用者一点启示,软件里面的采样速率和系统可加热上限温度固定不可调就是为了限制简单的仿真后直接商用,不知道我讲明白没有。另外尽管我在学校里面数学学得还好,可是见到一系列的公式推导还是有点头疼,这也是我做这款软件的原因之一吧,有时候直观比抽象更重要,特别是对于大多的非砖家etc.而言。
  再有,我承认对PID公式是从网上直接抓来的,理解不透彻,所以PID三个系数都是可以为任意实数的,最大限度避免影响大家的发挥。
bg8wj
4楼-- · 2020-01-15 03:31
,
coleyao

其实我也希望您能编写一个好的PID模拟软件造福下大家。我的windows 下编程早就还给老师啦。呵呵。
coleyao
5楼-- · 2020-01-15 04:46
本帖最后由 coleyao 于 2012-6-8 18:14 编辑
bg8wj 发表于 2012-6-8 13:19
,
其实我也希望您能编写一个好的PID模拟软件造福下大家。我的windows 下编程早就还给老师啦 ...


  我的编程水平也就一般而已,主要是自己掏腰包培训过一段时间的Delphi(那时候我们的老师很惊讶会有做硬件研发的参加软件培训,估计更想不到我是自掏腰包的,有点心痛。。。),稍微懂点罢了,一般我也就自己写一些和下位机关系比较密切的调试软件,大的系统的没有做过。其实PID仿真软件的难点并不在编程,甚至可以说编程很简单,主要难点应该在被控系统的分析和抽象上,我也是刚好做过一段时间温控,有了一些概念,收集了一些数据,便想到了做个仿真软件,希望能对大家有帮助。
coleyao
6楼-- · 2020-01-15 06:35
davidd 发表于 2012-6-7 21:39
看了你程序中的PID算法:
PID 位置: 递增量=KP*ET[CountT]-KI*ET[CountT-1]+KD*ET[CountT-2];
PID 增量:  ...

http://www.ourdev.cn/thread-4932148-1-1.html
我的仿真软件中的PID算法部分从该帖子直接摘录过来的,幸好当时留了脚印,要不然我真说不清了。。。

一周热门 更多>