|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
M-file:
function [B1,B2,B3,B4]=xishu(a,b,c,t)
Tf=t^2/(2*t+b/2); Ti=b/2+a; Td=b*a/2*Ti; Kc=Ti/c*(2*t+b/2);
B1=Tf/(Tf+a); B2=Kc*a*(1+a/Ti+Td/a)/(Tf+a); B3=Kc*a*(1+2*Td/a)/(Tf+a);
B4=Kc*Td/(Tf+a); %计算式子系数
主程序段:
clear all; close all; ts=0.01;
a=1.8;b=2.8;c=5.15; %3个系统参数 a时间常数 b纯滞后时间 c稳态增益
t=input('单参数t='); %输入单参数
sys=tf(c,[a,1],'inputdelay',b); %被控系统模型
dsys=c2d(sys,ts,'zoh'); [num,den]=tfdata(dsys,'v'); %离散化
u_1=0.0; u_2=0.0; u_3=0.0; u_4=0.0; u_5=0.0; y_1=0.0; y_2=0.0; y_3=0.0;
du_1=0.0; du_2=0.0; %初始化
error_1=0; error_2=0; error_3=0;
for k=1:1:1000
time(k)=k*ts; rin(k)=0.02;
[B1,B2,B3,B4]=xishu(a,b,c,t) %计算式子系数
du=B1*du_1+B2*error+B3*error_1+B4*error_2;
u=du+u_1; %计算PID控制信号
if u(k)>=110, u(k)=110; end
if u(k)<=-110, u(k)=-110; end %处理PID控制信号
yout(k)=-den(2)*y_1+num(2)*u_5;
error=rin(k)-yout(k);
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);
du_2=du_1; du_1=du;
error_3=error_2; error_2=error_1; error_1=error;
end
plot(time,rin,'b',time,yout,'r'); xlabel('time(s)'); ylabel('rin,yout');
输入:
单参数t=1.0
Warning: Variable 'error' has been previously used as a function name.
(Type "warning off MATLAB:mir_warning_variable_used_as_function" to suppress this warning.)
结果:
B1 =
3.9667e-004
B2 =
1.6800e+007
B3 =
3.3591e+007
B4 =
1.6793e+007
??? Error using ==> error
Too many output arguments.
结果中的B1,B2,B3,B4是不是没理解最基本的矢量和向量,矩阵.
请教以下MATLAB编程的高手,
[ 本帖最后由 ChaChing 于 2009-4-28 20:49 编辑 ] |
|