找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1803|回复: 2
打印 上一主题 下一主题
收起左侧

零基础制作平衡小车【连载】6---PID参数的分析

[复制链接]
跳转到指定楼层
楼主

上一节我们知道了什么是位式控制,这节就正式进入PID的学习。

简单画了一个系统的控制流程图:


系统说明:
假设该系统是一个温控系统,用户可设定目标值Sv,单片机检测了用户输入的值之后,通过PID算法进行计算,得出一个值去输出PWM,PWM去控制加热丝的电源,加热丝就是被控对象。加热丝旁边有个温度传感器,可以实时监测加热丝的温度,并反馈给单片机一个当前的温度值Pv。之后单片机将Sv和Pv进行PID运算,根据计算结果再次改变PWM的值,就这样以此循环下去。

第一个时间点采样值为X1,第二个时间点采样值为X2,以此类推第k-1个采样点采样值为Xk-1,第k个采样点采样值为Xk。那么将从第一个时间点采样的值到第k个采样值排成一个序列如下:
X1 、 X2 、 X3 、、、 Xk-2 、 Xk-1 、Xk

P 比例

P,大家都知道是比例运算。比例运算是根据当前传感器采集的值Pv和用户设定的目标值Sv进行比较之后,做一个比例输出,假设当前误差Ek = Sv - Xk,那么在单独使用P运算时,会输出:


这就会产生三种运算结果:
1.
当Ek > 0; => 系统没有达到目标值 => 差值为正,当差值较大时,也就是当前测量值和目标值相差甚远的时候,这就会使得OUTp的值变大,OUTp的值是控制PWM的占空比的。OUTp的值越大,占空比越大,平均电压值越高,加热丝加热越快,使得当前值以最快的速度接近目标值,当差值较小时则相反;
2.
当Ek = 0; => 系统已经达到目标值 => 差值为0,也就是当前测量值和目标值相差为0的时候,这就会使得OUTp的值为0,OUTp的值是控制PWM的占空比的。OUTp的值为0,占空比为0,平均电压值越也就为0,加热丝不在进行加热,此时加热丝已经不受控制,不受控制就容易受外界影响而改变温度;
3.
当Ek < 0; => 系统超过目标值 => 差值为负,也就是当前测量值已经超过目标值,PWM不可能输出负的,因此只能不在输出PWM,加热丝也会处于不受控的状态。

从运算结果可得出以下几个结论:
1.只有当系统存在误差了,我才控制你,如果没有误差我就不控制了,也就是说单独的P运算是个一直有误差的运算,也就是静态误差
2.当前值和目标值相差越大,我输出就越大,相差越小,我输出就小,也就是说P可以加快被控对象达到目标设定值
3.P运算只和当前值作比较,也就说P控制的是当前的状态

以上就是P的特点。

优化:
在没有误差的情况下为了还能控制被控对象,往往会在后面加一个常量OUT0:


也就是说当没有误差时,K*Ek=0,但我最后的输出OUTp = OUT0,还能控制被控对象,但是OUT0该设置多少就要看实际情况了,只能说有改善,但是很鸡肋。如果环境变化很大,OUT0形同虚设。

I 积分

将每个采样时间点的值和目标设定值做一个差值,就能得出每次采样的误差值。第一个采样时间点的差值E1 = Sv - X1,第二个时间点的差值E2 = Sv - X2,以此循环,第k-1个时间点的差值Ek-1 = Sv - Xk-1,第k个时间点的差值Ek = Sv - Xk,排成序列如下:

E1 、 E2 、 E3 、、、 Ek-2 、 Ek-1 、Ek

那么我们来看看将这些历史误差加到一起会有什么结论

Sk = E1 + E2 + E3 +++ Ek-2 + Ek-1 + Ek

Sk的值也会产生三种运算结果:
1.
当Sk > 0; => 所有正数的和的绝对值比所有负数的和的绝对值要大 => 从E1到Ek这么多数中,为正的个数多于为负的个数 => 也就是说在历史采样k次中,大多数是采样到系统没有达到目标值的。因为Ek >
0说明Sv > Xk , 说明系统没有达到目标值
2.
当Sk = 0; => 所有正数的和的绝对值等于所有负数的和的绝对值 => 从E1到Ek这么多数中,为正的个数等于为负的个数 => 也就是说在历史采样k次中,刚好没有达到目标值的次数和达到目标值的次数相等
3.
当Sk < 0; => 所有正数的和的绝对值比所有负数的和的绝对值要小 => 从E1到Ek这么多数中,为正的个数少于为负的个数 => 也就是说在历史采样k次中,大多数是采样到系统都达到目标值的。因为Ek <
0说明Sv < Xk , 说明系统达到目标值

现在我们想让这个Sk单独加到我们的运算当中,并且做一定的放大,这里说的是放大,其实是根据系数大不大于1而定的。那么我们可以得出一个公式:


那么我们来想想,I运算会不会有不受控的时候。答案是肯定有的。当Sk等于0时,系统是不受控制的,也就说在K次的采样结果中,达到设定目标的次数等于没有达到目标的次数时,系统是不受控制的。

