PID控制算法总结

PID控制算法总结当今的闭环自动控制技术都是基于反馈的概念以减少不确定性。反馈理论的要素包括三个部分:测量、比较和执行。测量关键的是被控变量的实际值,与期望值相比较,用这个偏差来纠正系统的响应,执行调节控制。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。一、PID含义PID是英文单词比例(Proportion),积分(Integral),微分(Di…

大家好,又见面了,我是你们的朋友全栈君。

当今的闭环自动控制技术都是基于反馈的概念以减少不确定性。反馈理论的要素包括三个部分:测量、比较和执行。测量关键的是被控变量的实际值,与期望值相比较,用这个偏差来纠正系统的响应,执行调节控制。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。

 

一、 PID含义

PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写。PID调节实际上是由比例、积分、微分三种调节方式组成,它们各自的作用如下:

 

比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。

 

积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。

 

微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器

 

二、公式

PID控制算法在实际应用中又可分为两种:位置式PID控制算法和增量式PID控制算法。控制理论上两者是相同的,但在数字量化后的实现上会存在差别

 

2.1 位置式数字 PID 控制

 k 采样时刻的离散 PID 表达式:

https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D652/sign=cc06f8a04136acaf5de095f94edb8d03/35a85edf8db1cb134ebd878ad754564e93584b56.jpg

上式中,Ki=Kp/TiKd=Kp*TdT 为采样周期,k 为采样序号,k=1,2,…e(k-1)e(k)分别为第(k-1)和第 k 时刻所得到的系统偏差信号。

 

2.2增量式 PID 控制

增量式 PID 控制是指控制器的输出是控制量的增量Δu(k),当执行机构需要的是控制量的增量而不是位置量的绝对数值时,可以使用增量式 PID 控制算法进行控制。

 

https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D494/sign=77f5b4b69fcad1c8d4bbfd2e4b3f67c4/aa18972bd40735faa176ea2094510fb30e2408a0.jpg

 

式中,Ki=Kp/Ti,Kd=Kp*Td,T 为采样周期,k 为采样序号,k=1,2,…,e(k-2)、e(k-1)以及 e(k)分别为第(k-2)、第(k-1)和第 k 时刻所得到的系统偏差信号。

 

三、采样周期和控制周期

PID控制算法总结

 

四、C语言描述PID算法程序

PID控制算法总结

 

4.1增量型PID的C语言实现

PID控制算法总结

 

PID控制算法总结

 

4.2 位置型PID的C语言实现

PID控制算法总结

PID控制算法总结

 

五、PID调试

由于自动控制系统被控对象的千差万别,PID的参数也必须随之变化,以满足系统的性能要求。这就给使用者带来相当的麻烦,特别是对初学者。下面简单介绍一下调试PID参数的一般步骤:

 

5.1负反馈

自动控制理论也被称为负反馈控制理论。首先检查系统接线,确定系统的反馈为负反馈。例如电机调速系统,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。其余系统同此方法。

 

5.2.PID调试一般原则

a.在输出不振荡时,增大比例增益P。 
b.在输出不振荡时,减小积分时间常数Ti。 
c.在输出不振荡时,增大微分时间常数Td。 
  

5.3.位置式PID调节

a.确定比例增益P 
  确定比例增益P 时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。

  b.确定积分时间常数Ti 
  比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。

  c.确定微分时间常数Td 
  积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。

 

d.系统空载、带载联调,再对PID参数进行微调,直至满足要求。 

5.4 增量式pid调节

增量式pid调节目标速度时候参数整定:

        先加大KI,这时候会越来越接近实际速度,当KI过大的时候,在切换目标速度的时候,就会抖动,这时候就是KI大了响应速度高了,但导致超调量增加,这时候就加大增量式的KP,来缓减抖动,减小超调量。

(注:网上大多资料都是错的,把增量式跟位置式混为一谈)

 

 

六、PID常用口诀

参数整定找最佳,从小到大顺序查 

先是比例后积分,最后再把微分加 

曲线振荡很频繁,比例度盘要放大 

曲线漂浮绕大湾,比例度盘往小扳 

曲线偏离回复慢,积分时间往下降 

曲线波动周期长,积分时间再加长 

曲线振荡频率快,先把微分降下来 

动差大来波动慢。微分时间应加长 

理想曲线两个波,前高后低4比1 

一看二调多分析,调节质量不会低 

 

 

 

 

参考文献:

https://blog.csdn.net/Uncle_GUO/article/details/51367764

https://wenku.baidu.com/view/5ebd4893240c844768eaee1c.html

https://wenku.baidu.com/view/ee44725d9a6648d7c1c708a1284ac850ad02049c.html?rec_flag=default&sxts=1553696871419

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145193.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月12日 下午11:40
下一篇 2022年5月12日 下午11:40


相关推荐

  • sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法「建议收藏」

    sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法「建议收藏」今天部署一个asp老项目,在用MSSQL数据库备份文件还原数据库时,发生了问题。提示:sql2008备份集中的数据库备份与现有的xxx数据库不同。百度找到了这篇文章:sql2008备份集中的数据库备份与现有的xxx数据库不同解决方法但我和他重现问题的步骤不一样,他是以文件和文件组的方式还原出现了问题,而我是以数据库的方式还原出现了问题。换句话说,他的解决方案里的步骤就是我出错的步骤,如图:…

    2022年5月13日
    51
  • laravel 博客项目部署到Linux系统后报错 权限都设置为777,仍然报错没有权限

    laravel 博客项目部署到Linux系统后报错 权限都设置为777,仍然报错没有权限

    2021年10月27日
    61
  • java中的scanner是什么_java中的Scanner类是什么?如何使用?「建议收藏」

    java中的scanner是什么_java中的Scanner类是什么?如何使用?「建议收藏」java中的Scanner类是什么?如何使用?发布时间:2020-05-2016:36:48来源:亿速云阅读:204作者:鸽子Scanner类介绍java.util.Scanner是Java5的新特征,可以通过Scanner类来获取用户的输入。创建Scanner对象的基本语法:Scanners=newScanner(System.in);实例:接下来我们演示一个最简单的数据…

    2022年7月8日
    24
  • 两周搞定计算机专业毕业设计,附源码+论文+答辩

    两周搞定计算机专业毕业设计,附源码+论文+答辩毕设+论文+答辩通关法则,看这一篇,源码都在下面了!写在前面,尽管论文方法和毕设源码都有,但还是要看课+自己敲完完善好。做好充分准备面对答辩。文章目录一、毕设二、论文2.1论文标题2.2确定论文大纲2.3论文内容2.3.1文科找文献:2.3.2论文摘要2.3.3绪论2.3.4论文内容2.4论文查重三、答辩3.1论文答辩前的准备3.2论文答辩现场对弈一、毕设毕设直通车《黑马智慧物业毕业设计》【毕设项目】01网上购物商城(前端+后端+云部署)【毕设项目】02网上购物商城(前端

    2022年7月26日
    12
  • Mechanize模拟浏览器

    Mechanize模拟浏览器简介 Mechanize 是一个 Python 模块 用于模拟浏览器 该模块能够处理网页登录所要求的用户名 密码 验证码 该模块的具体用法如下使用方法一 importmechan 导入模块 br mechanize Browser br set handle equiv True br set handle redirect True br set handle referer T

    2026年3月20日
    2
  • OPNsense用户手册-缓存代理「建议收藏」

    OPNsense配备了功能齐全的正向缓存(透明)代理。缓存代理通过缓存对频繁请求的网页减少带宽使用并缩短响应时间。访问控制列表可用于用户身份验证和/或(基于类别)Web过滤器。功能包括:多接口支持透明模式(包括SSL/HTTPS)ICAP支持反病毒/恶意软件引擎HTTP代理FTP代理用户认证访问控制列表(对http(s)和ftp都有效)黑名单基于类别的Web过滤可以与流…

    2022年4月6日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号