pid控制算法的matlab仿真研究,PID控制算法的MATLAB仿真分析

PID控制算法的MATLAB仿真分析

PID的MATLAB仿真程序:

%PID Controler 不完全微分 clear all; close all; ts=20;

sys=tf([1],[60,1],'inputdelay',80); dsys=c2d(sys,ts,'zoh'); [num,den]=tfdata(dsys,'v');

u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; ud_1=0;

y_1=0;y_2=0;y_3=0; error_1=0; ei=0;

for k=1:1:100 time(k)=k*ts; rin(k)=1.0;

%Linear model

yout(k)=-den(2)*y_1+num(2)*u_5;

D(k)=0.01*rands(1); yout(k)=yout(k)+D(k); error(k)=rin(k)-yout(k);

%PID Controller with partly differential ei=ei+error(k)*ts; kc=0.30; ki=0.0055; TD=140;

kd=kc*TD/ts;

Tf=180;

Q=tf([1],[Tf,1]); %Low Freq Signal Filter

M=2; %M=1不完全微分,

%M=2普通Pid控制!!

if M==1

%Using PID with Partial differential alfa=Tf/(ts+Tf);

ud(k)=kd*(1-alfa)*(error(k)-error_1)+alf

a*ud_1;

u(k)=kc*error(k)+ud(k)+ki*ei;

ud_1=ud(k);

elseif M==2 %Using Simple PID

u(k)=kc*error(k)+kd*(error(k)-error_1)+

ki*ei; end

%Restricting the output of controller if u(k)>=10 u(k)=10; end if u(k)<=-10 u(k)=-10; end

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_1=error(k); end figure(1);

plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值