Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2010-05-21, 12:35   #1
eafypop
初级会员
 
注册日期: 2010-04-14
帖子: 3
声望力: 0
eafypop 正向着好的方向发展
默认 如何给输出加一个脉冲干扰,求程序!!!

当输出稳定后,如何给输出加一个脉冲干扰,求程序,万分感谢!!!
%PID Controller
clc;
clear all;
close all;
kp=6.2471;ki=10.7569;kd=0.4533;


ts=0.001;
sys=tf(400,[1,30,200,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.0;y_2=0.0;y_3=0.0;
x=[0,0,0]';
error_1=0;
for k=1:1:8000
time(k)=k*ts;
rin(k)=1; %Step Signal rin(k)=1-yout(k);
end
u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller
%Restricting the output of controller
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
%Linear model
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3;

error(k)=rin(k)-yout(k);

%Return of parameters
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=yout(k);

x(1)=error(k); %Calculating P
x(2)=(error(k)-error_1)/ts; %Calculating D
x(3)=x(3)+error(k)*ts; %Calculating I

error_1=error(k);
end
figure(1);
plot(time,rin,'k',time,yout,'r');
xlabel('time(s)'),ylabel('rin,yout');
eafypop 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:24


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.