PID 控制器

本文参考:从不懂到会用!PID从理论到实践~_哔哩哔哩_bilibili

目录

1.PID控制器入门

1.1.PID控制器的引入

1.2.PID控制器适用系统

1.3.PID控制器宏观意义

2.PID控制器的必备知识

2.1.控制系统概述

2.2.参数详解

2.3.连续与离散信号

3.PID控制算法

3.1.PID公式解释(抽象派)

3.2.PID公式解释(形象派)

3.2.1.小车例子

3.2.2.无人机例子

3.3.PID参数整定

4.其余相关控制知识

4.1.积分限幅

4.2.积分分离

4.3.微分先行


1.PID控制器入门

1.1.PID控制器的引入

举例:

水管中间有一个控制阀(水龙头),控制阀拧大的时候,出水管水流量变大,控制阀拧小的时候,出水管水流量变小。水管上有一个工人,工人负责控制控制阀,让出水管水流量保持稳定,并且可以随时改变出水管水流量

流量稳定:

工人看到出水管水流量为1L/S,工厂也想让出水管水流量为1L/S。现在突发状况,出水管裂了一点,裂开的部分会流走一些水,导致当前出水管水流量是0.9L/S,如下图所示。此时把控制阀拧大一些,出水管水流量刚好是1L/S,这样就可以控制其出水管水流量稳定

改变流量:

工人看到出水管水流量为1L/S,工厂想让出水管水流量为2L/S。此时工人将控制阀拧大,发现出水管水流量为1.5L/S,还不够,工人再将控制阀拧大,此时发现出水管水流量刚好为2L/S,这样就可以改变出水管水流量

举例总结:在这个系统中,要控制出水管水流量,就一定要靠工人,出水管水流量通过工人的眼睛实时的传给大脑,大脑根据水流量的大小,自行判断控制阀调大还是调小。PID控制器就是用来代替工人的作用,PID可以实时检测当前出水管水流量值,通过水流量值控制控制阀的开度。

1.2.PID控制器适用系统

PID控制器适用线性系统

准确的说是二阶以内的线性系统

 

线性系统:(卡尔曼滤波那一节讲过,这里略讲)

满足齐次性叠加性

齐次性:

y=f(x)    ->    ky=f(kx)

叠加性:

y1=f(x1)      y2=f(x2)      ->    y1+y2=f(x1)+f(x2)=f(x1+x2)

1.3.PID控制器宏观意义

PID控制器在工业应用上,占有95%的应用比例

PID控制器特点:上手简单,不需要对系统进行精确建模


2.PID控制器的必备知识

2.1.控制系统概述

1.开环控制系统

开环控制系统概述:期望输出x作为系统输入,实际输出y作为系统输出。x输入信号给到控制器,这里的控制器我们使用PID控制器;PID控制器根据输入进行一个运算,输出一个Uc控制信号;Uc控制信号给到执行器,执行器根据Uc控制信号做出一个反应Ua;反应Ua作用到对象,那么对象就输出y,y就是实际输出

对比前面工人控制水流量的例子,如下图所示:

期望输出x其实就是流量的预期输出

控制器对应的就是工人师傅

控制器的输出Uc对应的就是工人师傅决定对控制阀扭几圈

执行器对应的就是阀门,根据输入Uc拧几圈来执行

对象对应的就是出水口的水流量

实际输出y对应的就是流量的实际输出

开环控制器的问题:

控制器控制一次后就不管了,没有反馈不会观察实际输出到底是多少,实际输出可能会出现干扰没有达到预期输出值

2.前馈控制系统

前馈控制系统概述:前馈控制系统就是在开环控制系统的基础上增加了一个干扰测量器。实际中执行器作用在对象时,会存在一些内外部因素的干扰,这些干扰会导致实际输出与预期输出相比存在误差。这时我们需要增加一个干扰测量器,将干扰值给到控制器,控制器根据干扰的大小,计算出需要给执行器补偿多少,执行器根据控制器的补偿值进行操作来补偿干扰噪声

对比前面工人控制水流量的例子,如下图所示:

