以弹簧自身质量不可忽略的阻尼器系统为例,通过Matlab的Control System Toolbox讲解控制系统的仿真,设弹簧控制系统的框图如下:
取m=1,k=1,c=2。
1、建立传递函数:
m=1;k=1;c=2; G1=tf(1,[1,0]); H=tf(k,[m,c]); ph=feedback(G1,H); G2=tf(1,[m,c]); syst=G2*ph;%传递函数 [A,B,C,D]=ssdata(syst); syss=ss(A,B,C,D);%或syss=ss(syst) %状态空间表达式 syszp=zpk(syst);%零-极-增益模型
2、系统响应
t=0:.2:15; y=impulse(syss,t);%冲激响应 figure(1) plot(t,y,'r'),grid
y=step(syss,t);%阶跃响应 figure(2) plot(t,y,'r'),grid
t=0:0.01:5;%自定义输入响应 u=sin(t); lsim(syss,u,t) %系统对由u和t描述的自定义输入信号的响应。对MIMO系统,u是一个矩阵,第i行是输人信号在T(i)时刻的值
disp('Residue Form') [num,den]=tfdata(syst); num=num{1};den=den{1};%将元胞数组转化成向量 [r,p,k]=residue(num,den) disp('hit any key to continue'),pause4、频域仿真
w=logspace(-2,2,100);%定义频率的对数区间 [re,im]=nyquist(syss,w);%state space形式,w可省略 re1=re(:);im1=im(:); g=re1+i*im1; mag=20*log10(abs(g));%幅值 phase=angle(g)*180/pi;%相角 semilogx(w,mag,'b') %%幅值曲线
semilogx(w,phase,'b'),grid %相角曲线
nyquist(systf),grid %绘制奈奎斯特图,或者用plot(re1,im1)
暂时到这吧,日后有需要再更新。。。