帝游网提供最新手游APP下载和游戏攻略!

PID 算法:数字 PID 的离散化及实现算法PID

发布时间:2024-07-16浏览:7

上一篇文章已经介绍了pid是什么,现在我们再回顾一下:

PID:是过程控制中常用的一种算法,用于自动控制某个对象或参数。

本文无意深究pid的理论知识,如果对pid不了解或者有兴趣的可以自行查阅资料或者看我之前的文章,见下文:

这次来分享一下PID算法的常见实现和流程,主要分享PID的模拟控制实现和数字控制实现。

1.PID模拟控制

在过去,计算机系统还没有这么发达的时候,很多系统都是通过硬件电子来实现的,如果你观察过一些老物件,就会发现过去的很多电子控制系统都是庞大笨重的,里面塞满了电子元件。

后来随着计算机技术的飞速发展,很多系统可以依靠软件算法来实现,这也大大减少了系统中电子元器件的使用,使得很多系统在功能强大的同时又小巧轻便。

例如,以下是模拟反馈控制系统的示意图:

上图是一个简单的模拟闭环反馈控制系统,可以通过反馈环实现将被控制量反馈到输入端,从而将被控制量与期望输出值进行比较,形成闭环自动控制系统。

图中的模拟调节器,是指控制律方案采用模拟硬件实现,如果要调整系统的控制律,就需要修改调节器硬件,这就是模拟控制系统的意思。

模拟PID的实现也是通过模拟电子器件搭建的电路来实现的,比例、积分、微分单元都是通过电子元件来实现的,然后集成到一个控制系统中,这就是模拟PID,下面是示意图:

模拟PID的微分方程如下:

PID调节器的传递函数如下:

2.PID数字控制

数字控制系统是采用微型计算机作为控制器,通过软件实现控制规律的控制系统。当我们想改变控制器的控制规律时,一般可以通过改变相应的程序或软件参数来改变控制规律。

数字控制系统原理图如下:

采用数字控制实现的PID的微分方程如下:

3.数字PID算法有两种类型——位置型和增量型

数字PID:是指通过计算机软件程序实现PID控制算法,计算机需要将输入的连续信号采集然后量化作为控制器的输入参数,通过算法的调节来实现对目标对象的控制。

在计算机系统中,PID控制算法一般采用数值近似的方法来实现。这是因为在很多系统中,一般都是连续的,而计算机依靠计算机计算来进行计算,而计算是离散的。因此,如果想让计算机能够实现PID算法程序,就必须将PID算法的连续函数离散化,这样才能通过软件算法在计算中实现。

一般来说,计算机实现PID算法时,当采样周期很小时,可以用误差和来代替积分部分,用差商来代替微分部分,从而把连续PID算法的微分方程离散化,使其能够被计算机实现。

数字 PID 主要有两种类型:位置 PID 和增量 PID

3.1 位置PID

位置式PID:是指PID控制器经过计算后输出的Uk为被控对象的实际控制量。

这个概念乍一看是不是有点让人困惑?别担心,我们举个例子,你就会明白。

pid算法通俗_pid算法_算法PID

例如:我要控制一个阀门,控制流体的流量,假设阀门开度位置为0~100,当前阀门开度在20位置,现在想把流体的流量加大,通过修改设定值,进行PID调节,最终输出控制量Uk=80,也就是此时阀门开度应该在80位置,这就是位置PID对被控对象输出的实际控制量的理解。

接下来,位置PID离散公式如下:

在哪里:

进一步整理,可表示为:

在:

Kp - 比例系数Ki - 积分系数;Ki = Kp*T/Ti;Kd - 微分系数;Kd = Kp*Td/T;T:采样时间Ti:积分时间Td:微分时间

从上式可以看出,位置PID只需要计算第K次和第K-1次的误差,而控制器则会对偏差进行累积,也就是说,控制器的每次输出Uk都与过去的状态有关。

这样也会带来一些问题,因为位置pid的输出Uk是和之前的状态相关的,如果控制器出现异常,可能引起Uk的输出发生明显变化,从而导致执行元件的状态发生明显变化,严重的话可能造成严重的生产事故。

另外,由于位置PID需要对偏差进行累积,会导致系统的计算量增大,这对于计算性能不足的计算机来说也是一个负担。

3.2 增量式PID

增量式PID:指控制器的输出是被控制对象的增量∆Uk,而不是实际的控制量。

增量式PID怎么理解?

举个例子:比如我要控制一个步进电机的转动角度,但是步进电机转动之后的位置虽然没有达到预期的位置,但是已经差不多了,这时候PID控制器输出的是变化的增量,而不是实际的控制量。

比如说我想让步进电机旋转 120°,现在步进电机旋转了 115°,那么输出角度就增加 +5° 就可以了。如果控制超出了限制,达到了 123°,那么输出角度就减少 -3° 就可以了。所以这种情况下,控制的输出是增量变化,而不是实际的控制量。

增量式PID离散公式如下:

摘要如下:

在哪里:

从增量式PID离散化公式可知,增量式PID与时刻n、时刻n-1、时刻n-2的偏差有关,但是不会对偏差进行累积,因此计算量比位置式PID小,而且不会与过去的偏差有关,控制稳定性会更好。

4 数字PID算法程序流程

上面分享了数字PID的离散化公式,也实现了代码,不过因为还没整理出来,下次再贴上来。下面是PID算法的程序流程图。其实到了这一步,PID算法就可以自己实现了。

(1)位置PID算法实现流程图

(2)增量式PID算法实现流程图

热点资讯