备赛电赛学习软件篇(一):PID算法(1)

目录

一、简介

二、控制系统种类

1、开环控制系统

2. 闭环控制

1、概述

3、闭环控制种类

三、PID算法的控制架构

四、比例控制算法(P)

五、积分控制算法(I)

六、微分控制算法(D)

七、PID算法公式

1. 位置式

2. 增量式

八、如何去调PID

1、网上的口诀

2、理论调参

​编辑

九、其余控制知识

1、积分限幅

 2、积分分离

3、微分先行


一、简介

PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。

二、控制系统种类

1、开环控制系统

开环控制,就是控制回路不形成环,没有反馈,也就是,输出没有影响到输入的情况,输入只管输入,不依赖于输出。

这种情况下,可能系统由于外界干扰的等情况,导致输出并不是我们预期的输出,而是有一些偏差,比如行进的小车遇到石子等,

在这里插入图片描述

粘一个知乎博主的图吧,就是如果想走到目标位置,由于外界影响走到了实际位置,但是因为是开环控制,输出并不会在行进过程中影响输入,也就是人并不会自动的根据输出来调整走的方向。这样就不太好。

2. 闭环控制

1、概述

所谓闭环控制,就是输出影响输入,闭环控制是将输出量直接或间接反馈到输入端形成闭环、参与控制的控制方式。这样的话,当输出出现偏差的时候,就可以根据偏差来影响输入,进而调整下次输出的偏差。从而保持一种稳定情况。

如上图所示,假定在时刻T有:
输入【input(t)】、输出【output(t)】、误差【err(t) = input(t) - output(t)】、PID输出【u(t)】

系统真正的执行是执行的PID的输出值。系统的输出值,回到输入的地方,与当前时刻的输入进行误差计算,进而影响系统的执行过程。像这种输出影响输入的,就属于闭环控制。

如果上面开环控制部分:如果人的眼睛可以看到系统的执行输出,就可以影响人所进行的前进决策,从而调整系统的误差。这感觉就像形成了一个闭环控制。

3、闭环控制种类

(1)、单闭环

(2)、双闭环控制

三、PID算法的控制架构

在这里插入图片描述

如上图所示,就是PID算法的控制架构,它主要分为三个部分,并且这三个部分都是简单的相加就决定了u(t)。算是很简单的控制算法了。

接下来依次说一下:比例控制算法,积分控制算法,微分控制算法。

四、比例控制算法(P)


比例控制算法,我感觉应该是PID算法中比较核心的部分,感觉他是整个PID中的主力,至于其他的像积分控制算法,和微分控制算法,是为了消除误差,减少震荡。

如果在某一个环境中,如将水倒入水缸中,假设水缸的目的水位为1m,即r(t)为一个常量D=1m,

此时水缸为空,则当前的目的水位为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)

用了积分控制算法,现在可以消除稳定误差了,但是考虑下面几种情况:

1、现在的情况是不存在稳态误差,但是存在积分控制算法,那么问题就出现了,当到达了目的位置后,哪怕误差已经是0了,但是积分控制算法那里还是一个整数,导致下一次输出u(t)仍然为一个整数,而不是0,这样的话,就会越过目的位置,虽然之后误差就变成了负数,又会回落回目的位置,但是这样始终是震荡的,而不是一直稳定下去。
2、在初始状态下,如果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

1、网上的口诀

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

2、理论调参

1、先从小到大调Kp使响应时间加快,并使曲线较贴合理想值。

2、因为有稳定误差所以要调Ki,从小到大,但不要震荡太大

3、调Kd为了减小震荡,但是不能太大,否则响应时间太长 

九、其余控制知识

1、积分限幅

例子:无人机在开始飞时被别人按住,导致误差一直维持最开始很大的值,这就会导致PID中的I很大,就会产生一个很大的震荡(假设采样时间间隔1s,理想值100,无人机拿在手里10s,积分就会产生1000的升力值且会随着后面误差一直积累,控制紊乱),所以会在程序里设定一个最大幅值。

 2、积分分离

在PID的实际应用过程中,总会产生理想值设置过大从而导致误差过大引起强烈震荡的情况(P部分和I部分给的值太大导致刹不住车),所以我们会在程序里加上如果误差超过某个阈值,那么就不让I部分的算法起作用,即积分分离。

3、微分先行

微分控制作用是与偏差的变化速度成正比的,不论设定值或测量值的突然变化,微分控制作用十分猛烈。因此,采用通常的PD或PID算法时,设定值的调整必须比较和缓。为了不受这种限制,可以只对测量值起微分作用,而测量值一般是不会突然变化的。 

  • 7
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
增量式PID控制是一种常用的控制方法,特别适用于电赛等竞赛项目中。在增量式PID控制中,控制量是通过叠加增量来实现的,其中积分项是核心。增量式PID控制的积分项是通过叠加的方式实现的,而位置式PID控制的积分项就是单独的积分项。在电赛中,如果想要实现滚球或小车定点控制,只需要使用PD控制就足够了。对于速度控制,需要使用PI控制,通过调节PWM来实现速度的调节。在增量式PID控制中,PWM是一个中间量,通过目标值和实际测量值之间的差异经过PI控制器来调节PWM的增加或减少,最终目的是使设定值和实际测量值相等。此外,还需要注意限制PWM在一定范围内,以避免PID调节效果不理想。[1] 在电赛中,常见的直流减速电机采用的是增量式编码器,如光电编码器或霍尔编码器。这些编码器会产生一对正交的脉冲信号,通过解读这对正交信号,我们可以得到所需的信息。幸运的是,许多微控制器都带有硬件解码电路,使得我们更容易上手。通过对两个正交编码脉冲输入信号的计数,可以得到电机转过的角度。[2] 在电赛中,为了避免频繁的控制动作引起的振荡和能量消耗,有时会采用带有死区的PID控制系统。在实验中,如果电机角度误差较小时,为了避免频繁的控制动作,可以加入死区。具体实现时,可以根据误差的大小来选择是否启用积分项,以达到更好的控制效果。[3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘子ゆ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值