当前位置:
文档之家› 基于MATLABSimulink机电系统动态仿真教程第6章概要
基于MATLABSimulink机电系统动态仿真教程第6章概要
第六章 时域分析、零极点分析 和根轨迹法
获得控制系统的瞬态响应和稳态响应 对系统的瞬态和稳态性能分析 根轨迹绘制和分析
参见书124页6.1节和249页的8.2节
6.1 系统的时域分析
时域分析法是研究系统对典型输入的时间响 应曲线,常用的输入信号有:
阶跃信号step 脉冲信号impulse 任一信号arbitrary inputs
1. step():
计算系统对单位阶跃输入的响应
y=step(num,den) step(num,den) [y,t,x]=step(num,den,t)
[y,t,x] = step(num,den,t)
y(t)=时间输出响应 x(t)=时间状态响应 the state trajectory x t=仿真时间
使用help step命令,了解函数的调用方法。
step(sys) t = 0:dt:Tfinal step(sys,t) step(sys1,sys2,...,sysN) step(sys1,sys2,...,sysN,t) step(sys1,'PlotStyle1',...,sysN,'PlotStyleN') [y,t,x] = step(sys)
x0=初始 状态
[y,t,x]=lsim(sys,u,t,x0)
y(t)=时间输出响应 x(t)=时间状态响应 sys=系统 模型 u=输入 t=计算信号 响应时间
例6-3
close t=[0:0.1:10]; num=[1]; zeta=0.4;
系统对斜坡输入的响应 G=1/(s2+2s+1)
t=计算阶跃 响应时间
G(s)=num/den
step的其他调用形式
无左边参数调用,绘制仿真计算图形。
step(sys);step(sys,t);step(sys1,sys2,…,t)
有左边参数调用,返回仿真计算结果。
y=step(sys,t) [y,t]=step(sys) [y,t,x]=step(sys)
例6-1
例6-1
mesh(y)
mesh(flipud(y),[-100 20])
2. impulse()
计算系统对单位脉冲输入的响应
调用方法与step()函数类似,用help impulse命令例了解 其调用规则 y=impulse(num,den) impulse(num,den) t=计算脉冲 [y,t,x]=impulse(num,den,t)
[y,t,x]=impulse(num,den,t)
y(t)=时间输出响应 x(t)=时间状态响应 t=仿真时间 G(s)=num/den
响应时间
例6-2 分析系统的脉冲响应
num=1;y=zeros(200,1);i=0;
for bc=0.1:0.1:1
den=[1,2*bc,1];t=[0:0.1:19.9]';sys=tf(num,den); i=i+1;y(:,i)=impulse(sys,t); end plot(y) legend('zeta=0.1','zeta=0.2','zeta=0.3','zeta=0.4','zeta=0.5','zeta =0.6','zeta=0.7','zeta=0.8','zeta=0.9','zeta=1.0',-1)
den=[1 2*zeta 1];
u=t; %单位斜坡输入 y=lsim(num,den,u,t); plot(t,y,'b-',t,u,'r:'); legend('zeta=0.4','u=t',0)
6.2 系统动态及稳态性能的时域分析 1. 稳定性分析MATLAB实现的方法
MATLAB提供了直接求取系统所有零极点的函数,因此 可以直接根据零极点的分布情况对系统的稳定性及是否 为最小相位系统进行判断。
roots()、 pzmap()
已知开环传函
对系统闭环稳定性判别
[n1,d1]=zp2tf(z,p,k) n1 = 0 d1 =
1 P= 1 21 120 200
100( s 2) G( s) s( s 1)(s 20)
x0=初始状态
a = [-0.5572 -0.7814;0.7814 0]; c = [1.9691 6.4493]; x0 = [1 ; 0]; sys = ss(a,[],c,[]); initial(sys,x0)
lsim()计算系统对任意输入的响应
[y,t,x]=lsim(sys,u,t,x0) y=lsim(sys,u,t) lsim(sys,u,t)
a = [-0.5572 -0.7814;0.7814 0]; b = [1 -1;0 2]; c = [1.9691 6.4493]; sys = ss(a,b,c,0);
例6-1
G=1/(s2+2s+1)
num=1;y=zeros(200,1);i=0;for bc=0. Nhomakorabea:0.1:1
den=[1,2*bc,1];sys=tf(num,den);t=[0:0.1:19.9]; i=i+1;y(:,i)=step(sys,t); end plot(y) legend('zeta=0.1','zeta=0.2','zeta=0.3','zeta=0.4','zeta=0.5','zeta =0.6','zeta=0.7','zeta=0.8','zeta=0.9','zeta=1.0',-1)
例6-2
mesh(flipud(y),[-100 20])
3. 其他输入下的时域响应
sys=系统模型
initial() 零输入响应 [y,t,x]=initial(sys,x(0)) help initial命令了解命令的使用方法。
initial(sys,x0) initial(sys,x0,t) initial(sys1,sys2,...,sysN,x0) initial(sys1,sys2,...,sysN,x0,t) initial(sys1,'PlotStyle1',...,sysN,'PlotStyleN',x0) [y,t,x] = initial(sys,x0)