点击上方“大鱼机器人”,选择“置顶/星标公众号”

福利干货,第一时间送达!

转自知乎: jason

原文链接:https://zhuanlan.zhihu.com/p/74131690

1

目的

PID 的重要性应该无需多说了,这个控制领域的应用最广泛的算法了.

本篇文章的目的是希望通过一个例子展示算法过程,并解释以下概念:

(1)简单描述何为PID, 为何需要PID,PID 能达到什么作用。

(2)理解P(比例环节)作用:基础比例环节。

缺点: 产生稳态误差.

疑问: 何为稳态误差 为什么会产生稳态误差.

(3)理解I(积分环节)作用:消除稳态误差.

缺点: 增加超调

疑问: 积分为何能消除稳态误差?

(4) 理解D(微分环节)作用:加大惯性响应速度,减弱超调趋势

疑问: 为何能减弱超调

(5)理解各个比例系数的作用


好的下面就开始进入正题吧

一: 何为PID以及为何需要PID

以下即PID 控制的整体框图,过程描述为:

设定一个输出目标,反馈系统传回输出值,如与目标不一致,则存在一个误差,PID 根据此误差调整输入值,直至输出达到设定值.


疑问:

那么我们为什么需要PID 呢,比如我控制温度,我不能监控温度值,温度值一到就停止吗?

这里必须要先说下我们的目标,因为我们所有的控制无非就是想输出能够达到我们的设定,即如果我们设定了一个目标温度值,那么我们想要一个什么样的温度变化呢.

比如设定目标温度为30度, 目标无非是希望达到图1 希望其能够快速而且没有抖动的达到30度.

那这样大家应该就明白,如果使用温度一到就停止的办法,当然如果要求不高可能也行,当肯定达不到图1 这样的要求,因为温度到了后余温也会让温度继续升高.而且温度自身也会通过空气散热的.

▲ 图1 系统输出的响应目标

总结: 

我们需要PID 的原因无非就是普通控制手段没有办法使输出快速稳定的到达设定值.

如果你对此感到疑问,我们就开始用一个常用的例子来具体说明吧。

2

举个例子

在开始前,我们需要将我们的公式搬出


咋一看,这个公式挺唬人的.

其实你只要知道微分和积分的基本定义就可以理解.

而且最终我们所有的努力也都是能够理解这个公式,否则再精妙的比喻也无法使你真正的明白和使用.

这里我们将其离散化.(如果这步骤有些太快的话,后面再加入对此的解释)


Kp-------比例常数

Ki= (Kp*T)/Ti------积分常数

Kd=(Kp*Td)/T------微风常数

以下我就通过一个例子具体暂时这个方程是如何工作的。

(1) 小明接到一个任务: 有个水桶,需要时刻保持1m 的高度,目前水桶里有0.2m 的水

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

比如设Kp=0.5.

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

第二次, 误差是1-0.4 =0.6mm 那么加入水量是 Kp*0.6=0.3mm



我们发现这太完美了,那么比例环节就能够完美的解决问题了,可是等等,在下这个结论前,我们看小明的新任务。

(2)小明的新任务: 有个水桶,但桶底漏了个洞,仍需保持1m 的高度,目前水桶里有0.2m 的水,但每次加水都会流出0.1m. 这个例子就接近我们实际工程的例子了,比如电机摩擦的阻力,损耗.。

我们还是来给小明解决问题吧,

第一次仍是使用P (比例控制) u= Kp* e

仍然设Kp=0.5. 则u= 0.5*e

L(最终水位) = 本次输入u 加上上一次水位

第一次,误差是 1-0.2=0.8m。

那么加入水量是 Kp*0.8= 0.4mm.最终水位时是0.4+0.2-0.1=0.5

第二次, 误差是1-0.5 =0.5mm

那么加入水量是 Kp*0.5=0.25mm,最终水位是0.5+0.25-0.1=0.65

▲ 表1


我们发现了问题,水位最终在0.8m 处稳定了,这个也很好理解,当误差是0.2m 时,加水量时0.1,每次加入的刚好等于漏掉的.