前面工人控制水流量的例子,如果出水管中有一些石头对输出管水流量造成干扰,本身水流量输出预期1L/S,经过干扰后变成0.5L/S。工人师傅根据干扰造成的影响加大控制阀门,对这部分影响因素做出补偿,最后输出1L/S。这就类似于前馈控制系统干扰补偿部分的工作流程。

3.单闭环控制系统

单闭环控制系统概述:闭环控制系统就是在开环控制系统的基础上增加了一个传感器,形成了一个闭环回路,实际输出值会反馈到输入出这里。这里控制器的输入就不再是期望输出了,而是期望输出x-实际输出y 这样一个偏差值E(E=x-y)。控制器根据输入的偏差值输出一个控制信号Uc给执行器,执行器作用在对象输出实际输出值y

对比前面工人控制水流量的例子,如下图所示:

工人师傅用眼睛去观察出水管水流量,假设出水管流量只有0.9L/S,那么人脑就会比对实际输出相较于预期输出差了多少,人(控制器)就会对控制阀(执行器)输出一个再转几圈的信号,这样就经历了一个闭环控制的过程。

4.双闭环控制系统

双闭环控制系统概述:用两个控制器来控制一对主副对象,其中主对象是最终要控制的对象。在单闭环控制系统的基础上加了一个反馈环,里面的反馈环叫做内环,外面的反馈环叫做外环。

举例:

在前面工人控制水流量模型的基础上,出水管下面加了一个水箱,水箱里面的水也是我们控制的一个目标,控制水箱里面的水是一米的高度

控制器1就是工人师傅,根据水箱水位高度的偏移值做出一个计算;

控制器2也是工人师傅,根据控制器1的输出和水管水流量换算值的一个偏移量再做出一个计算;

执行器是水阀,直接控制的是出水管水流量,间接控制水箱水位高度;

副对象是出水口水流量;

主对象是水箱的水位高度

两个传感器都是工人师傅的眼睛,内环传感器观察的是出水口水流量,外环传感器观察的是水箱水位高度

例子中双闭环控制系统的控制过程:

期望输出x是水位1米,期望输出x与实际输出y1做差得到偏移值E1作为控制器1的输入,控制器1输出一个控制值Uc1,控制值Uc1和内环反馈流量的输出值y2做差得到偏移值E2作为控制器2的输入,控制器2输出一个控制值Uc2,控制值Uc2给到执行器阀门来控制出水管的水流量。副对象出水口的水流量变化进而改变主对象水箱水位的高度

双闭环控制系统的优点:

将系统里面一些不稳定的量进行控制,来更好地控制最终的对象,达到稳定控制的目的。

例如上面的例子,水管中的水流量如果过大可能会导致水箱水位变化过快不好控制,那么在里面再加一层控制出水管水流量就能更好的控制水箱的水位值

5.复合控制系统——前馈-反馈复合控制系统

前馈-反馈复合控制系统概述:相当于一个单闭环的控制系统+一个前馈通道。这种系统考虑到了内外因素的干扰,干扰会对对象有一个扰动的作用。设置一个前馈反馈回路,把干扰检测出来,干扰测量器负责测量干扰的大小,测量的值给到前馈反馈的控制器,前馈反馈的控制器作用到执行器使得这个前馈反馈环对对象的作用可以抵消干扰对对象的作用。单闭环的控制回路起到精准控制对象的作用

举例:

在前面工人控制水流量模型的基础上,出水管内有石头对出水管水流量干扰

这里的石头作为干扰对对象和实际输出造成影响,这里的干扰使出水管水流量变小,通过增大阀门来弥补石头对流量造成的这部分减小量就是前馈反馈回路的功能。人眼通过观察出水管的流水量操作水阀进行实时的控制,这就是单闭环回路的功能。两个回路加在一起就实现了前馈-反馈复合控制系统的功能

2.2.参数详解

1.误差:输入(期望输出)- 输出(实际输出)

2.控制器输出:控制器得到一个输入量,输入量通过控制器会经过一个运算(例如PID运算)得到一个控制信号值,控制信号值给到执行器

3.执行器输出:施加在对象上产生作用的量

4.系统输出:控制的某对象某一属性改变量

