先进pid控制matlab仿真_直观的读懂什么是PID(附带matlab仿真解读)

0d1be47f883dfd5d5a81cdb5ee46dbf9.png

本文首发自微信公众号“汽车技术馆”!

相信很多做工程的朋友都很熟悉PID的概念,至少会经常听到这个概念,那么这个简称背后所包含的含义是否已经完全理解了呢?如果你已经深刻的理解了,就麻烦看看本文有哪里讲述不对的地方 ,给予指正。如果你还不太清楚这个背后的含义,那么就看看这篇文章能否给你一点启发。

老套的含义

小编觉得,所有讲述PID的文章必定会提到PID的基础概念,P是比例调节,I是积分调节,D是微分调节,所以呢,小编不打算花什么时间在这个上面,因为这些概念并不能帮助大家去理解其真正的含义,我们直接进入下一个环节。

P到底如何起作用?

P 比例作用是对偏差瞬间做出反应,偏差一旦产生,立即产生作用,使其控制量朝减少偏差的方向变化,控制作用的强弱取决于比例系数,比例系数越大,控制作用越强。

ok,是不是还是不好理解?

我们通过一个例子给大家进行说明,比如你要给一壶水进行加热,而加热的装置就是你需要使用PID调节的东西,我们来看一下P是如何起作用的,首先大家要明白,PID三个参数都是常量,一旦确定以后就是固定的,比如在一开始对水加热的时候,水温是25度的常温,而期望达到的温度是60度,此刻温度的偏差是60-25=35度,所以P给加热装置的作用是P乘以这个温度差值,经过一个周期之后,下次调节的时候,温度可能到了30度,那温度的偏差就是60-30=30度,同样P对加热装置起到的作用就是P乘以30,因此越接近目标温度,P的作用越小。我们再反会一开始加热的状态,温度差值35度,当P为1的时候,起到的作用是35*1,而如果P为2呢,起到的作用就是35*2,是不是P的数值越大,其控制作用越强,这就是我们在一开始给出大家的结论描述。

下面我们在matlab的仿真中看一下两者的差异

首先我们使用matlab自带的PID模块快速的建立一个模型

bb6875306af57089aad2036e0f19345e.png

假设一个温度加热的传递函数如模型所示

首先我们设置P=1; I=0; =0

仿真结果如下

26ba7f9e04763e03b16384fbdc54534a.png

然后设置P=2; I=0; D=0

仿真结果如下

8e34e976e75c35dfb498cd6055b37cec.png

然后将两个放在一起做一下对比

34d123650e28d6a826867f19bc156adf.png

蓝色的为P=2的结果,黄色的为P=1的结果

通过结果来看,哪个的调节作用更强?

很明显当P=2的时候的调节作用是强于P=1的时候的。

相信这个概念大家应该理解了吧?如果还有不理解的欢迎留言!

为什么说I是为了解决静态误差?

很对朋友不太理解I的作用,我觉得根本原因在于没有深刻的理解静态误差的概念,所以我们首先来说一说静态误差。

还是沿着之前的例子往下说,我们需要给一壶水进行加热,加热功率的大小就是需要PID调节的东西,大家考虑一下,如果有一个时刻加热的速度正好等于了水的散热的速度,那么水的温度是不是就不会再升高了,如何理解呢?前面我们说了P的作用是和温度差有关的,假设当温度到达了50度,这个时候的温度差值是60-50=10度,此刻P起到的作用就是P乘以10,而这个时候水的散热正好需要10乘以P的功率,再没有I和D的作用的情况下,系统是不是就达到了一个稳态状态,虽然水壶一直被加热但是温度并不会上升,这个时候实际温度到目标温度之间的差值就是静态误差,我们通过一个仿真结果来说明,还是上面的那个结果

5877c6907cc91dc22524df0c69d2e3bb.png

我们看到,当系统处于一个稳定状态的时候,实际的温度和目标的温度之间存在一个稳定的差值,这就是静态误差。

I又是如何起作用的呢?前面我们提到了,从数学概念上来说,I就是积分,积谁呢?积温度偏差的分,只要实际温度和目标温度存在偏差就会把这个偏差进行累加,然后把这个积分后的结果作用到加热设备上。

比如,我们这里随便添加一个积分参数,设置PID参数为

P=1; I=1;D=0

仿真结果如下

e4c7d8e1e7283851d66b50d8ecf5cc68.png

大家看一下,稳定下来后的静态偏差是不是几乎没有了,我们可以和参数为P=1; I=0; D=0的状态做一个对比

f84e08b880f79edc88f283f2ddef67bc.png

黄色的为P=1;I=1;D=0的仿真结果

红色的为P=1;I=0;D=0的仿真结果

是不是很明显?

同样基于这个对比图还可以多理解两个概念:

积分会增加系统的超调量——可以看到,当I=1的时候,实际的温度值明显是要高于I=0的状态的,因为累计的误差起作用了嘛,所以产生的超调肯定会多一些。

积分会增加响应时间——从两条变化曲线是可以看出的,上面的一条到达稳定的时间比下面的一条要长一些,确实是增加了响应时间。

D真的可以预测未来吗?

接下来我们要说一说D的作用,在数学概念里,D是微分,微分有什么样的物理意义?简单来说,就是微小单元的斜率,斜率代表的就是变化速度,还是按照原来的例子,假设温度加热到55度,下一次调节时温度加热到了57度,下下一次温度加热到了58度,那么温度第一次变化了2度,第二次温度变化了1度,因此温度的变化速度是下降的,进而产生的结果就是提高D的调节作用。反之,如果在温度为55度后,下一次调节时温度调节到了56度,下下次调节时温度加热到58度,那么温度第一次变化了1度,第二次变化了2度,因此温度的变化速度是上升的,进而产生的结果是降低D的调节作用。

我们还是仿真一下,设置参数

P=1 ; I =1; D=0.5

仿真结果如下

2f36070d2a0d618ba8403a23c547799c.png

和之前P=1 ; I=1 ; D=0的仿真结果做一个对比

cce9443dfb1a9a7deca464b40ad797e8.png

两个曲线很明显,不需要进行说明了吧!

可以看出,当参数D介入作用以后,明显的遏制了偏差的变化趋势,没有使温度出现明显的超调,而且使得系统快速的达到了目标稳定态。

总结

所以说,总结一句话

P专注于当下,I总结的是过去,D预测未来!

PS:小编之前困惑于PID好久,一直没有比较直观的理解,网上找了一些资料也没有写的特别直白的,多数都是理论性的描述,正好最近小编迷恋于Matlab,顺便也又研究了一下PID,把自己更深刻一点的理解分享给大家,也附带上matlab仿真的结果,更加便于理解,如果有哪里讲的不对的地方还希望高手多多指点,共同进步!感谢!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值