Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-05-07
帖子: 1
声望力: 0 ![]() |
![]()
%Discrete PID control for continuous plant
clear all; close all; ts=0.001; %Sampling time xk=zeros(2,1); e_1=0; u_1=0; for k=1:1:2000 time(k) = k*ts; rin(k)=0.50*sin(1*2*pi*k*ts); para=u_1; tSpan=[0 ts]; [tt,xx]=ode45('sy3_1',tSpan,xk,[],para); xk = xx(length(xx), ![]() yout(k)=xk(1); e(k)=rin(k)-yout(k); de(k)=(e(k)-e_1)/ts; u(k)=20.0*e(k)+0.50*de(k); %Control limit if u(k)>10.0 u(k)=10.0; end if u(k)<-10.0 u(k)=-10.0; end u_1=u(k); e_1=e(k); end figure(1); plot(time,rin,'r',time,yout,'b'); xlabel('time(s)'),ylabel('rin,yout'); figure(2); plot(time,rin-yout,'r'); xlabel('time(s)'),ylabel('error'); 被控对象函数文件:sy3_1.m function dy = sy3_1(t,y,flag,para) u=para; J=0.0067;B=0.1; dy=zeros(2,1); dy(1) = y(2); dy(2) = -(B/J)*y(2) + (1/J)*u; 有人能帮我解释一下么?? |
![]() |
![]() |