2.3.连续与离散信号

1.图形表示

                            连续信号                                                            离散信号

2.信号算式表示

                           连续信号                                                            离散信号


3.PID控制算法

3.1.PID公式解释(抽象派)

PID公式:

C:控制器的输出(前面控制系统的Uc)

e:误差,期望输出-实际输出得到的偏差值

P:比力度,超参数需要人为的调

Ti:积分时间,超参数需要人为的调

Td:微分时间,超参数需要人为的调

实际常用的PID公式(原公式进行归一化):

离散PID语言表述为:

Kp×误差+Ki×误差的累积值+Kd×误差的变化值

3.2.PID公式解释(形象派)

3.2.1.小车例子

举例:小车前面有一堵墙,墙距离小车100米,小车要跑到100米处的墙的位置处停下

在这样一个模型下进行控制分析,其中控制器PID我们只使用P来控制,如下图所示

最开始期望位置为100m,实际位置为0m,将P设为0.1。

控制过程:

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为0.1,控制器的输出为100×0.1=10;执行器电机得到一个10的输入并执行,输出一个对地10m/s的速度;对象小车以10m/s的速度移动,会得到一个实际位置,假设一个控制周期为1s,则得到的实际位置为10m;得到的实际位置再反馈会来

此时,期望位置-实际位置=100-10=90m,控制器的输入为90m;P为0.1,控制器的输出为90×0.1=9;执行器电机得到一个10的输入并执行,输出一个对地9m/s的速度;对象小车以9m/s的速度移动,会得到一个实际位置,假设一个控制周期为1s,则得到的实际位置为19m;得到的实际位置再反馈会来

以此类推......

根据上面的分析,我们可以得到小车的位置随时间的变化图和电机的速度随时间的变化图,如下图所示

最开始期望位置为100m,实际位置为0m,将P改为0.5。

控制过程:

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为0.5,控制器的输出为100×0.5=50;执行器电机得到一个50的输入并执行,输出一个对地50m/s的速度;对象小车以50m/s的速度移动,会得到一个实际位置,假设一个控制周期为1s,则得到的实际位置为50m;得到的实际位置再反馈会来

此时,期望位置-实际位置=100-50=50m,控制器的输入为50m;P为0.5,控制器的输出为50×0.5=25;执行器电机得到一个25的输入并执行,输出一个对地25m/s的速度;对象小车以25m/s的速度移动,会得到一个实际位置,假设一个控制周期为1s,则得到的实际位置为75m;得到的实际位置再反馈会来

以此类推......

根据上面的分析,我们可以得到小车的位置随时间的变化图和电机的速度随时间的变化图,如下图所示

可以看出当P从0.1改为0.5后,小车改变的就更快了,也将更快的完成控制

最开始期望位置为100m,实际位置为0m,将P改为0.05。

控制过程: 

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为0.05,控制器的输出为100×0.05=5;执行器电机得到一个5的输入并执行,输出一个对地5m/s的速度;对象小车以5m/s的速度移动,会得到一个实际位置,假设一个控制周期为1s,则得到的实际位置为5m;得到的实际位置再反馈会来

此时,期望位置-实际位置=100-5=95m,控制器的输入为95m;P为0.05,控制器的输出为95×0.05=4.75;执行器电机得到一个4.75的输入并执行,输出一个对地4.75m/s的速度;对象小车以4.75m/s的速度移动,会得到一个实际位置,假设一个控制周期为1s,则得到的实际位置为9.75m;得到的实际位置再反馈会来

以此类推......

根据上面的分析,我们可以得到小车的位置随时间的变化图和电机的速度随时间的变化图,如下图所示

可以看出当P从0.1改为0.5后,小车改变的就更慢了,也将更慢的完成控制

容易看出,参数P值可以控制控制系统到达期望值的时间

3.2.2.无人机例子

举例:控制无人机从地面飞到100米的空中

在这样一个模型下进行控制分析,其中控制器PID我们讨论P、I、D三个参数的控制情况

注:

1.这里要考虑无人机重力的因素,如果转轮的升力F等于无人机的重力mg,则无人机悬停;如果转轮的升力F大于无人机的重力mg,则无人机上升。