这里就引入了稳态误差的概念:即当系统到达稳态时与目标的误差.

那么我们加大Kp呢?


我们发现误差变小了,那我们继续增大吧


我们发现系统开始震荡了.

此处使用excel 折线图,大家可以调节参数观察变化

结论: 比例控制引入了稳态误差,且无法消除.比例常数增大可以减小稳态误差,但如果太大则引起系统震荡,不稳定.

为了消除稳态误差,第二次加入积分,使用PI(比例积分控制)

u= 

积分控制就是将历史误差全部加起来乘以积分常数.

这个式子什么意思呢,为啥就能消除稳态误差呢.

还是先设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,比例部分Kp0.26=0.13,积分部分Kp*(e(1)+e(2))= 0.318,加入水量u为0.13+0.318=0.448.最终水位 0.74+0.448-0.1=1.088m

▲ 表2

我们发现,虽然过程曲折,但是最终可以稳定到设定值了.

如果 加大Ki 呢


此处使用excel 折线图,大家可以调节参数观察变化

3

结论

1 、只要存在偏差,积分就不停的累计,直到误差为0, 积分项不再累加,变成一个常数,可以抵消稳态误差.

大家可以看到表2 中系统稳定后,积分项约是0.1.

2 、引入积分可以消除稳态误差,但会增加超调,且Ki 增大,超调量也增大.

为了消除超调,我们引入微分作用,现在式子变成了

u= 

还是先设Kp=0.5,Ki= 0.5,Kd=0.3

第一次: 误差为0.8, 比例部分 Kp*0.8=0.4, 积分部分 Ki*(e(1))= 0.24,微分部分 =0 (因为没加水前水位差就是0.8) 加入水量u为0.4+0.4=0.8. 最终水位0.2+0.8-0.1= 0.9m

第二次: 误差为0.1,比例部分Kp*0.1=0.5,积分部分Kp*(e(1)+e(2))= 0.45,微分部分为Kd*(e(2)-e(1))加入水量u为 0.5+0.45-0.21=0.29.最终水位 0.9+0.29-0.1=1.09m

▲ 表3


我们发现对比 上面那张Kp= 0.5,Ki=0.5 的图,这张图的震荡减轻了,这正是微分发生了作用,

大家可以看到表3中 当第2次 误差为0.1 时,上一次误差为0.8 时,微分是一个负数,阻止结果快速的变化.

结论: 微分能够减弱超调趋势.

可是,这个波形还是在震荡啊,是的,别忘了,这个值是我随手设置的,我们不能指望我们随便设一个值 就能使 PID 完美的工作起来,如果你自己用excel 模拟一下你就会发现,如果Ki,Kd 设置大些,这个系统会大幅度震荡起来.

因此我们就需要对Kp,Ki,Kd 整定,其实就是试 怎么使输出达到图1 的要求

当然这个例子其实使用PI 就可以了,我们这里是为了理解其作用的原理.

4

 最后

大家好,我是张巧龙,会写一些关于硬件与软件结合的技术文章,若觉得文章对你有帮助,转发分享,也是我们继续更新的动力。

长按识别图中二维码关注

