这是学习PID时的理解,做个笔记!

一:首选,说一下一些基本概念,为了更好理解。

PID:就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。

  P(proportion):比例,就是对输入偏差乘以一个系数。

  I(integration):积分,就是对输入偏差进行积分运算。

  D(differentiation):微分,就是对输入偏差进行微分运算。

动态偏差:在调节过程中,被调量和设定值之间的偏差随时间改变,任意时刻两者之间的偏差叫做动态偏差,简称动差。

静态偏差:调节趋于稳定之后,被调量和设定值之间还存在的偏差叫做静态偏差,简称静差。

传递函数:是对线性微分方程在零初始条件下进行拉普拉斯变换得到的。

  与微分方程的相通性:U(S):输入信号的拉普拉斯变换   Y(S):输出信号的拉普拉斯变换

    

  传递函数的两种形式:

    

  闭环传递函数公式:

    

线性系统稳定性充要条件:

    

系统动态性能说明:

  

  a,其中,对于没有震荡的系统,tr指响应从终值10%上升到终值90%所需要的时间。上升时间反应系统的响应速度,上升时间越短,说明系统响应速度越快。

  b,调节时间ts反应系统过渡过程时间的长短。

  c,tr,tp,ts表示控制系统响应的快速性,最大超调量,N反应系统动态过程的平稳性。

  d,控制系统动态过程的平稳性和快速性指标之间往往存在相互制约的关系,例如要想响应速度更快(即tr更小),往往引起系统的超调量加大。相反,如果要保持小幅度的超调,通常也会延长系统的过度时间。

  e,在保持系统不出现大的超调的前提下,尽量提升系统的响应速度,是控制系统设计的主要目标之一。

PID的结构:

  

PID公式:

  

  Kp:比例放大系数

  Ti:积分时间常数

  Td:微分时间常数

对丄式两边取拉普拉斯变换,得到PID控制器的传递函数;

  G(S)=U(S)/E(S)=Kp+Ki/s+Kd*s,其中Td=Kd/kp,Ti=kp/ki。

线性系统稳态误差计算:

  

根轨迹:

  

二,控制效果理解:

被控对象的传递函数:

  

matlab仿真模型:

模型很简单,所以仿真波形就不贴出来了,感兴趣可以自己搭一个,然后看一看。

1,比例控制

  当ki,kd给0时仿真结果:比例系数越大,可以使系统响应速度加快,也会减小静差,但是不能完全消除,同时也会使系统调节时间加长,震荡次数增加,过大还会导致系统不稳定。

  当我们求出上面的模型中,只有比例控制时的系统传递函数时,通过上面的误差求解公式,我们可以得出,增大KP,会减小误差,但不会消除,而且通过画出根轨迹图也可以看出,当K大于18时,系统将变得不稳定。

  下面是根轨迹图:

2,比例微分控制:

  当只有Ki=0时,为比例微分控制。

  仿真结果:微分作用可以提高系统相对稳定性,抑制系统的超调量,加快系统响应速度,但是过大,会使得系统对扰动的抑制能力减弱。

  使用比例为分控制器,系统的开环传递函数相当于在负实轴上增加了零点。附加位置适当的开环零点,可使系统的稳定性和动态性能同时得到显著改善。
3,比例积分控制:

  当Kd=0时,为比例积分控制。

  仿真结果:加入积分,能有效消除系统的静差,加快达到参考值的时间,但是积分作用太强会使系统的超调量加大,甚至使系统出现震荡,对系统的瞬态特性也不利。

  使用比例积分控制器。在给系统增加一个极点之外,也增加了一个位于负实轴的零点。

三,算法实现:

位置式:输出直接为控制量。

增量式:输出的是控制量的增量。

经典pid参数整定方法:

       参数整定找最佳, 从小到大顺序查。
                         先是比例后积分, 最后再把微分加。
                         曲线振荡很频繁, 比例度盘要放大。
                         曲线漂浮绕大弯, 比例度盘往小扳。
                         曲线偏离回复慢, 积分时间往下降。
                         曲线波动周期长, 积分时间再加长。
                         曲线振荡频率快, 先把微分降下来。
                         动差大来波动慢, 微分时间应加长。
                         理想曲线两个波, 前高后低四比一。
                         一看二调多分析, 调节质量不会低。

 

