PID控制的通俗理解及算法实现

关于理解PID控制算法最典型的一个例子就是一个漏水的水缸的问题。
有个漏水的水缸,而且漏水的速度还不是恒定的。然后我们还有个水桶,我们可以控制往水缸里面加水或者从水缸里面舀水出来。另外我们可以检测水平面。现在我们的目的就是要控制水平面稳定在我们想要的任何一个平面上。
注意我们使用PID需要在一个闭环系统里面。什么叫闭环系统,就是有输入有反馈,输入就是能输入一个量去影响和控制我们的系统,反馈就是我们要能知道我们最终控制的东西的状态。在这个漏水的水缸系统中,输入就是这个水桶,我们能通过水桶往水缸里面加水或者从水缸里面舀水出来来影响我们水缸的水平面,反馈的话也就是说我们要能测量水平面,知道水平面是多少。控制系统原理图如下:

PID控制框图在这里插入图片描述系统函数
比例控制理解
首先是比例控制。比例控制就好比是通过水桶往水缸加水或者从水缸舀水。假设我们需要把水平面稳定在A平面,而实际水平面在B平面,那么水平面差值Err=A-B,那这个时候我们需要往里面加水的量就是Kp*Err,Kp就是我们的比例控制系数。
如果A>B,Err为正,就往水缸里面加水;如果A<B,Err为负,就从水缸里面舀水出来。那么只要预期水平面和实际水平面有差值,我们都会通过水桶去加减水来调整系统。同时Kp的大小也有对系统的性能有影响。如果Kp的值比较大,优点是从B平面达到A平面的速度快,缺点是在B平面已经接近A平面的时候系统会产生比较大的震荡。如果Kp的值比较小,优点是B平面在接近A平面的时候系统震荡小,缺点是从B平面达到A平面的速度慢。
这里也许有人会有疑问,如果这里把比例控制系数Kp直接设置成1,然后加水的量直接为Err=A-B不就可以了。然而实际上很多系统是做不到这点的。比如温度控制系统,实际温度为10度,我要通过加热把温度提升到40度,这里难道我们能一次性准确的给系统加30度?显然这是做不到的。那么比例控制的最终结果是Err的值趋向于0。比例控制部分公式如下图:
比例控制在这里插入图片描述
微分控制理解
然后我们先看看微分控制。在我们的比例控制的作用下,Err是开始减小的(假设一开始预期水平面A大于实际水平面B,也就是说Err是一个正值),那么也就是说Err随时间是一条斜率小于0的曲线,那么在周期时间内,Err越大,微分的绝对值越大,那么也就对Err的减小速度是起到抑制的作用的,直到最后斜率为0微分才会停止作用。微分公式如下:

微分控制在这里插入图片描述
那么随着微分的影响,Err曲线的斜率最终是趋向于0的,如下图:

Err曲线积分控制理解
积分控制部分的作用主要是用来消除静差。那么积分是怎样来消除静差的呢?比例控制只能尽量将Err调节到0,而微分的作用是将曲线的斜率控制到0则停止对其作用,但斜率为0的时候Err并不一定为0。
这个时候我们就需要积分来起作用了。我们知道曲线的积分相当于曲线与x轴围出来的面积。如下图,积分作用的目的是使红色部分的面积和蓝色部分的面积的和为0,那么即使系统在比例控制和微分控制部分已经趋于稳定,只要Err不为0就会存在静差,只要存在静差那么积分就会对系统产生影响,直到系统的Err值为0。那么这样我们的PID控制在理论上就可以达到一个非常精确的控制效果。
Err曲线
公式如下:
积分控制
PID算法离散化
假设采样时间间隔为T,则在k时刻:
偏差为e(k);
积分为e(k)+e(k-1)+e(k-2)+…+e(0);
微分为(e(k)-e(k-1))/T;
从而公式离散化后如下:
PID离散化公式

PID离散化公式
比例系数:Kp,
积分系数:KpT/Ti,可以用Ki表示;
微分系数:Kp
Td/T,可以用Kd表示;
则公式可以写成如下形式:

PID化简公式2
PID算法的离散形式就是这样了,这就是我们平时说的位置式PID。
接下来我们继续推算增量式PID,根据上面公式我们可以求得:
增量式PID推导

增量式PID
上式就是增量式PID的表现形式,计算出来的增量只跟最近三次的偏差值有关。注意这里计算出来的是增量值,也就是说如果我们要求u(k)的话应该是
U(k)表达式
那么PID的离散化就长不多是这样了,接下来我们看看PID的程序实现。
百度文库PID

http://wenku.baidu.com/link?url=XtnOjEGrIev7ZUmlwAIR7IEMG0YTvxV3YKpZMsVbEu8FWRsgAeVTLmJCe2K99fjsHuAGHq1c6_s6pqv6JJdYoiA1KcSQVLkV6HIW-_0w88m

http://wenku.baidu.com/link?url=DliKXRLALX6O-uW6glxLb5xW4RWIQm0Ia1PAR4nN4cguFAChMyoYk2XOaikcbIKBWCgmVnVsYnBLN1Ephm7Ly2SHvWioAN3drWlUgvvbFmi

http://blog.gkong.com/liaochangchu_117560.ashx

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PID控制算法是一种常用的控制算法,通过测量反馈信号与期望值之间的偏差,根据比例、积分和微分三个部分进行计算,生成控制信号,从而实现对系统的控制。 在DSP实现PID控制算法时,首先需要进行参数的设置。比例常数(Kp)决定了响应的灵敏度,积分常数(Ki)决定了对于长期稳定性的控制,微分常数(Kd)决定了对于瞬时变化的响应。 接下来,需要定义输入和输出的数据格式,以及实时采样的频率。采样的频率要根据被控制系统的特性来确定,通常选择足够高的频率以保证控制的准确性。 实现PID控制算法的核心是计算控制信号。首先从系统中获取反馈信号和期望值,并计算偏差。然后根据比例计算的结果,乘以比例常数并累加到控制信号中。接着根据积分和微分的结果,分别乘以对应的常数并累加到控制信号中。最后将控制信号输出给被控制系统。 需要注意的是,在实际应用中,为了防止控制信号过大或过小,可能需要进行输出限制或饱和处理。同时,为了控制的稳定性和性能,还可以对PID算法进行优化,如增加预补偿、滤波、自适应调整等。 总结起来,通过DSP实现PID控制算法,可以实现对被控制系统的准确控制。根据反馈信号与期望值的偏差,通过比例、积分和微分三个部分进行计算,生成控制信号,并输出给被控制系统,从而实现对系统的控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值