PID算法搞不懂?看这篇文章就够了。相关推荐

  1. 使用分层网络模型的两个优点是什么_从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了...

    从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了​mp.weixin.qq.com 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就 ...

  2. Python-Excel 零基础学习xlwings,看这篇文章就够了

    零基础学习xlwings,看这篇文章就够了 | 一起大数据-技术文章心得 (17bigdata.com) 1.xlwings是什么 2.xlwings安装更新与卸载 3.xlwings详细使用 4.案 ...

  3. 万字心得,PMP学习考试那些事儿,看这篇文章就够了

    声明:文章为原创,首发于知乎,链接:万字长文!PMP考试那些事儿,看这篇文章就够了 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/524966002 以下内 ...

  4. 斗鱼html5插件音画不同步,音画不同步在直播中怎么解决?看这篇文章就够了!...

    原标题:音画不同步在直播中怎么解决?看这篇文章就够了! 什么是音画不同步? 很容易判断,就是画面和声音不匹配. 为什么会音画不同步? 首先我们要明白一个概念,虽然人的肉眼很容易辨别音画是否同步的,但是 ...

  5. Vue开发入门看这篇文章就够了

    摘要: 很多值得了解的细节. 原文:Vue开发看这篇文章就够了 作者:Random Fundebug经授权转载,版权归原作者所有. 介绍 Vue 中文网 Vue github Vue.js 是一套构建 ...

  6. Android 8.0新特性(看这篇文章就够了)

    2019独角兽企业重金招聘Python工程师标准>>> 在刚结束不久的谷歌 I/O2017开发者大会上发布的第二个Android O(安卓8.0)开发者预览,并且向普通用户开放了第二 ...

  7. 好多人都说存储过程很难?认真看这篇文章就够了

    何为存储过程? 存储过程是在数据库管理系统中保存的.预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样. 每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它 ...

  8. python入门书籍推荐,看这篇文章就够,请!

    python入门书籍推荐,看这篇文章就够,请! 事实上,有关python的书籍很多很多,就当当网就有50000件和python有关的书籍,我特地去了当地的新华书店,蹲了大半天,回来给大家推荐,适合想学 ...

  9. java黄油刀_ButterKnife原理解析看这篇文章就够了

    原标题:ButterKnife原理解析看这篇文章就够了 作者:SheHuan https://juejin.im/post/5acec2b46fb9a028c6761628 ButterKnife 算 ...

  10. 文科好应该学计算机哪类专业,文科理科分别适合哪些专业?看这篇文章就够了!...

    原标题:文科理科分别适合哪些专业?看这篇文章就够了! 如何选择一个好的学校 心仪的专业 至关重要 你想好读什么专业了吗? 学计算机就要修电脑? 学机械就是混车间? 男生喜欢什么样的? 女生都报什么专业 ...

最新文章

  1. 无线服务器软件,关于无线802.1x结合各服务器软件的配置总结
  2. jvm性能调优 - 05对象在JVM内存中的分配和流转
  3. python字典赋值方法_python如何给字典的键对应的值为字典项的字典赋值
  4. Live Source Address 2019最新的电视广播包_Arturia MiniLab MkII迷你MIDI键盘2019年换新装:反色纯黑版...
  5. base64图片保存获取本地路径
  6. java源程序可以有几个主类_Java源程序是由类定义组成的,每个程序可以定义若干个类,但只有一个类是主类。_学小易找答案...
  7. 一些简单的前端练习demo
  8. python接口测试_python接口测试—get请求
  9. 使用libjpeg库在LCD上显示图片
  10. c语言从excal读取字符串,C语言操作EXCEL文件(读写)
  11. 解决IIS安装的问题:要求输入用户名和密码
  12. xml文件查看器_万能文件查看器,一个软件打开电脑所有文件
  13. 微信小程序直播功能服务条款 禁止哪些商品
  14. 接口调用频繁限制,接口限制流量
  15. 在centos上安装vmware14
  16. unsigned char,char ,uchar ,UCHAR的区别
  17. 2811: [Apio2012]Guard
  18. 程序员如何留住健康?
  19. burpsuite抓不到本地服务器包的解决方法
  20. 分布式系统课程总结 西电计算机学院

热门文章

  1. 修改Hybris Administration console管理员默认登录密码
  2. how does {accountID} binding work?
  3. SAP S/4HANA product search generated SQL statement的生产原理介绍
  4. when will BOL flag lv_do_reread be set
  5. workaround for COM_ATTRFRG_GEN 066
  6. Action profile: ZAVADDR和ZAVPERS
  7. 动态决定viewarea应该加载哪个view
  8. 一个12年ABAP开发专家和ABAP那些事儿
  9. python函数和模块有什么关键特性_Python学习----第一模块笔记(Python基础知识)...
  10. 传热学环肋肋效率matlab程序,传热学 第二章第四节 通过肋片的导热.pdf