个人网站备案名称,elgg与wordpress对比,先做网站后备案,自己的商品链接怎么弄一、简介
PID即#xff1a;Proportional#xff08;比例#xff09;、Integral#xff08;积分#xff09;、Differential#xff08;微分#xff09;的缩写。也就是说#xff0c;PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。
顾名思义#xff0c;…一、简介
PID即Proportional比例、Integral积分、Differential微分的缩写。也就是说PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。
顾名思义PID控制算法是结合比例、积分和微分三种环节于一体的控制算法它是连续系统中技术最为成熟、应用最为广泛的一种控制算法该控制算法出现于20世纪30至40年代适用于对被控对象模型了解不清楚的场合。实际运行的经验和理论的分析都表明运用这种控制规律对许多工业过程进行控制时都能得到比较满意的效果。PID控制的实质就是根据输入的偏差值按照比例、积分、微分的函数关系进行运算运算结果用以控制输出
二、闭环控制
这里有一个闭环控制与开环控制的概念先说一下最简单的开环控制就是不控制好简单哈哈哈。
1. 开环控制
开环控制就是控制回路不形成环也就是输出没有影响到输入的情况输入只管输入不依赖于输出。
这种情况下可能系统由于外界干扰的等情况导致输出并不是我们预期的输出而是有一些偏差这就不太好了。 粘一个知乎博主的图吧就是如果想走到目标位置由于外界影响走到了实际位置但是因为是开环控制输出并不会在行进过程中影响输入也就是人并不会自动的根据输出来调整走的方向。这样就不太好。
2. 闭环控制
所谓闭环控制就是输出影响输入闭环控制是将输出量直接或间接反馈到输入端形成闭环、参与控制的控制方式。这样的话当输出出现偏差的时候就可以根据偏差来影响输入进而调整下次输出的偏差。从而保持一种稳定情况。 如上图所示假定在时刻T有 输入【input(t)】、输出【output(t)】、误差【err(t) input(t) - output(t)】、PID输出【u(t)】
系统真正的执行是执行的PID的输出值。系统的输出值回到输入的地方与当前时刻的输入进行误差计算进而影响系统的执行过程。像这种输出影响输入的就属于闭环控制。
如果上面开环控制部分如果人的眼睛可以看到系统的执行输出就可以影响人所进行的前进决策从而调整系统的误差。这感觉就像形成了一个闭环控制。
三、PID算法的控制架构 如上图所示就是PID算法的控制架构它主要分为三个部分并且这三个部分都是简单的相加就决定了u(t)。算是很简单的控制算法了。
接下来依次说一下比例控制算法积分控制算法微分控制算法。
四、比例控制算法P
比例控制算法我感觉应该是PID算法中比较核心的部分感觉他是整个PID中的主力至于其他的像积分控制算法和微分控制算法是为了消除误差减少震荡。
如果在某一个环境中如将水倒入水缸中假设水缸的目的水位为1m即r(t)为一个常量D1m
此时水缸为空则当前的目的水位为0m故此时误差e(t)为1m。此时的PID系统只有比例控制算法故u(t)Kp * e(t)假设Kp为0.1故此时u(t)为0.1m将0.1m的水倒进水缸中去。水缸中有了0.1m的水此时的误差就为0.9m故此时需要加入0.09m的水可以想象这里就是一个累加的过程最终终将会将水缸倒满。
在理想状态下其实有比例控制算法就完全可以满足要求但是如果水缸漏水怎么办如每当你放入0.05m的水水缸就漏0.05m的水这就导致最后水缸是永远填不满的并且水缸水位保持固定这就导致了这个误差会是一个稳定值称为稳态误差也就是这个误差通过PID算法计算出来的u(t)完全没有起到作用。 在实际情况中这种类似水缸漏水的情况往往更加常见比如控制汽车运动摩擦阻力就相当于是“漏水”控制机械臂、无人机的飞行各类阻力和消耗都可以理解为本例中的“漏水”
五、积分控制算法I
积分控制算法就是为了消除稳态误差由于积分是从0时刻一直积分到当前时刻 t并且是对e(t)函数进行积分。
在到达节点位置之前e(t)始终是正的也就是它的积分始终是大于0的如果系统存在稳态误差的话由于误差一直不变但是积分变呀积分会一直积下去之前的稳态误差是中和了比例控制算法的值现在有一个一直增长的积分导致每次u(t)的输出也在一直的增大从而稳态误差就被消除了。到最后误差为零了而此时的e(t)也为0了积分也就固定在某一个值了。从而每次的稳态误差就都可以被消除掉。如果到达节点位置之后了也就是冲过了节点的指定位置这时候误差就变为了负的然后由于积分正负可以相减同样可以很好的适应这种情况。
六、微分控制算法D
用了积分控制算法现在可以消除稳定误差了但是考虑下面几种情况
现在的情况是不存在稳态误差但是存在积分控制算法那么问题就出现了当到达了目的位置后哪怕误差已经是0了但是积分控制算法那里还是一个整数导致下一次输出u(t)仍然为一个整数而不是0这样的话就会越过目的位置虽然之后误差就变成了负数又会回落回目的位置但是这样始终是震荡的而不是一直稳定下去。在初始状态下如果Kp或者Ki设置的过大则会导致u(t)的变化幅度过大。
综上在上述情况下加入微分控制就很有必要其实微分控制的作用就是防止幅度过大导致震荡或者超调微分就是为了在输出斜率变的太大之前在系统中引入一个有效的早期修正信号。微分可以防止震荡。
当存在稳态误差的时候由于微分对于常数的求导是0故微分不能解决稳态误差的问题。单独使用意义不大故需要与比例积分共同配合使用构成PD或PID控制。
七、PID算法公式
PID算法公式如下图所示Kp作用于所有的项然后给积分部分再额外配一个系数给微分项再额外配一个系数。 Kp —— 比例增益Kp与比例度成倒数关系 Tt —— 积分时间常数 TD —— 微分时间常数 u(t) —— PID控制器的输出信号 e(t) —— 给定值 r (t) 与测量值之差。 这样再一看这个PID算法是不是就一目了然了呢。
接下来说一下公式推导。
1. 位置式
由于PID算法原型是连续函数这样的一个操作在计算机中怕是不太行所以需要将其离散化。从时刻0开始每隔 △t 时间间隔进行数据采样则会形成下列一系列时间节点
(e0,e1,e2,e3 … ek)
相应的有
(u0,u1,u2,u3 … uk)
则有积分为离散化累加微分为与上一时刻节点的连线斜率
不过不影响理解可以看到对于积分部分和微分部分把 △t 都写成了T然后把Kp都乘了进去 。然后对于以上的式子给他们配一个统一的系数即称积分部分为Ki微分部分为Kd则有如下式子 这样的话就清晰很多了并且离散化的数值有利于计算机实现。
2. 增量式
这时设 △u(k) u(k) - u(k-1) 最终得到的增量式PID的离散公式如下
八、结语
关于PID算法应该是超级简单的下面我贴一个视频演示以及两个我主要参考的博客吧。
PID控制算法原理抛弃公式从本质上真正理解PID控制 简易PID算法的快速扫盲超详细过程推导C语言程序