增量型PID算法的温控器验证(excel表格)

增量型PID算法的温控器验证(excel表格)

增量型pid的最简单、准确理解,参考链接: 【转载】啥是PID?PID有什么用?PID可以让你控制你想控制的东西!.

班门弄斧讲PID

简单点写就是:
U(k) = U(k-1)+Kp*(E[k]-E[k-1])+KiE[k]+Kd(E[k]-2E[k-1]+E[k-2])
即:
1)本次的输出 = 上次输出+pid的计算值;
2)Ek = k时,实际采集值和目标值之间的误差
3)比例变换P:对k次和k-1次的误差做减法,再进行比例变换。即,看上次输出U(k-1)的效果导致误差变大还是变小,从而影响本次的Uk输出;
4)微分变换D:(E[k]-2
E[k-1]+E[k-2])是----->>>>k次和k-1次的误差做减法,加上,k-1次和k-2次的误差做减法,可以看作2次误差的误差----- 误差的误差E[k]-E[k-1]和E[k-1]-E[k-2])-------做了减法,如何理解呢:
以温控器为例:
从0度加热到100度,采集5次的温度分别为:

当前温度 Ek Ek-1 Ek-2 Kd的乘数
0 100 0 0 100
10 90 100 0 -110
30 70 90 100 -10
60 40 70 90 10

从4次测量看,Kd在0度和60度时,提高了当次Uk的输出(Kd为正数),而10和30度时,降低了Uk的输出。
Kd是阻尼系数,也就是说阻碍Uk的剧烈变化,0度时,Uk的输出特别大,所以在10度时,Kd要求Uk小一点。
其中,当Ek很小时,也就是说测量值和目标值差距小的时候,阻尼效果就很小了,所以不会对输出造成影响。
5)积分变换I:很好理解,Ki*E[k],也就是说,只要Ek不为0,就提高Uk,如果Ek为负数,就降低Uk
6)Kp,Ki,Kd三个系数都为正数,输出的高低靠Ek的正负来调节。

温控实例

约定:

项目 数值 备注
当前温度 0
目标温度 100
单位体积的水每单位时间每100火力,增加的温度 10
单位体积的水每单位时间温度下降 -1 不加热就会降温
输出火力最大值 1000 炉子也是有底限的
输出火力最小值 0 炉子不是冷冻机

图标样式如下

增量型PID算法的温控器验证(excel表格)_第1张图片

比例变换P

增量型PID算法的温控器验证(excel表格)_第2张图片
最高温度89度
增量型PID算法的温控器验证(excel表格)_第3张图片
最高温度96度

积分变换I

增量型PID算法的温控器验证(excel表格)_第4张图片
最终到100度了,就是过冲有点厉害

增量型PID算法的温控器验证(excel表格)_第5张图片
基本不冲动了,第58行,冲到了100度。

增量型PID算法的温控器验证(excel表格)_第6张图片
速度太慢,p加到2,i加到0.02,36行就冲到100了。

微分变换D

增量型PID算法的温控器验证(excel表格)_第7张图片
从上图看,达到100度后,实际的Kd乘数已经很小了,所以,在本例种,对最后的输出或最后的平衡影响不大。

你可能感兴趣的:(软件设计,算法)