马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
% TANK1L.M 单个蓄水槽的线性化模型
functionxdot=tank1l(t,x)
globalc1l c2l
xdot = c1l*x+c2l;
% TANK1L.M 单个蓄水槽的非线性化模型
functionxdot=tank1nl(t,x)
globac1nl c2nl
xdot = c1l*sqrt(x)+c2nl;
% TANKCS1.M 单个蓄水槽动态特性的仿真程序
clear all, close all, nfig = 0;
% 定义ODE求解器中使用的全局变量
globalc1nl c1l c2nl c2l
% 定义相关参数
too=0; tff=25; %仿真计算的启动和结束时间(min)
rho=62.4; %水的密度(lbm/ft^3)
g=1.1592e5; %重力加速度常数(ft/min^2)
wio=1900; %参考位置的入口处液体流速(lbm/min)
ho=10; %参考位置处的液位高度(ft)
a=5; %槽底的表面积(ft^2)
ae=.02; %出水管的表面积(ft^2)
% delta input
dw1=0.1*wio; %10%的变化
dw2=0.5*wio; %50%的变化
% 非线性系数
c1nl=-ae*sqrt(2*g)/a;
% 线性模型系数
r=sqrt(2*g*ho)/(rho*g*ae); c=rho*a; c1l=-1/(r*c);
% 非线性仿真 - 脉冲&阶跃响应#1
y1o=ho+dw1/c; c2nl=wio/c;
[t1i,y1i]=ode23(′tank1nl′,[too,tff],y1o);
y1o=ho; c2nl=(wio+dw1)/c;
[t1s,y1s]=ode23(′tank1nl′,[too,tff],y1o);
% 线性仿真 - 脉冲&阶跃响应#1
y1o=dw1/c; c2l=0;
[t2i,y2i]=ode23(′tank1l′,[too,tff],y1o); y2i=ho+y2i;
y1o=0; c2l=dw1/c;
[t2s,y2s]=ode23(′tank1l′,[too,tff],y1o); y2s=ho+y2s;
% 绘制结果#1
nfig=nfig+1; figure(nfig)
subplot(2,2,1),plot(t1i,y1i,′r′,t2i,y2i,′g:′),grid
title(′Impulse Response(10%)′);
xlabel(′Time(min)′),ylabel(′Height(ft)′);
legend(′NL′,′L′);
subplot(2,2,2),plot(t1s,y1s,′r′,t2s,y2s,′g:′),grid
title(′Step Response(10%)′);
xlabel(′Time(min)′),ylabel(′Height(ft)′);
legend(′NL′,′L′);
% 非线性仿真 - 脉冲&阶跃响应#2
y1o=ho+dw2/c; c2nl=wio/c;
[t1i,y1i]=ode23(′tank1nl′,[too,tff],y1o);
y1o=ho; c2nl=(wio+dw2)/c;
[t1s,y1s]=ode23(′tank1nl′,[too,tff],y1o);
% 线性仿真 - 脉冲&阶跃响应#2
y1o=dw2/c; c2l=0;
[t2i,y2i]=ode23(′tank1l′,[too,tff],y1o); y2i=ho+y2i;
y1o=0; c2l=dw2/c;
[t2s,y2s]=ode23(′tank1l′,[too,tff],y1o); y2s=ho+y2s;
% 绘制结果#2
subplot(2,2,3),plot(t1i,y1i,′r′,t2i,y2i,′g:′),grid
title(′ImpulseResponse(50%)′);
xlabel(′Time(min)′),ylabel(′Height(ft)′);
legend(′NL′,′L′);
subplot(2,2,4),plot(t1s,y1s,′r′,t2s,y2s,′g:′),grid
title(′Step Response(50%)′);
xlabel(′Time(min)′),ylabel(′Height(ft)′);
legend(′NL′,′L′);
% 线性化模型的频域仿真
b=r;a=[r*cl];sys1=tf(b,a);
w=logspace(-2,2,200); %仿真的频域范围(rad/min)
nfig=nfig+1; figure(nfig)
bode(sys1,w),xlabel(′Frequency(rads/min)′)
nfig=nfig+1; figure(nfig)
subplot(2,1,1),nichols(sys1,w)
subplot(2,1,2),nyquist(sys1,w)
[Re,Im]=nyquist(sys1,w); Resys1(:,1)=Re(1,1,:);
Imsys1(:,1)=Im(1,1,:);
这个我是按书本输入的,查了好几遍,就是出现??? Undefined function or variable 't'.由于我是刚开始学的MATLAB,希望有人帮我一下 |