PID算法,本人是水温加热。类似即热式电热水器一样的东西,现在老是过调。 用的是PID位置式算法,公式为: P*EK+I*累加错误+I*(EK-EK1) 按这个公式理论分析也通不过啊,一开始,按理说计算的结果应是最大,然后随着温度的与设定值的接近,加热越来越小。可是按这个公式算,比例项是越来越小,可是积分项的累加错误一定是越来越大,最终总会超过设定!特别是当起始温度低,如起始0,设定90,PID算出来的结果是慢慢加大,一直到上限,可是这个积分项累积值已很大了,要超调N多,才会下来,加上余热,超调更多。
要是不用积分,那么温度就更不对,加热,慢慢接近,到达设定,到达设定后就会停止加热,然后再等温度下来,比设定低,然后再加热。这样不是一直在波动了?还有要是没有积分,这个位置式与增量式还有什么区别?
所以求有用过的朋友指点下,PID算**确的应是怎么样?水加执控制用的是光隔,自动过零开关的。 |