首页 > 其他分享 >系统理解PID控制,这篇文章就够了,通俗易懂!

系统理解PID控制,这篇文章就够了,通俗易懂!

时间:2023-08-07 14:44:17浏览次数:37  
标签:误差 0.5 PID 通俗易懂 Kp 就够 如图 我们

  在我们实际工作经常会用到PID控制系统,但是对这个PID到底是什么?该如何调节,我们相信大家都比较头痛。但是今天,我们就用大白话的方式给大家讲讲PID。

一、PID应用场景

  其实不管是在自动化行业还是在生活中,我们都或多或少都会接触PID。比如空调系统、定速巡航系统、恒压供水系统(如图1)上都可以见到PID的影子。在这些系统中,最大的一个特点就是我们需要设定一个我们想要的数据,然后设备就根据我们的设定,自动进行调节。

  比如:在恒压控制系统中,设定一个压力(10MPa),那么这个系统就需要稳定在我设定的压力值10MPa左右;在空调系统中,我们设定好了一个温度(26℃)之后,我们当然希望室内的温度就一直稳定在26℃左右嘛。在我们设定好了参数之后,设备如何自动调节呢?就是通过PID功能进行调节的!

二、PID控制系统

  在PID各参数的作用之前,我们先宏观来了解一下PID控制系统。如图2所示,一个完整的PID系统中主要由以下几部分组成:给定环节、控制器、执行机构、被控对象、反馈环节。

  我们逐个来说明每个环节的作用。为了说明这些环节的作用,我们举一个生活的例子:

  现在我们接到一个任务,需要骑一辆自行车沿着直线走1000米。那么直线走1000米就是“给定环节”了,因为我预先就知道了需要走多少米距离并且走的是直线。骑车的是“人”,人由大脑控制,那么大脑就是“控制器”了,大脑不能直接控制车辆,然后大脑发命令的方式去控制我们的手和脚从而控制自行车,那么手和脚就是“执行机构了”,而最终我们控制的是自行车,那么自行车就是“被控对象”了。那么在骑车的过程中,可能会出现一阵风或者路上出现石头或者坑等,那么这些石头或者坑呢,就是“扰动”。我们在走直线的过程中,到底有没有沿着直线走呢?我们可以通过眼睛看,那么眼睛把自行车的信息收集起来(是否走歪了),这个过程就是“反馈环节”。仅仅知道是否走歪了还不行,需要及时调整,如何调整呢?就是通过预期设定(给定环节)与实际路线(反馈环节)相比较,得到的差值进行修正。

  那么把生活中的这个例子应用到工业中来,其实是非常类似的。如图4所示是:恒液位控制系统。我们通过触摸屏设置水池里需要到达的液位高度,当PLC接到我们设置的命令之后,通过传感器反馈实际的液位高度与我们设定的液位高度相比较,得到差值。如果低于我们设定的液位值,则驱动变频器带动水泵往水池里加水,当高于我们设定的液位值,变频器则停止加水。

三、PID三个参数的作用

我们了解了PID控制系统是怎么回事之后,再来了解PID这三个参数的作用就会相对简单了。首先我们从全局的眼光来看这个公式,如图3所示:

①u(t) :输出曲线,pid输出值随时间的变化曲线。也就是最终输出信号的大小。

②Kp:比例系数。这个系数由人为给定,可以大也可以小,我们要调节PID参数的话,Kp这个系数尤为重要。

③e(t) :偏差,设定值与实际值的偏差。

④Ti:积分时间。

⑤Td:微分时间。

  在图3这个公式中,其中u(t)和e(t)是比较好理解的,剩下的就是Kp、Ti、Td参数,这三个参数正是我们需要人为调节的(当然,很多设备也有自动调节的功能,比如PLC就有自动整定这三个参数的功能)。但是在这个公式中,我们可以得到几个结论。

第一个就是:当e(t)为0则整个PID结果为0,也就是偏差为0时,PID没有输出,从而说明了PID输出一定是需要有偏差的;

第二:P+I+D的结果等于u(t)。

01比例系数:Kp

