打印
[C语言]

PID算法,怎看怎有问题?水温加热正确的公式应是什么?

[复制链接]
1458|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nbsmaps|  楼主 | 2016-3-19 17:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PID算法,本人是水温加热。类似即热式电热水器一样的东西,现在老是过调。 用的是PID位置式算法,公式为: P*EK+I*累加错误+I*(EK-EK1)  按这个公式理论分析也通不过啊,一开始,按理说计算的结果应是最大,然后随着温度的与设定值的接近,加热越来越小。可是按这个公式算,比例项是越来越小,可是积分项的累加错误一定是越来越大,最终总会超过设定!特别是当起始温度低,如起始0,设定90,PID算出来的结果是慢慢加大,一直到上限,可是这个积分项累积值已很大了,要超调N多,才会下来,加上余热,超调更多。
   要是不用积分,那么温度就更不对,加热,慢慢接近,到达设定,到达设定后就会停止加热,然后再等温度下来,比设定低,然后再加热。这样不是一直在波动了?还有要是没有积分,这个位置式与增量式还有什么区别?
所以求有用过的朋友指点下,PID算**确的应是怎么样?水加执控制用的是光隔,自动过零开关的。

相关帖子

沙发
fly1974| | 2016-3-21 08:23 | 只看该作者
https://bbs.21ic.com/icview-651068-1-1.html   仿真一下,有个直观的印象,有助于理解!

使用特权

评论回复
板凳
gx_huang| | 2016-3-21 08:45 | 只看该作者
位置式和增量式没有什么区别,我一般用增量式,只要几个历史数据,计算简单,初始输出根据设定和当前温度给一个大致值。
感觉你的位置式公式有错误呀,上下二次的误差的差,和积分应该没有关系呀,你这个也没有微分项。

使用特权

评论回复
地板
xuyaqi| | 2016-3-21 20:26 | 只看该作者
楼主对PID算法理解有错误,怎么会是“积分项的累加错误一定是越来越大”正确的控制累加错误会是趋近零的。

使用特权

评论回复
5
nbsmaps|  楼主 | 2016-3-22 13:03 | 只看该作者
xuyaqi 发表于 2016-3-21 20:26
楼主对PID算法理解有错误,怎么会是“积分项的累加错误一定是越来越大”正确的控制累加错误会是趋近零的。 ...

第二个为I*累积错误,累积错误除了高于设定值才会是负值缩小,不然从低到设定温度,不是一直是正偏,这个值 不是越来越大吗?

使用特权

评论回复
6
nbsmaps|  楼主 | 2016-3-22 13:15 | 只看该作者
gx_huang 发表于 2016-3-21 08:45
位置式和增量式没有什么区别,我一般用增量式,只要几个历史数据,计算简单,初始输出根据设定和当前温度给 ...

最后一个写错了,应是D*

使用特权

评论回复
7
xuyaqi| | 2016-3-23 11:43 | 只看该作者
nbsmaps 发表于 2016-3-22 13:03
第二个为I*累积错误,累积错误除了高于设定值才会是负值缩小,不然从低到设定温度,不是一直是正偏,这个 ...

“不然从低到设定温度,不是一直是正偏,这个值 不是越来越大吗?”控制作用也会越来越大,由于有控制作用,正确的控制应该是累积错误会越来越小甚至变负最后趋于零。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

268

帖子

3

粉丝