高分悬赏!请高手逐行解释这个Matlab程序,越详细越好,急用啊!一经采用,追加悬赏! 200

%PIDControllerclearall;closeall;ts=0.001;sys=tf(5.235e005,[1,87.35,1.047e004,0]);dsys... %PID Controller
clear all;
close all;

ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,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:1500
time(k)=k*ts;

S=3;
if S==1
kp=0.50;ki=0.001;kd=0.001;
rin(k)=1; %Step Signal
elseif S==2
kp=0.50;ki=0.001;kd=0.001;
rin(k)=sign(sin(2*2*pi*k*ts)); %Square Wave Signal
elseif S==3
kp=1.5;ki=1.0;kd=0.01; %Sine Signal
rin(k)=0.5*sin(2*2*pi*k*ts);
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,'k');
xlabel('time(s)'),ylabel('rin,yout');
展开
 我来答
月影之夜aL
2012-05-17 · TA获得超过371个赞
知道小有建树答主
回答量:156
采纳率:100%
帮助的人:36.8万
展开全部
%PID Controller
clear all;全部清除复位
close all;全部清除复位二次
ts=0.001;复位时间
sys=tf(5.235e005,[1,87.35,1.047e004,0]);系统执行函数运行
dsys=c2d(sys,ts,'z'); 微分控制函数
[num,den]=tfdata(dsys,'v');存储数据到v指令函数

u_1=0.0;u_2=0.0;u_3=0.0;条件函数
r_1=rand;产生随机数
y_1=0;y_2=0;y_3=0;

x=[0,0,0]';
error_1=0; 出错条件

for k=1:1:3000常数比例为:
time(k)=k*ts; 时间常数

kp=1.0;ki=2.0;kd=0.01; pid的条件函数值

S=1; 时间秒
if S==1 %Triangle Signal 赋值三角函数1时
if mod(time(k),2)<1 假如当前值
rin(k)=mod(time(k),1); 则两项相等
else 特殊事件时
rin(k)=1-mod(time(k),1);结果这样后
end 结束
rin(k)=rin(k)-0.5;这样后
end结束程序
if S==2 %Sawtooth Signal赋值三角函数2时
rin(k)=mod(time(k),1.0);
end 程序结束
if S==3 %Random Signal赋值三角函数2时
rin(k)=rand; 为k,则随机
vr(k)=(rin(k)-r_1)/ts; %Max speed is 5.0最大限制速度调节函数
while abs(vr(k))>=5.0 并且不小于5时则
rin(k)=rand;
vr(k)=abs((rin(k)-r_1)/ts);
end
End结束程序
u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller如果算式成立
则pid控制程序限制控制器输出
%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); 强制赋值错误时判别报错

r_1=rin(k);

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微分偏移错误

xi(k)=x(3);结果为

error_1=error(k);
D=0;积分关闭则
if D==1 %Dynamic Simulation Display 模拟动态显示赋值的等式
plot(time,rin,'b',time,yout,'r');调试过程值
pause(0.00000000000000000);暂停值
end
End程序结束
plot(time,rin,'r',time,yout,'b');在线显示的情况赋值表现
xlabel('time(s)');ylabel('rin,yout');画面上x和y轴的显示条件赋值表现
百度网友519499b
2012-05-13 · TA获得超过326个赞
知道小有建树答主
回答量:1186
采纳率:0%
帮助的人:288万
展开全部
给我份好不 谢谢了呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式