2.我们设定一个条件,当无人机悬停在空中,转轮的速度为100rpm。

控制器PID只用P一个参数来控制的情况:

当p=1时,控制过程:

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为1,控制器的输出为100×1=100;执行器电机得到一个100的输入并执行,转轮输出100rpm的转速;对象无人机将悬停在0m的高度,因此P应该给大一点

当p=2时,控制过程:

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为2,控制器的输出为100×2=200;执行器电机得到一个200的输入并执行,转轮输出200rpm的转速;对象无人机将上升。在上升的过程中期望高度-实际高度得到的误差值将变小,当误差值减小到50m的时候,也就是无人机在50m的空中的时候,期望位置-实际位置=100-50=50m,控制器的输入为50m;P为2,控制器的输出为50×2=100;执行器电机得到一个100的输入并执行,转轮输出100rpm的转速;对象无人机将悬停在50m的高度

当p=100时,控制过程:

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为100,控制器的输出为100×100=10000;执行器电机得到一个10000的输入并执行,转轮输出10000rpm的转速;对象无人机将上升。在上升的过程中期望高度-实际高度得到的误差值将变小,当误差值减小到1m的时候,也就是无人机在99m的空中的时候,期望位置-实际位置=100-99=1m,控制器的输入为1m;P为100,控制器的输出为1×100=100;执行器电机得到一个100的输入并执行,转轮输出100rpm的转速;对象无人机将悬停在99m的高度

总结:可以看出,在这个模型中,如果只用P一个参数来控制,随着P的增大无人机只能无限接近100m的高度,无法准确到达100m,由于只用参数P某些模型下会导致结果总有一个误差,这个误差我们叫做稳态误差,因此我们需要引入参数I项来解决稳态误差。

控制器PID使用P和I两个参数来控制的情况:

I项的功能:

经过前面分析可知,当P=100,无人机会悬停在99m的空中,此时控制器输入的误差不变是1m,因此P项会使转轮一直保持100rpm使无人机悬停;加入I项,I项是积分项,会根据以往的误差慢慢积累,如果误差保持不变,I项就会一直线性的积累,那么控制器中P项加上I项慢慢积累的就会产生新的输出,新的输出给执行器,无人机就会慢慢上升,如下图所示。这样到最后无人机到达100m的高度时,比例项P不提供升力,如果积分项I提供的升力如果还不足以维持悬空,那么无人机会下落一点,又会产生误差,然后比例项P再会提供升力,此时积分项I项又会积累一些误差使I项提供的升力强了一些,在P和I共同作用下无人机再一次到了100m高度,此时只有I提供升力,如果I的升力经过上一次增加后还是不够悬停,那么会继续重复前面操作,直到积分项I提供的升力刚好可以使无人机悬空,此时无人机无限接近100m可以认为就是100m。

当p=100时,控制过程:

开始时,期望位置-实际位置=100-0=100m,控制器的输入为100m;P为100,控制器的输出为100×100+I·(前面误差的累加)= 10000+I·(前面误差的累加);执行器电机得到一个10000+I·(前面误差的累加)的输入并执行,转轮输出10000+I·(前面误差的累加)rpm的转速;对象无人机将上升。

到最后,期望位置为100m,实际位置也为100m,控制器的输入为0m,也就是没有了误差;P为100,控制器的输出为0×100+I·(前面误差的累加)= I·(前面误差的累加),此时比例项P为0,不提供升力;由于积分项不受当前状态影响,因此积分项I不会因为当前误差为0而改变,积分项I只是会停止积累误差,如下图所示,此时I项提供的升力保证无人机悬空,悬空的位置刚好为100m

随着无人机的上升,P项和I项积累值的变化情况如下图所示

问题:在该模型中,如果只使用P和I项虽然能使无人机悬停在100m的空中,但还是有一定问题。当无人机在地面时,设P=100,那么100×100=10000rpm,开始比例项的升力就非常大,如果一个人将无人机摁住不让其上升,那么I·(前面误差的累加)这一项中误差累加的非常快,一段时间后也会导致转轮转速变得很大,此时松开无人机,无人机可能突然上升到远远超过100米的高空,虽然最后靠P和I这两个超参数项还是能控制无人机近似到达100米空中,如下图所示,但是开始一瞬间上升这么高不安全,而且无人机高度来回震荡控制时间长,所以,再增加超参数D微分项来消除或减小其震荡,缩短控制时间,并且也控制其不要上升的那么快更加安全。

控制器PID使用P、I和D三个参数来控制的情况:

D项的功能:

无人机有可能因为开始速度过快而飞过,如下图左所示,此时控制器输入误差的变化如下图右所示。右图误差的导数值就是D的微分项。开始无人机速度很快但是随着高度的升高输入控制器的误差值在变小,因此误差变化率为负的,此时微分项D给无人机一个反推力使得无人机上升的速度慢下来。无人机上升的速度越快,误差减小也就越快,误差变化率为负的,其值也就越小,那么微分项D给无人机一个反推力也就越大。

  

3.3.PID参数整定

Kp项:

因为某些系统是不允许超调的,所以Kp开始不能给太大,从小一点开始往大调,当调到一定值时发现实际输出可以很快贴进目标值,那么就停止。因为单独Kp不能消除稳态误差,此时加入Ki项

Ki项:

Ki的引入是为了减少误差。Ki小的话积分作用弱一点,误差消除效率就会差一些;Ki大的话积分作用强一点,误差消除效率就会好一些

Kd项:

如果系统发生超调,Kd的引入就是消除震荡或使震荡减弱。但是Kd不能太大,如果太大会严重影响系统的调节时间,来回缓慢震荡,使实际输出很久才能贴合住预期输出

总结:开始Kp从小往大慢慢的给,给到可以较快的贴合预期输出后加入Ki项,Ki从小开始慢慢往大的给,当出现高效率的贴合预期输出值的曲线时,如果对控制时间有要求需要时间较短,那么可以把Ki再给大一点,此时观察有没有超调,如果有超调那么加入Kd项来调整即可。

一般的系统我们使用Kp和Ki即可,只有震荡明显的情况下会使用Kd


4.其余相关控制知识

4.1.积分限幅

举例:使用P和I项进行控制,无人机在地面准备起飞,期望高度是100m。此时一个人摁住无人机,那么误差值一直为100m,控制器P项输出保持不变,控制器I项输出是线性增长的,如下图所示

一段时间后,那个人突然不摁了,此时控制器I项输出可能非常大,再加上控制器P项输出,控制器给电机的输出非常大,那么无人机速度就非常快并且飞的非常高。对于这种情况,我们对积分限幅,I项增加到一定值时就不再增了,如下图所示,那么无人机在上面这种情况下就不至于飞的很快很高,这就是积分限幅的作用。

4.2.积分分离

举例:当无人机期望高度为100m而此时也到达了100m的位置,那么误差值为0,控制器P项的输出值为0,由控制器的I项来保持无人机的悬停,由于此时没有误差,因此I项的误差也不再累计,如下图所示。

此时如果给无人机一个新的期望高度1000m,那么误差值为900m突然变得很大,导致控制器积分项I也突然变得很大,如下图所示,再加上P项,可能导致无人机最后严重超调一直震荡


这种情况下,我们使用积分分离,对误差进行一个条件判断,例如如果无人机误差超过500m,我们就让积分项I等于0,如果无人机误差低于500m,我们再使用I项,这样I项就不会像前面增长的那么快,使系统可以快速跟随且不至于严重超调
 

4.3.微分先行

如下图所示,相较于前面的控制系统有一些变化。我们直接将传感器的反馈值分出来一路给到控制器的D项,这样做有一个好处就是如果希望无人机快速反应移动,当期望高度突变的时候,影响会先给到P和I项,由于开始时无人机位置没有突变,传感器反馈的实际高度值也不会突变,因此不会马上给到D项,这样就有效减小了D项开始的缓冲作用,使无人机可以快速反应移动。如果不这样做,那么如果期望高度突变,D项的微分值也会突变变得很大,缓冲作用非常大,使相应效果大大降低。

  • 43
    点赞
  • 188
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

随风张幔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值