1、1前实验一 MATLAB 运算基础一、实验目的1. 熟悉 MATLAB 的工作环境和各窗口功能;2. 熟悉基本的 MATLAB 环境命令操作。二、实验基本知识1. 熟悉 MATLAB 环境: MATLAB 桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。2. 掌握 MATLAB 常用命令clc:清除命令窗口中内容clear:清除工作空间中变量help:对所选函数的功能、调用格式及相关函数给出说明3. MATLAB变量与运算符变量命名规则如下: (1) 变量名可以由英语字母、数字和下划线组成;(2) 变量名应以英文字母开头;(3) 长度不大于31个;(4) 区分
2、大小写。MATLAB中设置了一些特殊的变量与常量,列于下表。表1 MATLAB的特殊变量与常量变量名 功能说明 变量名 功能说明ANS 默认变量名,以应答最近一次操作运算结果 realmin 最小的正实数i或j 虚数单位 INF(inf) 无穷大pi 圆周率 NAN(nan) 不定值(0/0)eps 浮点数的相对误差 nargin 函数实际输入参数个数realmax 最大的正实数 nargout 函数实际输出参数个数MATLAB运算符,通过下面几个表来说明 MATLAB的各种常用运算符。表2 MATLAB算术运算符操作符 功能说明 操作符 功能说明 + 加 矩阵左除- 减 . 数组左除* 矩阵
3、乘 / 矩阵右除.* 数组乘 ./ 数组右除 矩阵乘方 矩阵转置. 数组乘方 . 数组转置2表3 MATLAB关系运算符操作符 功能说明 = 等于= 不等于 大于= 大于等于= 小于等于表 4 MATLAB 逻辑运算符逻辑运算符 逻辑运算 说明 1:2:11 .; 分隔行 , 分隔列 () % 注释 构成向量、矩阵 ! 调用操作系统命令 构成单元数组 = 用于赋值4. 多项式运算 poly: 产生特征多项式系数向量 例如 poly(1 2) 表示特征根为1和2的特征多项式的系数向量,结果为 ans = 1 -3 2roots: 求多项式的根例如 roots(1 3 0 4) 求特征方程s3+3
4、s2+4=0的根,结果为 ans =-3.3553 0.1777 + 1.0773i0.1777 - 1.0773ip=poly2str(c,x)(以习惯方式显示多项式)例如 p=poly2str(1 3,x) 以 x为变量表示多项式,结果为p=x+3conv,convs: 多项式乘运算deconv: 多项式除运算tf: 构造一个传递函数三、实验内容 1. 学习使用 help命令,例如在命令窗口输入 help conv,然后根据帮助说明,学习使用指令conv (其它不会用的指令,依照此方法类推)32. 学习使用clc、clear ,观察command window、command histor
5、y和workspace等窗口的变化结果。3. 初步程序的编写练习,新建 M-file,保存(自己设定文件名,例如 exerc1、exerc2、 exerc3),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。注意:每一次M-file的修改后,都要存盘。4实验二 典型线性环节的模拟一、实验目的1. 通过实验熟悉 matlab 的 simulink 仿真环境。2. 研究分析参数变化对典型环节动态特性的影响。二、实验原理框图1. 惯性比例环节上图可观察输入输出两条曲线 该图只能观察输出曲线 图 1注:将图中的输入信号模块 step 模块更换为 Ramp 模块既可观察斜
6、坡响应曲线。2. 二阶环节仿真,如图 2 所示:图 23. 积分环节仿真,如图 3 所示:图 34. 比例积分环节仿真,如图 4 所示:图 45. 比例+微分环节仿真,如图 5 所示:图 556. 比例+积分+微分环节仿真,如图 6 所示:图 6三、思考题1惯性环节在什么情况下可近似比例环节?而在什么情况下可近似为积分环节?2惯性环节与不振荡的二阶环节的阶跃响应曲线有何不同? 四、实验报告要求完成上述各项实验内容,并记录实验遇到的问题和实验结果。6实验三 二阶系统的阶跃响应一、 实验目的1. 学习二阶系统阶跃响应曲线的实验测试方法;2. 研究二阶系统的两个重要参数 wn、ksi 对阶跃响应指标
7、的影响;3. 学习系统时域性能的分析方法。二、 实验内容1. Matlab 控制系统工具箱提供了两种典型输入的系统响应函数(1) step( )单位阶跃响应函数y=step(num,den,t)其中:num 和 den 分别为系统传递函数描述中的分子和分母多项式系数,t 为选定的仿真时间向量,一般可由 t=0: step:end 等步长地产生。该函数返回值 y 为系统在仿真中所得输出组成的矩阵。y,x,t=step(num,den)时间向量 t 由系统模型特性自动生成,状态变量 x 返回为空矩阵。如果对具体响应值不感兴趣,只想绘制系统的阶跃响应曲线,可以以如下格式进行函数调用:step(num
8、,den)step(num,den,t) 线性系统的稳态值可以通过函数 dcgain( )来求得,其调用格式为:dc=dcgain(num,den) dc=dcgain(a,b,c,d)(2)impulse( )单位冲激响应函数求取脉冲激励响应的调用方法与 step( )函数基本一致。y=impulse(num,den,t)y,x,t=impulse(num,den)impulse(num,den)impulse(num,den,t) 2. 仿真分析应用(1)输入信号为单位阶跃信号、单位斜坡信号、单位加速度信号时的响应a. 系统的闭环传递函数为: ,分析其单位阶跃响应曲线。程序代码如下:21(
9、)0.4Gssclear;num=1;den=1,0.4,1;t=0:0.1:10;G=tf(num,den) %系统传递函数7y=step(G,t); %单位阶跃响应plot(t,y);grid;xlabel(Timesec t);ylabel(y);结果G =1-s2 + 0.4 s + 1Continuous-time transfer function.其单位阶跃响应曲线如图 1 所示。图 1 单位阶跃响应曲线b. 系统的闭环传递函数为: ,分析其单位斜坡响应曲线。程序代码如下:2()0.3Gssclear;num=1;den=1,0.3,1;t=0:0.1:10;u=t; %单位斜坡
10、输入G=tf(num,den) %系统传递函数y=lsim(G,u,t); %单位斜坡响应plot(t,y);grid;xlabel(Timesec t);ylabel(y);8其单位斜坡响应曲线如图 2 所示。图 2 单位斜坡响应曲线c. 系统的闭环传递函数为: ,分析其单位加速度斜坡响应曲线。程序代码如下:1()0.3Gssclear;num=1;den=1,0.3,1;t=0:0.1:10;u=1/2.*t.*t; %单位加速度输入G=tf(num,den) %系统传递函数y=lsim(G,u,t); %单位加速度响应plot(t,y);grid;xlabel(Timesec t);yl
11、abel(y);其单位加速度斜坡响应曲线如图 3 所示。图 3 单位加速度斜坡响应曲线d. 单位负反馈的开环传递函数为 ,系统输入单位斜坡信号时的响应曲线及其输入输出2()10sG信号对比。代码如下:clear;numg=1,2;9deng=1,10,1;sys=tf(numg,deng) %单位负反馈系统的开环传递函数G= feedback (sys,1) %系统传递函数v1=0:0.1:1;v2=0.9:-0.1:-1;v3=-0.9:0.1:0;t=0:0.1:4;u=v1,v2,v3; %输入信号y=lsim(G,u,t); %输出信号plot(t,y,t,u);xlabel(Time
12、sec t);ylabel(thetarad);grid;结果如图 4 所示。图 4 输入输出信号曲线(2)时域响应分析a. 典型二阶系统的开环传函为 ,单位负反馈, ,绘制 取2()nGs1n0,0.2,0.4,0.6,0.9,1.2,1.5 时闭环系统的单位阶跃响应。代码如下:clear;wn=1; %无阻尼自然频率sigma=0,0.2,0.4,0.6,0.9,1.2,1.5; %阻尼比,不同取值num=wn*wn;t=linspace(0,20,200);for j=1:7den=conv(1,0,1,2*wn*sigma(j);sys=tf(num,den) %单位负反馈系统的开环传
13、递函数G=feedback(sys,1) %系统传递函数y(:,j)=step(G,t); %单位阶跃响应step(G,t);10endplot(t,y(:,1:7);grid;gtext(sigma=0);gtext(sigma=0.2);gtext(sigma=0.4);gtext(sigma=0.6);gtext(sigma=0.9);gtext(sigma=1.2);gtext(sigma=1.5);结果如图 5 所示图 5 不同阻尼比时的单位阶跃响应曲线对一般的二阶系统,形式变化后可用 表示,其中 K 为回路增益,通常可调,T2()1KTGss为时间常数,由受控对象特性决定,一般不可
14、调。分析 K 和 T 对系统单位阶跃响应的影响b. 系统开环传递函数 ,其中 ,绘制 K 取 0.1,0.2,0.5,0.6,0.8,1.0,2.4 时闭环()1)KsT系统的单位阶跃响应。代码如下:clear;T=1;K=0.1,0.2,0.5,0.8,1.0,2.4;t=linspace(0,20,200);num=1;den=conv(1,0,T,1);for j=1:611sys=tf(num*K(j),den); %单位负反馈系统的开环传递函数G=feedback(sys,1); %系统传递函数y(:,j)=step(G,t); %单位阶跃响应endplot(t,y(:,1:6);g
15、rid;gtext(K=0.1);gtext(K=0.2);gtext(K=0.5);gtext(K=0.8);gtext(K=1.0);gtext(K=2.4);图 6 不同回路增益时的单位阶跃响应曲线c. 高阶系统分析主导极点构成的系统与原系统的单位阶跃响应已知高阶系统的传递函数为 ,考虑主导极点及偶极子后系统22(1.5)()07)Kss s近似的传递函数为 1.5.76)K=147.3;t=0:0.1:10;num0=K*1,1.5;den00=1,2,5;den01=1,10,26;den02=1,1.7;G0=tf(num0,conv(den00,conv(den01,den02)
16、; %高阶系统的传递函数y0=step(G0,t); %单位阶跃响应12num1=5;G1=tf(num1,den00); %考虑主导极点及偶极子后系统近似的传递函数y1=step(G1,t); %单位阶跃响应plot(t,y0,b,t,y1,g);grid;gtext(original system response);gtext(predominate poles modified system response);三、 思考与实验报告要求1. 思考:二阶系统结构参数 ksi、wn 对其单位阶跃响应的性能有何影响。2. 线性系统稳定性分析。3. 记录实验结果及实验中遇到的问题。13实验四
17、控制系统的根轨迹分析法一、 实验目的根轨迹法根据用于研究系统结构参数(如开环增益)改变对系统闭环极点分布的影响,从而进行系统性能分析。根轨迹分布:左右分布决定终值(稳定性) ,虚实分布决定振型,远近决定响应快慢。通过实验熟悉 matlab 中与根轨迹分析相关的函数,借助这些函数对控制系统进行根轨迹分析,观察系统的零极点分布,根据根轨迹判断系统的稳定性,寻找特定闭环极点。二、 实验内容1. 常用 Matlab 控制系统工具箱提供的根轨迹分析函数(1)pzmap( ) 绘制零极点函数调用格式:pzmap (sys)pzmap(sys1,sys2,) p,z= pzmap (sys)使用说明:pzm
18、ap(sys)函数可绘制线性定常系统的零极点图,对于 SISO 系统而言就是绘制传递函数的零极点。pzmap(sys1,sys2,.)函数可在同一复平面绘制不同系统的零极点图,为区别起见可用不同颜色表示,如 pzmap(sys1,r,sys2,b) 。p,z= pzmap (sys),返回零极点数据,不绘制零极点图。(2)绘制根轨迹的函数 rlocus( )调用格式rlocus (sys)rlocus(sys,k) rlocus (sys1,sys2,) r,k=rlocus (sys)或 r=rlocus(sys,k)使用说明rlocus 计算并绘制 SISO 系统的根轨迹。适用于连续时间系
19、统和离散时间系统。rlocus(sys,k)绘制增益为 k 时的闭环极点。rlocus (sys1,sys2,) 在同一个复平面中画出多个 SISO 系统的根轨迹,为区分系统的根轨迹也可以用不同颜色来区别,如:rlocus (sys1,r,sys2,b:,sys3,gx)。r,k= rlocus (sys)或r=rlocus(sys,k)返回增益为 k 时复根位置的矩阵 R,R 有 length(k)行,其第 j 行列出的是增益 K(j)时的闭环根。(3)计算给定一组根的根轨迹增益的函数 rlocfind( )调用格式k,poles=rlocfind(sys)k,poles=rlocfind(
20、sys,p)使用说明rlocfind( )函数可计算出与根轨迹上极点对应的根轨迹增益。适用于连续时间系统和离散时间系统。k,poles=rlocfind(sys)执行后,在根轨迹图形窗口显示十字形光标,当用户在根轨迹上选择一点时,其相应14的增益由 k 记录,与增益相关的所有极点记录于 poles 中。k,poles=rlocfind(sys,p)函数可对指定根计算对应的增益与根矢量。(4)在连续系统根轨迹图上加等阻尼线和等自然振荡线的函数 sgrid调用格式sgridsgrid(z,wn)使用说明sgrid( )函数命令可在连续系统的根轨迹或零极点图上绘制出栅格线,栅格线由等阻尼系数与自然振
21、荡角频率构成。阻尼线间隔为 0.1,范围从 0 到 1,自然振荡角频率的间隔为 1rad/s,范围从 1 到 10。绘制栅格线之前,当前窗口必须有连续时间系统的根轨迹或零极点图,或者该函数必须与函数 pzmap( )或 rlocus( )一起使用。sgrid(z,wn)函数可以指定阻尼系数 z 与自然振荡角频率 wn。2. 仿真分析应用(一般根轨迹程序仿真)(1)系统的传递函数为 ,作出零极点图。程序如下:2.5(6)()3ssnum=2.5 15;den=conv(1,2,3,1,5);sys=tf(num,den);%绘制零极点图pzmap(sys);%输出零极点p,z=pzmap(sys
22、);title(零极点图 );结果如图 1 所示。图 1 零极点图(2)单位负反馈系统的开环传递函数为 ,绘制闭环根轨迹。程序代码如下:()(0.5)(41ssnum=1;den=conv(1,1,conv(0.5,1,4,1); sys=tf(num,den);%绘制根轨迹图rlocus(sys);15p,z=pzmap(sys);title(根轨迹图 );结果如图 2 所示。图 2 闭环根轨迹(3)已知某单位负反馈系统开环传递函数为 ,绘制闭环根轨迹并在根轨迹上(5)()132Kss任选一点计算该点增益 K 机所有极点的位置。代码如下:num=1,5;den=conv(1,1,conv(1
23、,3,1,12);sys=tf(num,den);%绘制根轨迹图rlocus(sys);k,poles=rlocfind(sys);%计算用户所选定点处的增益和其他闭环极点title(根轨迹图 );结果如图 3 所示。图 3 闭环根轨迹16(4)系统的闭环传递函数为 ,做出系统带栅格线的根轨迹图。程序代码如下:251()3snum=2,5,1;den=1,2,3;sys=tf(num,den)%绘制根轨迹图rlocus(sys)%添加栅格线sgridtitle(带栅格线的根轨迹图)结果如图 4 所示。图 4 带栅格线的根轨迹图三、 思考与实验报告要求1、如何在 matlab 中寻找特定的阻尼比
24、下 K 值和全部闭环特征根。2、设定一高阶不稳定系统,分析如何让系统稳定并画出稳定系统的根轨迹。3、记录实验中遇到的问题。17实验五 控制系统的频域分析法一、 实验目的1. 学习 matlab 中与频域分析相关的函数的应用。2. 根据绘制的频率特性分析系统性能。二、 实验内容1. Matlab 控制系统工具箱提供的频域法分析函数(1)nyquist( )极坐标图调用格式:nyquist (num,den)使用说明:nyquist (num,den)绘制以连续时间多项式传递函数表示的系统极坐标图。当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(w 从负无穷到正无穷) 。当代输出变量re,im
25、,w 引用函数时,可得到系统频率特性函数的实部 re、虚部 im 以及角频率点 w 矢量(为正部分) ;可用 plot(re,im)绘制出 w 从负无穷到零变化对应部分。(2)Bode( )对数坐标图调用格式:bode(num,den) bode(num,den,w)使用说明:bode(num,den)绘制以连续时间多项式传递函数表示的系统极 bode 图。当代输出变量mag,pha,w或mag,pha引用函数时,可得到系统 bode 图相应的 mga、相角 pha 与角频率点 w 矢量,或只是返回幅值与相角。相角以度为单位,幅值可转换为分贝单位:mag(dB)=20log10(mag)。2.
26、 仿真分析应用(1)绘制 Nyquist 图已知一个典型的一阶环节传递函数为 。仿真程序如下:5()31Gsclear;num=5;den=3,1;G=tf(num,den);nyquist(G)grid;结果如图 1 所示。图 1 Nyquist 图18(2)绘制 bode 图已知一个典型的二阶环节传递函数为2()nGss,绘制自然频率为 0.7、不同阻尼比时的 bode 图。程序代码如下:w=0,logspace(-2,2,200);wn=0.7;tou=0.1,0.4,1.0,1.6,2.0;for j=1:5sys=tf(wn*wn,1 2*tou(j)*wn,wn*wn);bode(
27、sys,w);hold on;endgtext(tou=0.1);gtext(tou=0.4);gtext(tou=1.0);gtext(tou=1.6);gtext(tou=2.0);结果如图 2 所示。图 2 不同阻尼比时的 bode 图已知二阶系统的传递函数为 ,matlab 绘制 bode 图,并从图中直接得出谐振峰值和3.6()5Gs谐振频率。代码如下:num=3.6;den=1,3,5;G=tf(num,den);bode(G);19在 bode 图上右键菜单选择“peak Response”菜单项。出现一个原点即谐振频率处,如图 3 所示。图 3 bode 图(3)稳定性分析已知
28、一高阶系统的传递函数为5(0.167)().)2(.01)sGs,计算系统的相角稳定裕度和幅值稳定裕度,绘制 bode 图。代码如下:num=5*0.0167,1;den=conv(conv(1,0,0.03 ,1),conv(0.0025,1,0.001,1) );G=tf(num,den);w=logspace(0,4,50);bode(G,w);grid;Gm,Pm,Wcg,Wcp=margin(G);程序执行结果:Gm=455.2548 Pm = 85.2751Wcg=602.4232 Wcp = 4.9620结果如图 4 所示。图 4 bode 图已知一高阶系统的传递函数为: ,计算
29、当开环增益(0.167)().3)25(.01)KsGssK=5,500 ,800 ,3000 时系统稳定裕度的变化。程序代码如下:K=5,500,800,3000;for j=1:420num=K(j)*0.0167,1;den=conv(conv(1,0,0.03,1),conv(0.0025,1,0.001,1);G=tf(num,den);y(j)=allmargin(G);endy(1)y(2)y(3)y(4)运行结果:y = 1x4 struct array with fields:GMFrequencyGainMarginPMFrequencyPhaseMarginDMFrequ
30、encyDelayMarginStableans = GMFrequency: 602.4232GainMargin: 455.2548PMFrequency: 4.9620PhaseMargin: 85.2751DMFrequency: 4.9620DelayMargin: 0.2999Stable: 1系统开环传递函数为 ,绘制 k=1,5,20 时系统极坐标图,并利用 Nyquist 稳10()5)(kGss定判据判断闭环系统的稳定性。代码如下:clearz=p=0,-5,-10k=100.*1 5 10G=zpk(z,p,k(1)re1,im1=nyquist(G)G=zpk(z,p,
31、k(2)ans = GMFrequency: 602.4232GainMargin: 4.5525PMFrequency: 237.7216PhaseMargin: 39.7483DMFrequency: 237.7216DelayMargin: 0.0029Stable: 1ans = GMFrequency: 602.4232GainMargin: 2.8453PMFrequency: 329.9063PhaseMargin: 27.7092DMFrequency: 329.9063DelayMargin: 0.0015Stable: 1ans = GMFrequency: 602.423
32、2GainMargin: 0.7588PMFrequency: 690.5172PhaseMargin: -6.7355DMFrequency: 690.5172DelayMargin: 0.0089Stable: 021re2,im2=nyquist(G)G=zpk(z,p,k(3)re3,im3=nyquist(G)plot(re1(:),im1(:),re2(:),im2(:),re3(:),im3(:)v=-5,1,-5,1;axis(v)gridxlabel(Real Axis)ylabel(Imaginary Axis)text(-0.4,-3.6,K=1)text(-2.7,-2.7,K=5)text(-4.4,-1.6,K=10)结果如图 5 所示。图 5 Nyquist 图三、 思考与实验报告要求1、绘制二阶系统的频率特性图并在 bode 图上找出对应于输入不同频率时的对数幅频和相频值,改变阻尼比或自然频率,分析闭环带宽与这两者的关系。2、总结通过实验得到系统频率特性的方法。3、实验中遇到的问题。