(MATLAB学习)第六节控制系统工具箱
第六节 控制系统工具箱,6.1 控制系统工具箱概述 6.2 主要构成函数,6.1 控制系统工具箱概述,MATLAB 6.X中的控制系统工具箱(控制系统工具箱) 为线性时不变系统(LTI)的建模和分析提供了丰富的函数 和工具, 既支持连续和离散系统, 也能处理SISO和MIMO 系统。 并且, 用户可以将多个LTI模型放在同一个数组中 统一进行计算和分析。 控制系统工具箱查看方式: 1、在命令窗口中输入 :help control 2、选择help菜单项 MATLAB help 项 打开MATLAB 帮助 找到 Control System Toolbox (控制系统工具箱),MATLAB 6.X支持的LTI模型,传递函数模型 (TF) ,如 零极点-增益模型 (ZPK) ,如 状态空间模型 (SS) ,如 频率响应数据模型 (FRD),连续与离散系统的关系示意图,各种线性时不变(LTI)系统之间的转换关系。,6.2 连续系统主要函数,tf 创建或转换系统的传递函数模型 zpk 创建或转换零极点增益模型 ss 创建或转换连续系统状态空间模型 frd 创建FRD(频率响应)模型 tfdata 获取传递函数中的数据 ssdata 获取状态空间模型中的数据 zpkdata 获取零极点增益模型中的数据 frdata 获取FRD模型中的数据 impulse 绘制系统的脉冲响应曲线 step 绘制系统的阶跃响应曲线 lsim 绘制系统在任意输入信号下响应曲线,主要函数,nyquist 绘制nyquist图 bode 绘制bode图 nichols 绘制nichols图 freqs laplace变换频率响应 (s - 域) pole 得到极点 zero 得到零点 residue 留数运算 class 判断模型的类型,1. 创建系统的传递函数模型 tf,连续SISO系统的传递函数为: 可以采用两种方法创建SISO传递函数模型。 一种使用tf命令, 一种直接引用Laplace变量s的多项式。 使用tf命令的方法是 h = tf(num, den) 其中, 行向量num和den分别是多项式n(s)和d(s)的系数。 注意这里的多项式是按照s的降幂排列的。,举例:使用tf命令,例如, 如果某个SISO系统的传递函数是 h(s)=s/(s2+2s+10) 则可以通过下面的命令来创建该系统的传递函数模型: h = tf(1 0,1 2 10) MATLAB的输出结果为 s - s2 + 2 s + 10 h是一个TF对象, 存放传递函数的分子分母多项式数据,引用Laplace变量s的多项式,也可以按照通常习惯用s的多项式来直接表示SISO 系统的传递函数。 首先将s定义为Laplace算子: s = tf(s); 然后输入s的多项表达式。 例如, 输入 H = s/(s2 + 2*s +10); 将产生与h = tf(1 0,1 2 10)相同的系统模型。,2.创建零极点-增益模型 zpk,连续SISO系统的零极点-增益模型的一般形式为: 调用语句: 1、sys = zpk(Z,P,K) 连续系统的ZPK模型 2、sys = zpk(Z,P,K,Ts) 离散系统的ZPK模型 其中:Z为零点向量 P为极点向量 K为增益 Ts为采样时间参数,举例:,例如, 如果某个SISO系统的传递函数是 h(s)=4*(s+1) / (s2 +7s+10) 则可以通过下面的命令来创建该系统的零极点模型: 参数值获取: Z = -1; P = -2 -5; K = 4; 调用语句: sys = zpk(Z,P,K) 调用结果:Zero/pole/gain: 4 (s+1) - (s+2) (s+5),3.创建连续系统状态空间模型 ss,状态空间模型是采用线性微分或差分方程来描述系统的动态行为。 连续时间系统具有如下的一般形式 使用ss命令创建系统的状态空间模型的调用格式为 sys = ss(A,B,C,D),例:系统微分方程: 其中y为输出,u为输入。 令: 则: 即:,在MATLAB中创建下面系统的状态空间模型: 输入sys = ss(0 1;-5 -2, 0;3, 0 1, 0) 创建的系统状态空间模型为,举例:,a= x1 x2 x1 0 1.00000 x2 -5.00000 -2.00000 b = u1 x1 0 x2 3.00000,c = x1 x2 y1 0 1.00000 d = u1 y1 0,4. 创建FRD模型 frd,如果无法直接建立研究对象的传递函数或状态空间模型, 而只知道该系统在某些频率处的频率响应值, 仍然可以采 用frd命令创建该系统的频率响应模型。 frd命令的调用格式是 sys = frd(response, frequencies, units) 其中 frequencies是由不同频率值构成长为N的实数向量, response是与这些频率值对应复数形式频率响应值 nuits 是频率单位,缺省值rad/s,也可取Hz。 ,举例:,w = 0:0.1:3; y = sin(w)+i*cos(w); a = frd(y,w),各模型之间的相互转换,s = tf(s) a = (s+1)/(s2-2*s+1); freq = logspace(1,2); %101102 之间生成50个点 b = zpk(a) %tf - zpk c = ss(a) %tf - ss d = tf(b ) %zpk - tf e = ss(b) %zpk - ss f = zpk( c) %ss - zpk g = tf( c) %ss - tf h = frd(a,freq) %tf - frd I = frd(b,freq) %zpk - frd j = frd(c,freq) %ss - frd,5、获取模型参数,tfdata 获取传递函数中的数据 应用:num,den = tfdata(sys) 结果用cell保存 num,den = tfdata(sys,v) 结果用向量保存 举例:s = tf(s) a = (s+1)/(s2-2*s+1); 1. num,den = tfdata(a) 结果为 num = 1*3 double den = 1*3 double 需要调用语句celldisp(num)查看num的值 2. num,den = tfdata(a,v) num = 0 1 1 den = 1 -2 1,获取模型参数,ssdata 获取状态空间模型中的数据 应用:A,B,C,D = ssdata(sys) 结果直接显示 A,B,C,D = ssdata(sys,cell) 结果用cell保存 举例:s = tf(s) a = (s+1)/(s2-2*s+1); 1. A,B,C,D = ssdata(a) 结果为 A= B = C= D = 2. A,B,C,D = ssdata(a,cell) 需要调用语句celldisp(A)查看A的值,获取模型参数,zpkdata 获取零极点增益模型中的数据 应用:Z,P,K = zpkdata(sys) 结果用cell保存 Z,P,K = zpkdata(sys,v) 结果用向量保存 举例:s = tf(s) a = (s+1)/(s2-2*s+1); 1. Z,P,K = zpkdata(a) 结果为 Z = -1 P=2*1 double K = 1 需要调用语句celldisp(P)查看P的值 2. Z,P,K = zpkdata(a,v) Z=-1 P=1;1 K = 1,获取模型参数,frdata 获取FRD模型中的数据 应用: resp,freq = frdata(sys) 举例: freq = logspace(1,2,2); resp = .05*(freq).*exp(i*2*freq); sys = frd(resp,freq); resp,freq = frdata(sys,v),frdata 只能用于获取FRD模型中的数据 tfdata() zpkdata() ssdata() 可用于获取除FRD模型外的其他所有模型数据,串联,并联,反馈 G1=tf(1,1 1); G2=tf(1,1 2); 串联: G3=G1*G2 Transfer function: 1 - s2 + 3 s + 2 并联: G4=G1+G2 Transfer function: 2 s + 3 - s2 + 3 s + 2,反馈:函数 feedback(G,H,sign) sign=1为正反馈 sign=1为负反馈 G=tf(1,1 1); H=tf(1,1 0); sys=feedback(G,H,-1) Transfer function: s - s2 + s + 1,G(s),H(s),时域响应 单位脉冲响应: impulse( ); 单位阶跃响应: step( ); 任意输入响应: lsim( ); 用法: 以 step( ) 为例: 1. step(sys), sys 为传递函数,执行结果为画单位阶跃响应曲线。 如:系统 的单位阶跃响应 G=tf(1,1 1 1); step(G),6. 绘制典型信号下的响应曲线, G=tf(1,1 1 1); t=0:0.01:15; step(G,t),调用方法:y = step(sys,t) 其中,y 为单位阶跃响应的值。 如: G=tf(1,1 1 1); t=0:0.01:15; y=step(G,t); 如果想看阶跃响应曲线可以plot( ) 函数画。 plot(t,y),任意输入响应:lsim( ) lsim(sys,u,t) 其中 u 为输入, t 为时间。 如 单位斜坡响应: t=0:0.01:10; u=t; G=tf(1,1 1 1); lsim(G,u,t),7. 绘制专用图形,nyquist 绘制nyquist图,又称极坐标图 以G(jw)的实部和虚部分别作为横坐标和纵坐标绘制图形 用法:nyquist(sys) 举例:s = tf(s) a = (s+1)/(s2-2*s+1); nyquist(a),根轨迹画法 函数:rlocus( ) 例:开环传递函数: G=tf(1 1,2 1 0); rlocus(G) axis equal,7. 绘制专用图形,零度根轨迹: 例:单位正反馈开环传递函数: G=tf(-1 -2,1 5 8 6); rlocus(G),频率特性曲线 幅相频率特性曲线 函数 nyquist( ) 例: G=tf(4,1 1 4); nyquist(G)