增量式PID控制算法及仿真

当执行机构需要的是控制量的增量(例如驱动步进电机),应采用增量式PID控制。根据递推原理可得
        u\left ( k-1 \right )= k_{p}\left ( error\left ( k-1 \right ) +k_{i}\sum_{j= 0}^{k-1}error(j)+k_{d}\left ( error\left ( k-1 \right )-error\left ( k-2 \right ) \right )\right )
增量式PID控制算法

\Delta u\left ( k \right )= u\left ( k \right )-\left ( k-1 \right )

被控对象:G\left ( s \right )= \frac{400}{s^{2}+50s}

k_{p}= 8       k_{i}= 0.10     k_{d}=10

clear all;
close all;

ts=0.001;
sys=tf(400,[1,50,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');

u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0;y_2=0;y_3=0;

x=[0,0,0]';

error_1=0;
error_2=0;
for k=1:1:1000
   time(k)=k*ts;
   
   yd(k)=1.0;
   kp=8;
   ki=0.10;
   kd=10;
   
   du(k)=kp*x(1)+kd*x(2)+ki*x(3); 
   u(k)=u_1+du(k);

   if u(k)>=10
      u(k)=10;
   end
   if u(k)<=-10
      u(k)=-10;
   end   
   y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
   
   error=yd(k)-y(k);
   u_3=u_2;u_2=u_1;u_1=u(k);
   y_3=y_2;y_2=y_1;y_1=y(k);
   
   x(1)=error-error_1;             % P
   x(2)=error-2*error_1+error_2;   % D
   x(3)=error;                     % I
   
   error_2=error_1;
   error_1=error;
end
figure(1);
plot(time,yd,'r',time,y,'k:','linewidth',2);
xlabel('time(s)');ylabel('yd,y');
legend('Ideal position signal','Position tracking');

运行结果

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值