比例调节就是根据当前的值与目标值的差值,乘以了一个Kp的系数,来得到一个输出值,这输出值直接影响了下次当前值的变化。公式为:U(t)=Kp*e(t)

举例:(1) 如图4所示,有个水池,需要时刻保持1m的高度,目前水桶里有0.2m的水。

  那么采用P(比例)的方法加水:即每次测量与1m的误差,并加入与误差成比例的水量,比如设Kp=0.5:

第一次,误差是1-0.2=0.8m,那么加入水量是:Kp*0.8= 0.4mm,

第二次,误差是1-0.6 =0.4m那么加入水量是:Kp*0.4=0.2m。

  按照此种方式,我们加若干次水,然后绘制成表格(如图5)及曲线图(如图6)。我们可以看到加到了第8次水之后,基本上就没有误差,基于误差的输出也只有0.00313。而从图6的曲线图也可以看到,从第6次开始,水位基本上就是趋于稳定的。那么,这不正是我们想看到的结果吗?预期是需要保持1m的高度,加了8次水刚好就到了1m左右。但是在实际的工程中,可能是一边放水,一边往水池里加水。如图4所示,如果说有人把水池的水龙头打开了一边加水一边放水,还是加8次水就刚好到了1m的位置吗?

  我们一起来分析一边放水一边加水的这种情况。有个水池下面安装了水龙头,仍需保持1m 的高度,目前水桶里有0.2m 的水,但每次加水都会流出0.1m。

我们仍然设Kp=0.5

第一次:误差是 1-0.2=0.8m,那么加入水量是 Kp*0.8=0.4m.最终水位时是0.4+0.2-0.1=0.5

第二次:误差是1-0.5 =0.5mm 那么加入水量是 Kp*0.5=0.25m,最终水位是0.5+0.25-0.1=0.65

  我们按照这种方式推算,绘制成表格(如图7)及曲线图(如图8)。从表格和曲线中可以看到,从第6次开始水位基本上稳定在0.79左右,也就是水再也上不去了,这其实也很好理解,因为每次加的水量基本上等于流出的水量(0.1m),所以水位基本上就没上升,也没下降。那么这种情况呢,就叫做稳态误差,这也就是比例调节的不足,需要积分参数来弥补。当然,有的人会提出,那是不是把Kp这个参数往大了调,是不是就可以让水时刻稳定在1m的位置呢?

  为了验证,我们把Kp修改成2,而不再是0.5了,那这个表格(如图9所示)和曲线(图10所示)。可以看到比例控制引入了稳态误差,且无法消除。比例常数增大可以减小稳态误差,但如果太大则引起系统震荡,不稳定。

02积分系数:Ki

  为了消除稳态误差, 加入积分,积分控制就是将历史误差全部加起来乘以积分常数。公式为Ki*( e(1)+ e(2)+ e(3)……)。e(1)代表的是第一次误差,e(2)代表的是第二次误差,依次类推。

还是先设Kp=0.5,Ki= 0.3

第一次: 误差为0.8, 比例部分 Kp*0.8=0.4, 积分部分 Ki*(e(1))= 0.24,加入水量u为0.4+0.24=0.64,最终水位0.2+0.64-0.1= 0.74m。

第二次: 误差为0.26,比例部分Kp * 0.26=0.13,积分部分Ki*(e(1)+e(2))= 0.318,加入水量u为 0.13+0.318=0.448,最终水位:0.74+0.448-0.1=1.088m。将推算的数据绘制成表格(如图11)及曲线图(如图12)。从表格及曲线图可以看到,水位第一次到第5次水是有些波动,但是随着积分项发挥作用,水位逐渐趋于稳定在1m左右。这就完美解决了比例项的弊端(存在稳态误差)。

 最后,还是微分参数没有写出来,那如果加入微分项,你觉得这个PID输出曲线是如何变化的呢?欢迎大家评论留言!

标签:误差,0.5,PID,通俗易懂,Kp,就够,如图,我们
From: https://www.cnblogs.com/ybqjymy/p/17611412.html

相关文章

  • Siemens 西门子S7-1200 PID功能组态
    在我们实际工作经常会用到PID控制系统,比如控制恒压供水设备,恒温加热设备等。这些设备使用PLC进行控制时,不仅仅需要编程,还需要设置相关参数(或者说组态)。只有正确设置了相关参数之后,程序编写的才有意义。那么今天我们以西门子1200PLC为例,给大家讲讲如何组态PID功能。在组态......
  • Python:Spider爬虫工程化入门到进阶(1)创建Scrapy爬虫项目
    Python:Spider爬虫工程化入门到进阶系列:Python:Spider爬虫工程化入门到进阶(1)创建Scrapy爬虫项目Python:Spider爬虫工程化入门到进阶(2)使用SpiderAdminPro管理scrapy爬虫项目本文通过简单的小例子,亲自动手创建一个Spider爬虫工程化的Scrapy项目本文默认读着已经掌握基本的Python编程......
  • RabbitMQ进阶——RabbitMQ 重试机制,看这篇就够了
    转:RabbitMQ进阶——RabbitMQ重试机制,看这篇就够了 rabbitmq的两种传值方式 map和byte[]字节数组   ......
  • PID控制的总结 — 概念与参数整定
    前面的文章已经针对PID进行过分析:PID是比例、积分、微分的三种控制方式组合成的控制算法的称谓。在使用PID算法进行控制的时候,难点往往都不是怎么样去用代码实现,而是PID控制器的参数整定。PID参数整定是非常关键的,这些参数的设置影响了PID控制算法的快速性、稳定性。所以正确地理解......
  • The server quit without updating PID file
    root@ubuntu:/usr/local/mysql#./bin/mysql.serverrestartShuttingdownMySQL..*StartingMySQL......*TheserverquitwithoutupdatingPIDfile(/usr/local/mysql-5.7.21-linux-glibc2.12-x86_64/data/ubuntu.pid). [mysqld] prompt=(\u@\h)[\d]>\  ......
  • (通俗易懂)可视化详解多通道 & 多通道输入输出卷积代码实现
    以前对多通道和多通道输入输出的卷积操作不理解,今天自己在草稿纸上画图推理了一遍,终于弄懂了。希望能帮助到大家。多通道可视化一通道的2x2矩阵torch.Size([2,2])相当于torch.Size([1,2,2]),是一通道的2x2矩阵二通道的2x2矩阵torch.Size([2,2,2])代表二通道的2x2矩阵,第一个2表......
  • apiDoc 文档使用指南
    安装安装node.js安装apiDoc,项目根目录下npminstallapidoc-g配置在你的项目根目录下新建apidoc.json文件,该文件描述了项目对外提供接口的概要信息如名称、版本、描述、文档打开时浏览器显示标题和接口缺省访问地址。apidoc.json{"name":"ServiceEbikeAPIs","version":"......
  • C#基础之Response.ContentType响应内容类型[通俗易懂]
    3、设置响应内容类型改为json类型,效果如下  Response.ContentType1、文本格式:html、xml、txtResponse.ContentType=“text/html“;Response.ContentType=“text/xml”;Response.ContentType=“text/plain”;2、图片格式Response.ContentType=“image/jpg”;R......
  • 台积电迎新劲敌,Rapidus横空杀出欲抢2纳米客户 | 百能云芯
    8月2日消息,据台媒报道,台积电2纳米制程劲敌不只大家熟知的三星、英特尔,后面还有追兵,日本芯片国家队Rapidus也计划于2027年量产2纳米芯片,抢台积电客户。值得关注的是,英特尔上周财报会议上也放话,2025年用2纳米、1.8纳米从台积电手中拿回制程技术龙头地位,分析师透露,台积电内部相当紧张......
  • Nginx报错Can't open PID file /var/run/nginx.pid (yet?) after start: No such file
    1.关于报错启动nginx服务发现Systemd中存在报错:Can'topenPIDfile/var/run/nginx.pid(yet?)afterstart:Nosuchfileordirectory2.解决办法2.1查看版本和配置选项信息nginx-V参数看到报错中提到的信息2.2定位问题文件增加启动参数配置发现该文件存......