标题:大林算法的程序一直报错,怎么办
取消只看楼主
小小半路学者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-5-15
 问题点数:0 回复次数:0 
大林算法的程序一直报错,怎么办
clear all;清除所有
close all;关闭所有
ts=0.5;%初始化,采样周期t=0.5

sys1=tf([1],[0.4,1],'inputdelay',0.76);%系统传递函数
dsys1=c2d(sys1,ts,'zoh');%转换成z函数
[num1,den1]=tfdata(dsys1,'v');%获得z传的函数的分子分母

sys2=tf([1],[0.15,1],'inputdelay',4);%闭环传递函数
dsys2=c2d(sys2,ts,'zoh');%转换成z函数

dsys=1/dsys1*dsys2/(1-dsys2);%大林控制器的D(z)公式
[num,den]=tfdata(dsys,'v');%获得z函数的分子分母
u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;
y_1=0.0;
error_1=0.0;error_2=0.0;error_3=0.0;
ei=0;
for k=1:1:50
time(k)=k*ts;
  rin(k)=1.0;  %Tracing Step Signal
yout(k)=-den1(2)*y_1+num1(2)*u_2+num1(3)*u-3;
error(k)=rin(k)-yout(k);%差分方程
M=1;

if M==1 %Using Dalin Method使用大林算法
u(k)=(num(1)*error(k)+num(2)*error_1+num(3)*error_2+num(4)*error_3...
-den(3)*u_1-den(4)*u_2-den(5)*u_3-den(6)*u_4-den(7)*u_5)/den(2);
elseif M==2 %Using PID Method使用普通PID
ei=ei+error(k)*ts;
u(k)=1.0*error(k)+0.10*(error(k)-error_1)/ts+0.50*ei;
end
%----------Return of dalin parameters------------
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_1=yout(k);
error_3=error_2;error_2=error_1;error_1=error(k);
end
plot(time,rin,'b',time,yout,'r');   
xlabel('time(s)');ylabel('rin,yout');   
  
搜索更多相关主题的帖子: close 控制器 
2017-05-15 21:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477026-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.659570 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved