参考了(19条消息) 位置式PID与增量式PID区别浅析_Z小旋-CSDN博客_增量式pid
PID 实指“比例 proportional”、“积分 integral”、“微分 derivative”,这三项构 成 PID 基本要素。每一项完成不同任务,对系统功能产生不同的影响。它的结构简单,参数易 于调整,是控制系统中经常采用的控制算法。
PID:比例单元(P)、积分单元(I)和微分单元(D)组成
PID控制公式
其中:u(t)为控制器输出的控制量;(输出)
e(t)为偏差信号,它等于给定量与输出量之差;(输入)
KP 为比例系数;(对应参数 P)
TI 为积分时间常数;(对应参数I)
TD 为微分时间常数。(对应参数 D)
位置式 PID 算法 :
e(k): 用户设定的值(目标值) - 控制对象的当前的状态值
比例P : e(k)
积分I : ∑e(i) 误差的累加
微分D : e(k) - e(k-1) 这次误差-上次误差
也就是位置式PID是当前系统的实际位置,与你想要达到的预期位置的偏差,进行PID控制
Matlab例子:
clc
clear
%假设目标为100,当前为0;
target = 100;
init = 0;
kp = 0.1;
ki = 0.2;
kd = 0.3;
length = 100;
e = zeros(length+1,1);
e(1) = target - init;
e(2) = e(1);
u = zeros(length,1);
for i = 2:length
u(i) = kp*e(i) + ki*sum(e) + kd*(e(i)-e(i-1));
e(i+1) = target - u(i);
end
figure(1)
plot(u)
hold on
增量式PID:
比例P : e(k)-e(k-1) 这次误差-上次误差
积分I : e(i) 误差
微分D : e(k) - 2e(k-1)+e(k-2) 这次误差-2*上次误差+上上次误差
增量式PID根据公式可以很好地看出,一旦确定了 KP、TI 、TD,只要使用前后三次测量值的偏差, 即可由公式求出控制增量
而得出的控制量▲u(k)对应的是近几次位置误差的增量,而不是对应与实际位置的偏差 没有误差累加
也就是说,增量式PID中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作
clc
clear
%假设目标为100,当前为0;
target = 100;
init = 0;
kp = 0.1;
ki = 0.2;
kd = 0.1;
length = 100;
du = zeros(length,1);
u = zeros(length,1);
e = zeros(length,1);
e(1) = target - init;
e(2) = e(1);
e(3) = e(1);
for i = 3:length
du(i) = kp*(e(i)-e(i-1)) + ki*e(i) +...
kd*(e(i)-2*e(i-1)+e(i-2));
u(i) = sum(du);
e(i+1) = target - u(i);
end
figure(1)
plot(u)
% hold on
figure(2)
plot(du)
% hold on
串级PID: