PID算法的基础知识
PID的含义
控制系统通常根据有没有反馈会分为开环系统和闭环系统,PID是一个闭环控制算法。因此要实现PID算法,必须在硬件上具有闭环控制,就是得有反馈。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。
PID三个部分分别为:
- P:比例环节;
- I:积分环节;
- D:微分环节;
所以PID是比例(P)、积分(I)、微分(D)控制算法。但并不是必须同时具备这三种算法,也可以是PD,PI,甚至只有P算法控制。
我以前对于闭环控制的一个最朴素的想法就只有P控制,将当前结果反馈回来,再与目标相减,为正的话,就减速,为负的话就加速。现在知道这只是最简单的闭环控制算法。
PID算法可以自动对控制系统进行准确且迅速的校正,因此被广泛地应用于工业控制系统。(而且在工业控制系统中,常常是PID算法一招吃遍天下)
开环控制
首先来看开环控制系统,如下图所示,小人蒙着眼,需要走到虚线旗帜所表示的目标位置,由于缺少反馈(眼睛可以感知当前距离和位置,由于眼睛被蒙上没有反馈,所以这也是一个开环系统),最终小人会较大概率偏离预期的目标,可能会运行到途中实线旗帜所表示的位置。
开环系统的整体结构如下所示;
- Input:告诉小人目标距离的直线位置(10米);
- Controller:小人大脑中计算出到达目标所需要走多少步;
- Process:双腿作为执行机构,输出了相应的步数,但是最终仍然偏离了目标;
看来没有反馈的存在,很难准确到达目标位置。
闭环控制
所以为了准确到达目标位置,这里就需要引入反馈,具体如下图所示;
在这里继续举个不怎么恰当的比喻;小人重获光明之后,基本可以看到目标位置了;
- 第一步 Input:告诉小人目标距离的直线位置(10米);
- 第二步 Controller:小人大脑中计算出到达目标所需要走多少步;
- 第三步 Process:双腿作为执行机构,输出了相应的步数,但是最终仍然偏离了目标;
- 第四步 Feedback: 通过视觉获取到目前已经前进的距离,(比如前进了2米,那么还有8米的偏差);
- 第五步 err:根据偏差重新计算所需要的步数,然后重复上述四个步骤,最终小人达到最终的目标位置。
PID系统架构
虽然在反馈系统下,小人最终到达目标位置,但是现在又来了新的任务,就是又快又准地到达目标位置。所以这里小人开始采用PID Controller,只要适当调整P,I和D的参数,就可以到达目标位置,具体如下图所示;
小人为了最短时间内到达目标位置,进行了不断的尝试,分别出现了以下几种情况:
- 跑得太快,最终导致冲过了目标位置还得往回跑;
- 跑得太慢,最终导致到达目标位置所用时间太长;
经过不断的尝试,终于找到了最佳的方式,其过程大概如下图所示;
这里依然举一个不是很恰当的比喻;
- 第一步:得到与目标位置的距离偏差(比如最开始是 10米,后面会逐渐变小);
- 第二步:根据误差,预估需要多少速度,如何估算呢,看下面几步;
P(比例)
比例控制规律P:采用P控制规律能较快地克服扰动的影响,它的优点在于输出值较快,但不能很好稳定在一个理想的数值,不良的结果是虽较能有效的克服扰动的影响,但有余差出现。它适用于控制通道滞后较小、负荷变化不大、控制要求不高、被控参数允许在一定范围内有余差的场合。如:金彪公用工程部下设的水泵房冷、热水池水位控制;油泵房中间油罐油位控制等。
P比例则是给定一个速度的大致范围,满足下面这个公式:
- Kp——比例系数
- e(t)——偏差
说明其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
比例作用相当于某一时刻的偏差(err)与比例系数Kp的乘积,具体如下所示
绿色线为上述例子中从初始位置到目标位置的距离变化; 红色线为上述例子中从初始位置到目标位置的偏差变化,两者为互补的关系;
I(积分)
I(积分)则是误差在一定时间内的和,满足以下公式;
- Ki——积分系数
- e(t)——偏差
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入"积分项"。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到接近于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后几乎无稳态误差。
如下图所示:
红色曲线阴影部分面积即为积分作用的结果,其不断累积的误差,最终乘以积分系数Ki就得到了积分部分的输出;
D(微分)
微分是误差变化曲线某处的导数,或者说是某一点的斜率。所以在微分控制中,控制器的**输出与输入误差信号的微分(即误差的变化率)**成正比关系。
- Kd——微分系数
- e(t)——偏差
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用, 其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化"超前",即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入 “比例"项往往是不够的,比例项的作用仅是放大误差的幅值,而需要增加的是"微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
从图中可知,当偏差变化过快,微分环节会输出较大的负数,作为抑制输出继续上升,从而抑制过冲。
比例、积分好微分的比较
比例,反应系统的基本(当前)偏差e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;
积分,反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差;
微分,反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。
积分和微分都不能单独起作用,必须与比例控制配合。
比例积分控制规律(PI):在工程中比例积分控制规律是应用最广泛的一种控制规律。积分能在比例的基础上消除余差,它适用于控制通道滞后较小、负荷变化不大、被控参数不允许有余差的场合。如:在主线窑头重油换向室中F1401到F1419号枪的重油流量控制系统;油泵房供油管流量控制系统;退火窑各区温度调节系统等。
比例微分控制规律(PD):微分具有超前作用,对于具有容量滞后的控制通道,引入微分参与控制,在微分项设置得当的情况下,对于提高系统的动态性能指标,有着显著效果。因此,对于控制通道的时间常数或容量滞后较大的场合,为了提高系统的稳定性,减小动态偏差等可选用比例微分控制规律。如:加热型温度控制、成分控制。需要说明一点,对于那些纯滞后较大的区域里,微分项是无能为力,而在测量信号有噪声或周期性振动的系统,则也不宜采用微分控制。如:大窑玻璃液位的控制。
比例积分微分控制规律(PID):PID控制规律是一种较理想的控制规律,它在比例的基础上引入积分,可以消除余差,再加入微分作用,又能提高系统的稳定性。它适用于控制通道时间常数或容量滞后较大、控制要求较高的场合。如温度控制、成分控制等。
鉴于D规律的作用,我们还必须了解时间滞后的概念,时间滞后包括容量滞后与纯滞后。
其中容量滞后通常又包括:测量滞后和传送滞后。测量滞后是检测元件在检测时需要建立一种平衡,如热电偶、热电阻、压力等响应较慢产生的一种滞后。而传送滞后则是在传感器、变送器、执行机构等设备产生的一种控制滞后。
纯滞后是相对与测量滞后的,在工业上,大多的纯滞后是由于物料传输所致,如:大窑玻璃液位,在投料机动作到核子液位仪检测需要很长的一段时间。
比例系数Kp、积分系数Ki、微分系数Kd对系统的影响
综上,Kp、Ki、Kd,分别增加其中一项参数会对系统造成的影响总结如下表所示。
理论基础
上面扯了这么多,无非是为了初步理解PID在负反馈系统中的调节作用,下面开始推导一下算法实现的具体过程;PID控制器的系统框图如下所示;
因此不难得出输入e(t)和输出u(t)的关系:
Kp是比例增益; Ki是积分增益; Kd是微分增益。
离散化
PID算法-增量(详细)
在数字系统中进行PID算法控制,需要对上述算法进行离散化;假设系统采样时间为△t 则将输入e(t)序列化得到:
将输出u(t)序列化得到:
比例项:
积分项:
微分项:
所以最终可以得到下式,记为(1),也就是网上所说的位置式PID:
u(k)为实际输出,位置式 PID 需每次计算 u(k) 的实际值,并将 0时刻到 k时刻的所有状态值存储。可见,实现该式内存占用庞大,当计算机出现故障时会引起控制量的大幅度震动,从而可能带来不必要的损失。
将式(1)再做一下简化:
最终得到增量式PID的离散公式如下:
△u(k)为相邻两次采样间隔内控制量的差,这样,从前一时刻开始,当前的控制量就只与e(k -1) 、e(k -2)和e(k)有关。在计算机上实现控制时,也仅需将上述三个数据存储,便可得出控制器输出值。与此同时,其不会累积偏差,避免引起积分饱和。因此,增量式在实际情况中应用较为广泛。
PID算法流程
Kp,Ki,Kd三个参数的设定是PID控制算法的关键问题。一般说来编程时只能设定他们的大概数值,并在系统运行时通过反复调试来确定最佳值。因此调试阶段程序须得能随时修改和记忆这三个参数。
参数的自整定:在某些应用场合,比如通用仪表行业,系统的工作对象是不确定的,不同的对象就得采用不同的参数值,没法为用户设定参数,就引入参数自整定的概念。实质就是在首次使用时,通过N次测量为新的工作对象寻找一套参数,并记忆下来作为以后工作的依据。
总之,控制规律的选用要根据过程特性和工艺要求来选取,决不是说PID控制规律在任何情况下都具有较好的控制性能,不分场合都采用是不明智的。如果这样做,只会给其它工作增加复杂性,并给参数整定带来困难。当采用PID控制器还达不到工艺要求,则需要考虑其它的控制方案。如串级控制、前馈控制、大滞后控制等。
PID算法的基础知识相关推荐
- 机器学习算法的基础知识
机器学习算法的基础知识 1.评估指标 2.偏差与方差(过拟合与欠拟合) 3.正则化(解决过拟合) 4.梯度下降算法(算法优化方式) 5.数据不平衡 1.评估指标 预测值 0 1 实际 0 TN FP ...
- 菜鸟学算法一基础知识篇
菜鸟学算法<一>知识准备篇 刚刚上任,急着给兄弟们一点见面礼,嘿嘿 前言:论坛上有关算法分析的文章不少,也不少精品 但对于刚学CARACK来说,只是叹为观止 原因如下: 1.论坛高手如云, ...
- 数据结构基础:算法的基础知识笔记
1.算法的概念 算法是问题求解过程中的精确描述,它为解决某一特定类型的问题规定了一个运算过程. 2.算法的特点 2.1 有穷性 一个算法必须在有穷的步骤结束后结束,并且每一步都在有穷时间内完成. 2. ...
- TCP系列39—拥塞控制—2、拥塞相关算法及基础知识
原文:https://www.cnblogs.com/lshs/p/6038722.html 一.拥塞控制的相关算法 早期的TCP协议只有基于窗口的流控(flow control)机制而没有拥塞控制机 ...
- 数据结构之栈,栈是很多算法的基础知识,本文带你从0开始了解栈并手写一个栈
栈(Stack) 一.目录 1.栈的基本介绍 2.栈的相关术语 3.栈的特点 4.栈实现的基本思路 5.栈的图解 6.数组实现栈的原码 7.栈的应用 二.正文 1.栈的基本介绍 栈的英文为Stack, ...
- 数据结构与算法学习——基础知识(一)
数据结构与算法 线性结构和非线性结构 基本概念 线性结构 非线性结构 稀疏数组 基本概念 稀疏数组的处理方法 举例说明 应用实例 代码实例 队列 基本介绍 示意图 数组模拟队列 思路分析 代码实现 数 ...
- 深入理解机器学习——k近邻(kNN,k-Nearest Neighbor)算法:基础知识
分类目录:<深入理解机器学习>总目录 k近邻(k-Nearest Neighbor,kNN)算法是一种常用的有监督学习算法,可以完成分类与回归的任务,其工作机制非常简单:给定测试样本,基于 ...
- 【广告算法】基础知识补充
机器学习在饿了么竞价广告中的实践 - 文西的文章 - 知乎 https://zhuanlan.zhihu.com/p/32020522 校准部分一般采用保序回归校准的方式.-- 需要扩展<保序回 ...
- LabVIEW增量式PID算法控制房间温度变化的简单例子的程序
PID相关的基础知识可以查看我之前写的博客: PID算法的基础知识 基于PID算法的房间温度控制 增量式PID算法控制房间温度变化的简单例子 LabVIEW简单的PID控制程序 前面板
最新文章
- 接受许可协议 将禁用_知识产权小知识|知识产权许可
- rocketmq 几种队列_关于RocketMQ的知识
- pix2pix损失函数理解(精)
- 单例设计模式八种写法
- carbondata 1.1.0安装文档
- 【报告分享】2020海外留学趋势报告.pdf(附下载链接)
- [科研论文]基于W7100的以太网读卡器的设计与实现
- ES6学习笔记四(数组)
- 网络请求返回数据格式_原生 Ajax 详解 - 响应数据格式
- Google退出中国的影响分析
- 多模块项目提示“Module ** must not contain source root **. The root already belongs to module **”的解决办法
- python的快捷键是什么意思_Python基础知识—快捷键
- 你真的会搜索资源吗?我来把我的资源搜索心得告诉你...
- 8:操作模式1-boot mode
- 计算机鼠标由传感器来监视,2020年人教版九年级物理全册:16.4“变阻器”过关检测练习题D卷...
- 5、JVM分代模型--新生代 的垃圾回收
- Sentinel系列之热点限流
- Internet Download Manager v6.36 Build 3 Final 注册版-IDM下载工具
- Elasticsearch - 搜索引擎Lucene
- Java-泛型的限定通配符
热门文章
- android下usb框架系列文章---(2)Usb mass_storage turn on的过程
- 重启rabbitmq服务
- android+final+框架,使用android快速开发框架afinal 开发android应用程序
- 性能测试指标及优化方案
- python学习笔记 day43 修改密码
- Python 图片色彩转为回忆中的色彩(附代码) | Python工具
- 30张设计师的手绘网页草图(原型图/框架图)
- 沉默的螺旋理论(转载)
- csdn设置自己的博客代码和博客的背景颜色
- T2VLAD: Global-Local Sequence Alignment for Text-Video Retrieval