增量式PID公式的理解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一开始见到PID 计算公式时总会问“为什么是这样子的一道公式”,为 了理解那几道公式,当时将其未简化前的公式活生生地算了一遍,现在想来, 这样的演算过程固然有助于理解,但假如一开始就带着对疑问的答案已有一 定抽象了解后再进行演算则会理解的更快!
PID 就是对输入偏差进行比例积分微分运算,然后将运算的叠加结果去 控制执行机构。

实践练习中,如何把这一原理转化为程序?为什么是用那几 个error 进行计算? 以下是一段PID 程序,我曾用其对智能车的速度进行闭环控制: P : Proportional I : Integrating D
P
wm_value :输出
Curre nt_error last_error p rev_error 增量式PID 计算公式:
P=Kp*(current_error - last_error)
D=Kd*(current_error - 2*last_error
I=Ki*curre nt_error ;
PID add=Pwm value+P + I + D ;
o
c
____ _____________________ _____________________ :.
如上图,有一个人前往目的地
A ,他用眼睛视觉传感器目测到距离目的 地还有100m,即当前与目的地的偏差为
100,他向双脚输出^ =100J 的能量, 跑呀跑,10s 之后,他又目测了一次,此时距离为
40m 即 current_error=40 ,他与 10s 前的偏差 last_error=10 对比,即 curre nt_error - last_error=-60 ,这是个负数,他意识到自己已经比较接
近目的地,可以不用跑那么快,于是输出△ =100+(-60)=40J 的能量,40J 的
比例
积分
微分 Pwm 暂空比的值 当前偏差 Differe ntiatio n :上次偏差
:上上次偏差
+ p rev_error) 、为什么是 P ID_add=P wm_value+
(P + I + D )而不是 PID_add=P+I+D
?
o __ A __
A
能量他刚好以4m/s 的速度跑呀跑,10s 之后,他发现已经到达目的点,此时 curre nt_error=0 ,大脑经过思考得出 curre nt_error — last_error=0 - 40=-40,两脚获得的能量A =40+(-40)=0,即他已经达到目的地,无需再跑。

在刚才的叙述中,可知增量式 P+I+D 输出的是一个增量,将该增量与调节量
相加后所得到值才是最终输出量,其反应的是之前的输出量是在当前的状态 中是该增加还是该减少。

二、纯比例控制
(current_error PID 中纯比例控制就是把被控制量的偏差乘以一个系数作为调节器的输 出,在增量式PID 中,反映在程序上的,我们被控制量就是 error ,而实际 上,例如在速度控制中 error=目标速度-当前速度,所以明确目的:我们通 过控制error 趋近于0,最终使得当前速度趋近于目标速度。

如上图,函数经过时间A t ,由y1变化为y2时,问y 增长的比例为多
少?很显然:K= ( y2-y1 ) / A t ;
以速度控制为例,若 y 为error ,如上图,在时间t1到t2的过程中,
我们可以得到输出控制量 error 变化的趋势为(current_error -
last_error)/ A t 。

得到偏差的变化趋势后,乘以
Kp 使输出量与error 相对
变化。

这个道理犹如模拟电子电路中,声音信号经过功放管放大输出的信号
P=Kp*(current_error - last_error) ,怎样理解 -last error )?
与输入信号相对应的线性变化。

、引进微分控制?
然而,通常情况下,我们的被控制量并非纯比例式地变化,如下图:
的变化为{ (current_error - last_error) - (last_error - prev_error) 1/A t= {( current_error - 2*last_error /A t ,可得微分
D=Kd*(current_error - 2*last_error
系统中加入微分反映系统偏差信号的变化率,能预知偏差变化的趋势,具有
比例表示变化趋势,微分则表示变化趋势的变化率,映射到一个图像曲 x2至x1某点的斜率,当△ t 足够 可知x3到x1导数的变化为{ (y3 - 将不同时间的y1、y2、 ;贝
^ error 变化趋势
线中即为导数的变化!上图中若求曲线中 小时,则可近似为(y2 - y1) /△ t , y2) -(y2 - y1) 1/A t = (y3 - 2*y2 y3 映射为 prev_error 、last error + y1) /△ t o curre nt_error + prev_error + P rev_error) i
I'l II
超前控制作用,提前处理偏差。

四、引进积分控制?
积分控制可以消除偏差,体现在公式中较容易理解,当前的偏差差经过系数Ki的放大后映射为输出控制量,即匸Ki*current_error 。

P只要前后
偏差之差为0,即current_error - last_current=O ,则不进行调节,D只
要前后偏差变化率为0,即(current_error - 2*last_error +
prev_error)=0 ,则不进行调节。

而对于积分只要偏差存在,调节就始终进
行,因此积分可以消除误差度,但在在某些情况下,一定范围内的误差是允许的,而如果此时积分调节始终存在,可能会导致系统稳定性下降,如上图,此时可通过弱化积分系数Ki使系统稳定。

相关文档
最新文档