一窍懂PID的更多相关文章

  1. 一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

      PID控制应该算是应用非常广泛的控制算法了.小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制.这里我们从原理上来理解PID控制. PID(proportion ...

  2. PID算法原理 一图看懂PID的三个参数

    找了好久这一篇算是很容易看懂的了  推荐给大家   写的十分清楚   原文作者DF创客社区virtualwiz LZ以前有个小小的理想,就是让手边的MCU自己"思考"起来,写出真正 ...

  3. 漫谈PID——实现与调参

    闲话: 作为一个控制专业的学生,说起PID,真是让我又爱又恨.甚至有时候会觉得我可能这辈子都学不会pid了,但是经过一段时间的反复琢磨,pid也不是很复杂.所以在看懂pid的基础上,写下这篇文章,方便 ...

  4. PID算法知识点博文收藏记录

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

  5. 对while((pid = waitpid(-1, &stat, WNOHANG)) > 0)不懂的地方,现在懂了

    while((pid = waitpid(-1, &stat, WNOHANG)) > 0) 需要写到信号处理函数中,假如有10个子进程 只要父进程能够收到最后一个信号,就能把前面丢失的 ...

  6. 手把手教你看懂并理解Arduino PID控制库——引子

    介绍 本文主要依托于Brett Beauregard大神针对Arduino平台撰写的PID控制库Arduino PID Library及其对应的帮助博客Improving the Beginner’s ...

  7. 怎样看懂Oracle的执行计划

    怎样看懂Oracle的执行计划 一.什么是执行计划 An explain plan is a representation of the access path that is taken when ...

  8. 一篇文章教你读懂Makefile

    makefile很重要      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professiona ...

  9. PID控制器的数字实现及C语法讲解

    PID控制器的数字实现及C语法讲解 概述 为方便学习与交流,根据自己的理解与经验写了这份教程,有错误之处请各位读者予以指出,具体包含以下三部分内容: (1)  PID数字化的推导过程(实质:微积分的近 ...

随机推荐

  1. VS 提示对象被多次指定;已忽略多余的指定

    最近有一个工程编译老是出现这个问题,网上的解决方案说是工程目录下有同名的源文件,所以编译出了同名的obj.然而我检查了一下并没有.经尝试,把所有文件从项目中移除再重新添加进来就行了..应该是因为我反复 ...

  2. 【SVN】关于提交代码时的问题

    将项目上传到SVN弹出框提示One added/edited TODO item was found. Would you like to review it? 然后百度说这样解决: 造成这个原因是因 ...

  3. 电话号自动识别之bug解决汇总

    今天测试一个defect: “联系我们”页显示的电话号码,在不同浏览器显示效果不统一,有些浏览器自动识别电话号码并强制添加了样式. 网络搜索发现,其它website 也有类似问题,例如:http:// ...

  4. myhaits if test判断字符串

    判断参数是否为字符串0 <if test='Type=="0"'><!-- 注意单双引号 --> <include refid="selec ...

  5. aop point-cut表达式

    好多博客写的云里雾里,大多都有一点毛病.大家还是以官网为准 @官网文档 官网截图 modifiers-pattern:修饰符 ret-type-pattern:方法返回类型 declaring-typ ...

  6. python字符串的魔法

    *首字母大写test="aslf"v=test.capitalize()print(v) *所有字母变成小写test="QWFDE"v=test.casefol ...

  7. crm开发之用户重置密码

    重置 密码这这功能. 我是没有在,stark组件中. 内置的.所以需要,自己进行定制.也就只是,在已有的增删改查的基础上,再增加一条url  和相对应的  视图函数. 好的是, 我已经预留了,增加的接 ...

  8. go语言学习逻辑运算符if判断,iota的理解

    第一天学习go语言,首先吐槽一下,配置go语言浪费了我两个小时的时间 不是在百度,就是在百度的路上,这里介绍一下我的go语言的版本和开发平台 go语言1.12版本,之前没有用过在早的版本了首先记录一下 ...

  9. Lonsdor K518ISE SCION 2011-2018 Models Enabled!

    Lonsdor released the Lonsdor K518ISE Key Programmer update announcement on 14-03-2019, saying it can ...

  10. g++ 学习笔记

    gcc and g++分别是GNU的c & c++编译器.gcc/g++在执行编译的时候一般有下面4步: 1 预处理,生成.i的文件. 命令如下:g++ -E  test.cpp 此命令只进行 ...