从运算结果可得出以下几个结论:

1.只有当系统存在历史误差了,注意是历史误差,我才控制你,如果没有历史误差我就不控制了,也就是说单独的I运算也是一个有误差的运算
2.I运算参考的是历史数据,是对系统历史状态做出一个整体评估,当历史状态大多数都没达到设定值时我就输出一个大一点的信号,让系统在之后的运行中打到目标值,当历史状态大多数都达到设定值的时候则相反。

以上就是I的特点,和P有点类似只不过一个是将当前值作为参考,一个是将过去值最为参考。

优化:
在没有历史误差的情况下为了还能控制被控对象,往往会在后面加一个常量OUT0,虽然用处不大:


D 微分

我们将积分中在k次采样的误差值Ek和k-1次采样的误差值Ek-1做差值会得到什么结论呢?


首先我们要理解Dk的含义:

Dk是这次采样的误差和上次采样的误差的差值,假如采样时间很小,我们是不是可以把Dk看做是误差的斜率,也就是Dk的值反映了单位时间内误差的变化快慢。Dk越大,说明误差变化率越大,Dk越小,则误差的变化率越小。

再举个例子:
S = VT ( 路程=速度*时间) 我们又知道路程的倒数是速度,导数可以理解为变化率,也就是变化的快慢。在一段时间内走了一段路,那么在任意时刻路程的导数就表示该单位时间内走过的路程,也就是速度了。

再看看上面说的Dk,假设采样时间很短,Dk是不是就可以理解为在单位时间内误差从Ek-1变成了Ek,相当于路程在单位时间内从S1变成了S2,那么S2-S1是单位时间内走的路程,在对单位时间求导是不是就是速度了,Ek- Ek-1是单位时间内误差的变化值,在对单位时间求导是不是就是误差的变化率了。

在理解了Dk的含义之后我们就可以运用I运算了,同样的给D一个比例,放大一定倍数进行输出:


由于OUTd和Dk只是倍数关系,因此只看Dk的变化就能知道OUTd的变化,:
1.
当Dk > 0; => 这次的误差值比上一次的误差值大 => 说明本次相比上次更加远离目标值了 => 偏差越来越大
2.
当Dk = 0; => 这次的误差值等于上一次的误差值 => 说明本次相比上次误差没有变化 => 偏差不变
3.
当Dk < 0; => 这次的误差值小于上一次的误差值 => 说明本次相比上次更加接近目标值了 => 偏差越来越小

由于变化率本身反映的就是一种趋势,什么是趋势?趋势就是根据当前的环境去预测以后会发生的事情。因此D微分运算最大的一个作用就是通过误差的变化率去预判在下一个采样时刻系统会有什么样的变化,这样就能提前做出相应的动作,而不是等待温度达到目标值再去关闭PWM

从运算结果可得出以下几个结论:
1.当误差的变化率为0时,系统会不受控制
2.不能单独存在,为什么这样说呢。因为微分是看误差的变化率而不是误差本身。
举个例子,比如下图,目标值假设为100

4次采样,每次采样的偏差值都在变化,而偏差的变化率却一直是2,也就是说Dk=2,微分有输出。那么假设温度就这样很有规律的往上加呢,那是不是当温度到达了100度,微分还会有输出,因为微分可不管你是多少度,只要Ek-Ek-1不等于0我就一直输出。那如果没有P和I的加入,只有微分是不是就会一直加热。因此微分不能单独存在。

3.还有一点很重要,就是微分输出具有超前预判的功能
这一点也很好理解,刚才已经说过Dk是误差的变化率,变化率反映的是一种趋势,那么当Dk > 0时,Dk越大,OUTd就越大,也就是说Dk越远离目标值,我输出就越大,输出越大加热越快,加热越快就会让你越接近目标值,也就是说你上一次里目标越远,我就在下一次输出越大,让你离目标值越近,这就是D微分运算的预判特点。

总结

上面所讲的都是在离散型的系统中才能实现的。就像我们的单片机定时采样一样,他不可能无时无刻的去采样传感器的值,只能定时去采样,但如果这个采样时间很短呢,是不是就可以无限接近连续型系统了。

P与当前误差有关,当前误差大我就输出大,误差小输出小,主要是根据系统当前的状态做出响应;I与系统的累积误差有关,系统过去的总体表现影响现在的输出;D与系统上一时刻的误差变化率有关,根据上一时刻的变化率判断系统下一个采样时刻可能会发生的变化。

P可以提高系统响应时间,I可以消除静态误差,D可以预判系统的变化。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:223481 发表于 2020-12-1 15:36 | 只看该作者
51黑显示有点问题。
原文链接:
https://blog.csdn.net/D_SEngineer?spm=1000.2115.3001.5113
回复

使用道具 举报

板凳
ID:830831 发表于 2020-12-19 10:07 | 只看该作者
讲的真好,这部分至关重要,顶了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表