《自动控制原理》
实验指导书
北京科技大学自动化学院控制科学与工程系
2013年4 月
自动控制原理实验指导书
目 录
实验一 典型系统的时域响应和稳定性分析 ................................................... 1 实验二 用MATLAB建立传递函数模型 ......................................................... 5 实验三 利用MATLAB进行时域分析 ........................................................... 13 实验四 线性定常控制系统的稳定分析 ......................................................... 25 实验五 利用MATLAB绘制系统根轨迹 ....................................................... 29 实验六 线性系统的频域分析 ......................................................................... 37 实验七 基于MATLAB控制系统频域法串联校正设计 ............................... 51 附录1 MATLAB简介 ...................................................................................... 58 附录2 SIMULINK简介 ................................................................................... 67
I
自动控制原理实验指导书
实验一 典型系统的时域响应和稳定性分析
一、实验目的
1.研究二阶系统的特征参量 (ξ、ωn) 对过渡过程的影响。 2.研究二阶对象的三种阻尼比下的响应曲线及系统的稳定性。 3.熟悉Routh判据,用Routh判据对三阶系统进行稳定性分析。
二、实验设备
PC机一台,TD-ACC+教学实验系统一套。
三、实验原理及内容
1.典型的二阶系统稳定性分析
(1) 结构框图:如图1-1所示。
R(S)+_E(S)1T0 SK1T 1 S+1C(S)
图1-1
(2) 对应的模拟电路图:如图1-2所示。
1uF20K200K2uFRr(t) 20K_500K__输入20K-C(t)输出10K10K_C (t)输出测量端 图1-2
(3) 理论分析
系统开环传递函数为:G(s)=? 开环增益: K=?
先算出临界阻尼、欠阻尼、过阻尼时电阻R的理论值,再将理论值应用于模拟
1
自动控制原理实验指导书
电路中,观察二阶系统的动态性能及稳定性,应与理论分析基本吻合。在此实验中由图1-2,可以确地1-1中的参数。
T0?, T1?,K1? K?
系统闭环传递函数为:W(s)?
其中自然振荡角频率:n?;阻尼比:?。 2.典型的三阶系统稳定性分析
(1) 结构框图:如图1-3所示。
R(S)+_E(S)1T0 SK1T 1 S+1K2T 2 S+1C(S)
图1-3
(2) 模拟电路图:如图1-4所示。
100K1uF500K20K2uF1uFRr(t) 20K_500K_100K__输入10K20K10K_C(t)输出测量端 图1-4
(3) 理论分析
系统的开环传函为:G(s)H(s)?
系统的特征方程为:1G(s)H(s)0。 (4) 实验内容
实验前由Routh判断得Routh行列式为:
S3 S2 S1 S0
为了保证系统稳定,第一列各值应为正数,因此可以确定
2
自动控制原理实验指导书
系统稳定 K值的范围
系统临界稳定K
系统不稳定K值的范围
四、实验步骤
1)将信号源单元的“ST”端插针与“S”端插针用“短路块”短接。由于每个运放单元均设臵了锁零场效应管,所以运放具有锁零功能。将开关分别设在“方波”档和“500ms~12s”档,调节调幅和调频电位器,使得“OUT”端输出的方波幅值为1V,周期为10s左右。
2.)典型二阶系统瞬态性能指标的测试
(1) 按模拟电路图1-2接线,将1中的方波信号接至输入端,取R = 10KΩ。 (2) 用示波器观察系统响应曲线C(t),测量并记录超调MP、峰值时间tp和调节时间tS。
(3) 分别按R = 20KΩ;40KΩ;100KΩ;改变系统开环增益,观察响应曲线C(t),测量并记录性能指标MP、tp和tS,及系统的稳定性。并将测量值和计算值进行比较 (实验前必须按公式计算出)。将实验结果填入表1-1中。
3)典型三阶系统的性能
(1) 按图1-4接线,将1中的方波信号接至输入端,取R = 30KΩ。 (2) 观察系统的响应曲线,并记录波形。
(3) 减小开环增益 (R = 41.7KΩ;100KΩ),观察响应曲线,并将实验结果填入表1-3中。表1-3中已填入了一组参考测量值,供参照。
五、实验现象分析
1)典型二阶系统瞬态性能指标实验测试值
表1-1 参数 项目 C (∞) MP (%) 理 论 值 测 量 值 tP (s) 理 论 值 测 量 值 tS (s) 理 论 值 测 量 值 响应 情况 R (KΩ) K ωn ξ C (tp) 0<ξ<1 欠阻尼 ξ=1 临界 阻尼 ξ> 1 过阻尼 10 50 160 200 3
自动控制原理实验指导书
其中Mpe12,tpn4 ,ts,C(tp)1e2n112
2)典型三阶系统在不同开环增益下的响应情况
表1-2
R(KΩ) 表1-3
R(KΩ) 30 41 .7 100 开环增益K 16.7 12 5 稳定性 不稳定发散 临界稳定等幅振荡 稳定衰减收敛 开环增益K 稳定性
注意:在做实验前一定要进行对象整定,否则将会导致理论值和实际测量值相差较大。
4
自动控制原理实验指导书
实验二 用MATLAB建立传递函数模型
一、实验目的
(1)熟悉MATLAB实验环境,掌握MATLAB命令窗口的基本操作;
(2)掌握MATLAB建立控制系统数学模型的命令及模型相互转换的方法; (3)掌握使用MATLAB命令化简模型基本连接的方法;
(4)学会使用Simulink模型结构图化简复杂控制系统模型的方法。 二、实验原理及内容
控制系统常用的数学模型有四种:传递函数模型(tf对象)、零极点增益模型(zpk对象)、结构框图模型和状态空间模型(ss对象)。经典控制理论中数学模型一般使用前三种模型,状态空间模型属于现代控制理论范畴。 1、有理函数模型
线性连续系统的传递函数模型可一般地表示为:
b1smb2sm1bmsbm1G(s)n nm n1sa1san1san (1)
将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量num和den,就可以轻易地将传递函数模型输入到MATLAB环境中。命令格式为:
num[b1,b2,,bm,bm1]; den[1,a1,a2,,an1,an];
(2) (3)
用函数tf ( ) 来建立控制系统的传递函数模型,该函数的调用格式为: G=tf(num,den); (4) 例1 一个简单的传递函数模型:
G(s)s5 432s2s3s4s5可以由下面的命令输入到MATLAB工作空间中去。 >> num=[1,2];
den=[1,2,3,4,5]; G=tf(num,den) 运行结果:
Transfer function: s + 2 ----------------------------- s^4 + 2 s^3 + 3 s^2 + 4 s + 5
5
自动控制原理实验指导书
这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。 例2 一个稍微复杂一些的传递函数模型:
G(s)6(s5)
(s23s1)2(s6)>> num=6*[1,5];
den=conv(conv([1,3,1],[1,3,1]),[1,6]); tf(num,den) 运行结果
Transfer function:
6 s + 30
-----------------------------------------
s^5 + 12 s^4 + 47 s^3 + 72 s^2 + 37 s + 6
其中conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法也可以用这个函数来计算。该函数允许任意地多层嵌套,从而表示复杂的计算。 【自我实践1】建立控制系统的传递函数模型:G(s)2、零极点模型
线性系统的传递函数还可以写成极点的形式:
5
s(s1)(s24s4)G(s)K(sz1)(sz2)(szm)
(sp1)(sp2)(spn)将系统增益K、零点-zi和极点-pj以向量的形式输入给三个变量KGain、Z和P,命令格式为:
KGainK;
Z[z1;z2;;zm]; P[p1;p2;;pn];(6) (7) (8)
用函数命令zpk ( ) 来建立系统的零极点增益模型,其函数调用格式为:
G=zpk(Z,P,KGain) (9) 例3 某系统的零极点模型为:
G(s)6(s1.9294)(s0.03530.9287j)
(s0.95671.2272j)(s0.04330.12j)6
>> KGain=6;
自动控制原理实验指导书
z=[-1.9294;-0.0353+0.9287j;-0.0353-0.9287j];
p=[-0.9567+1.2272j;-0.9567-1.2272j;0.0433+0.12j;0.0433-0.12j]; G=zpk(z,p,KGain)
运行结果:
Zero/pole/gain:
6 (s+1.929) (s^2 + 0.0706s + 0.8637) --------------------------------------------------------- (s^2 - 0.0866s + 0.413) (s^2 + 1.913s + 2.421)
注意:对于单变量系统,其零极点均是用列向量来表示的,故z、p向量中各项均用分号(;)隔开。
【自我实践2】建立控制系统的零极点模型:G(s)8(s1j)(s1j)
s2(s5)(s6)(s21)3、控制系统模型间的相互转换
零极点模型转换为传递函数模型:[num , den] = zp2tf ( z, p, k ) 传递函数模型转化为零极点模型:[z , p , k] = tf2zp ( num, den ) 例4 给定系统传递函数为:
6.8s261.2s95.2 G(s)4 32s7.5s22s19.5s对应的零极点模型可由下面的命令得出 >> num=[6.8, 61.2, 95.2]; den=[1, 7.5, 22, 19.5, 0]; G=tf(num,den); G1=zpk(G) 显示结果:
Zero/pole/gain:
6.8 (s+7) (s+2)
------------------------------ s (s+1.5) (s^2 + 6s + 13)
可见,在系统的零极点模型中若出现复数值,则在显示时将以二阶因子的形式表示相应的共轭复数对。
例5 给定零极点模型:
G(s)6.8(s2)(s7))
s(s3j2)(s1.5)可以用下面的MATLAB命令立即得出其等效的传递函数模型。输入程序时要注意大小写。
7
自动控制原理实验指导书
>> Z=[-2,-7];
P=[0,-3-2j,-3+2j,-1.5]; K=6.8;
G=zpk(Z,P,K); G1=tf(G)
结果显示:
Transfer function:
6.8 s^2 + 61.2 s + 95.2
--------------------------------------- s^4 + 7.5 s^3 + 22 s^2 + 19.5 s
s25s6【自我实践3】已知系统传递函数G(s)3,求其等效的零极点模型。 2s2ss【自我实践4】建立控制系统的多项式模型:G(s)4、反馈系统结构图模型
设反馈系统结构图如图所示。
8(s1)(s2)。
s(s5)(s6)(s3)
图2-1反馈系统结构图
两个环节反馈连接后,其等效传递函数可用feedback ( ) 函数求得,其调用格式为:
sys = feedback(G1, G2, sign)
其中sign是反馈极性,sign缺省时,默认为负反馈,sign=-1;正反馈时,sign=1;单位反馈时,G2=1,且不能省略。
series( )函数:实现两个模型的串联;多于两个必须嵌套使用。 parallel( )函数:实现两个模型的并联;多于两个必须嵌套使用。 例6 若反馈系统如图2-1中的两个传递函数分别为: G1(s)11G(s), 2s1(s1)28
自动控制原理实验指导书
则反馈系统的传递函数: >> G1=tf(1,[1,2,1]); G2=tf(1,[1,1]);
G=feedback(G1,G2) 运行结果:
Transfer function:
s + 1
------------------------- s^3 + 3 s^2 + 3 s + 2
若采用正反馈连接结构输入命令 >> G=feedback(G1,G2,1) 则得出如下结果:
Transfer function: s + 1
--------------------- s^3 + 3 s^2 + 3 s
例7 若反馈系统为更复杂的结构如图2- 1所示。其中
10s51s37s224s24G(s)H(s)G1(s)4,, 232s0.01s1s10s35s50s24
图2- 1复杂反馈系统
则闭环系统的传递函数:
>> G1=tf([1,7,24,24],[1,10,35,50,24]);
G2=tf([10,5],[1,0]); H=tf([1],[0.01,1]);
G_a=feedback(G1*G2,H)
结果为:
Transfer function:
9
自动控制原理实验指导书
0.1 s^5 + 10.75 s^4 + 77.75 s^3 + 278.6 s^2 + 361.2 s + 120 --------------------------------------------------------------------
0.01 s^6 + 1.1 s^5 + 20.35 s^4 + 110.5 s^3 + 325.2 s^2 + 384 s + 120
【自我实践5】已知系统前向通道的传递函数G(s)2s1,求其单位负反馈2s2s3闭环传递函数。
5、Simulink建模方法
在一些实际应用中,如果系统的结构过于复杂,不适合用前面介绍的方法建模。在这种情况下,功能完善的Simulink程序可以用来建立新的数学模型。Simulink是由Math Works 软件公司1990年为MATLAB提供的新的控制系统模型图形输入仿真工具。它具有两个显著的功能:Simul(仿真)与Link(连接),即可以利用鼠标在模型窗口上“画”出所需的控制系统模型。然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。与MATLAB中逐行输入命令相比,输入更容易,分析更直观。下面简单介绍SIMULINK建立系统模型的基本步骤: (1)
SIMULINK的启动:在MATLAB命令窗口的工具栏中单击按钮
或者在
命令提示符>>下键入simulink命令,回车后即可启动Simulink程序。启动后软件自动打开Simullink模型库窗口,如 图2- 3所示。这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。若想建立一个控制系统结构框图,则应该选择File| New菜单中的Model选项,或选择工具栏上new Model引用源。所示。
按钮,打开一个空白的模型编辑窗口如错误!未找到
图2- 2 simulink 模型库 图2- 3模型编辑窗口
(2) 画出系统的各个模块:打开相应的子模块库,选择所需要的元素,用鼠标左键点中后拖到模型编辑窗口的合适位置。
(3) 给出各个模块参数:由于选中的各个模块只包含默认的模型参数,如默认的传递函数模型为1/(s+1)的简单格式,必须通过修改得到实际的模块参数。要修改模块
10
自动控制原理实验指导书
的参数,可以用鼠标双击该模块图标,则会出现一个相应对话框,提示用户修改模块参数。
(4) 画出连接线:当所有的模块都画出来之后,可以再画出模块间所需要的连线,构成完整的系统。模块间连线的画法很简单,只需要用鼠标点按起始模块的输出端(三角符号),再拖动鼠标,到终止模块的输入端释放鼠标键,系统会自动地在两个模块间画出带箭头的连线。若需要从连线中引出节点,可在鼠标点击起始节点时按住Ctrl键,再将鼠标拖动到目的模块。
(5) 指定输入和输出端子:在Simulink下允许有两类输入输出信号,第一类是仿真信号,可从source(输入源模块库)图标中取出相应的输入信号端子,从Sink(输出显示模块库)图标中取出相应输出端子即可。第二类是要提取系统线性模型,则需打开Connection(连接模块库)图标,从中选取相应的输入输出端子。
例8 典型二阶系统的结构图如图2- 4所示。用SIMULINK对系统进行仿真分析。
图2- 4 典型二阶系统结构图
按前面步骤,启动simulink并打开一个空白的模型编辑窗口。 (1) 画出所需模块,并给出正确的参数:
在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用
鼠标左键双击该图标,打开参数设定的对话框,将参数step time(阶跃时刻)设为0。
在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双
击该图标将参数List of signs(符号列表)设为|+-(表示输入为正,反馈为负)。 在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(Transfer
Fcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母(Denominator)改为〔1,9〕。
在sinks(输出)子模块库中选择scope(示波器)和Out1(输出端口模块)图标并将
之拖到编辑窗口中。
(3)将画出的所有模块按错误!未找到引用源。用鼠标连接起来,构成一个原系统的框图描述如图2- 5所示。
(4)选择仿真算法和仿真控制参数,启动仿真过程。
● 在编辑窗口中点击Simulation|Simulation parameters菜单,出现参数对话框,在
solver模板中设置响应的仿真范围StartTime(开始时间)和StopTime(终止时间),仿
11
自动控制原理实验指导书
真步长范围Maxinum step size(最大步长)和Mininum step size(最小步长)。对于本例,StopTime可设置为2。最后点击Simulation|Start菜单或点击相应的热键启动
仿真。双击示波器,在弹出的图形上会“实时地”显示出仿真结果。输出结果如 图2- 7所示。
图2- 5 二阶系统的simulink实现
图2- 6仿真结果示波器显示 图2- 7 MATLAB命令得出的系统响应曲线 命令窗口中键入whos命令,会发现工作空间中增加了两个变量――tout和yout,这是因为Simulink中的Out1 模块自动将结果写到了MATLAB的工作空间中。利用MATLAB命令plot(tout,yout),可将结果绘制出来,如错误!未找到引用源。所示。比较 图2- 7和错误!未找到引用源。,可以发现这两种输出结果是完全一致的。 三、 实验能力要求
(1)熟练使用各种函数命令建立控制系统数学模型。 (2)完成实验的范例题和自我实践,并记录结果。
12
自动控制原理实验指导书
实验三 利用MATLAB进行时域分析
一、实验目的
(1) 学会使用MATLAB编程绘制控制系统的单位阶跃响应曲线;
(2) 研究二阶控制系统中,、n对系统动态特性和时域指标的影响; (3) 掌握准确读取动态特性指标的方法;
(4) 分析二阶系统闭环极点和闭环零点对系统动态性能的影响;
(5) 研究三阶系统单位阶跃响应及其动态性能指标与其闭环极点的关系; (6) 研究闭环极点和闭环零点对高阶系统动态性能的影响; (7) 了解高阶系统中主导极点与偶极子的作用;
(8) 了解系统阶跃响应、脉冲响应和斜坡响应输出曲线之间的联系与差别。 二、实验原理及内容 1. 求系统的特征根
若已知系统的特征多项式D (s),利用roots ( ) 函数可以求其特征根。若已知系统的传递函数,利用eig ( ) 函数可以直接求出系统的特征根。 2、求系统的闭环根、和ωn
函数damp ( ) 可以计算出系统的闭环根、和n。 3、零极点分布图
可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,调用格式为:
pzmap(num,den)
【范例3-1】给定传递函数:
3s42s35s24s6 G(s)5 432s3s4s2s7s2 利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图3- 所示。
>> num=[3,2,5,4,6]; den=[1,3,4,2,7,2];
pzmap(num,den) title(¹Pole-Zero Map¹) % 图形标题。
13
自动控制原理实验指导书
图3- 1 MATLAB函数零、极点分布图
4、求系统的单位阶跃响应
step ( ) 函数可以计算连续系统单位阶跃响应(impulse( ) 函数可以计算连续系统单位脉冲响应):
step (sys) 或step ( sys , t ) 或step (num , den)
函数在当前图形窗口中直接绘制出系统的单位阶跃响应曲线,对象sys可以由tf ( ),zpk ( ) 函数中任何一个建立的系统模型。第二种格式中t可以指定一个仿真终止时间,也可以设置为一个时间矢量(如t=0 : dt : Tfinal,即dt是步长,Tfinal是终止时刻)。
如果需要将输出结果返回到MATLAB工作空间中,则采用以下调用格式: c=step(sys)
此时,屏上不会显示响应曲线,必须利用plot()命令查看响应曲线。plot 可以根据两个或多个给定的向量绘制二维图形。 【范例3-2】已知传递函数为:G(s)25 2s4s25利用以下MATLAB命令可得阶跃响应曲线如图3- 所示。 >> num=[0,0,25]; den=[1,4,25];
step(num,den)
grid % 绘制网格线。 title(¹Unit-Step Response of G(s)=25/(s^2+4s+25) ¹) % 图像标题
14
自动控制原理实验指导书
图3- 2 MATLAB绘制的响应曲线
还可以用下面的语句来得出阶跃响应曲线 >> G=tf([0,0,25],[1,4,25]);
t=0:0.1:5; % 从0到5每隔0.1取一个值。 c=step(G,t); % 动态响应的幅值赋给变量c
plot(t,c) % 绘二维图形,横坐标取t,纵坐标取c。 Css=dcgain(G) % 求取稳态值。
系统显示的图形类似于上一个例子,在命令窗口中显示了如下结果 Css= 1
5、求阶跃响应的性能指标
MATLAB提供了强大的绘图计算功能,可以用多种方法求取系统的动态响应指标。首先介绍一种最简单的方法――游动鼠标法。对于例2,在程序运行完毕后,在曲线中空白区域,单击鼠标右键,在快捷菜单中选择”characteristics”,包含:Peak response (峰值); settling time (调节时间);Rise time(上升时间);steady state(稳态值);在相应位置出现相应点,用鼠标单击后,相应性能值就显示出来。用鼠标左键点击时域响应曲线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)。这种方法简单易用,但同时应注意它不适用于用plot()命令画出的图形。
【自我实践1】若已知单位负反馈前向通道的传递函数为:G(s)100,试作出
s25s其单位阶跃响应曲线,准确读出其动态性能指标,并记录数据。
另一种比较常用的方法就是用编程方式求取时域响应的各项性能指标。与游动鼠标法相比,编程方法稍微复杂,但可以获取一些较为复杂的性能指标。
15
自动控制原理实验指导书
若将阶跃响应函数step( )获得系统输出量返回到变量y中,可以调用如下格式 [y,t]=step(G)
该函数还同时返回了自动生成的时间变量t,对返回变量y和t进行计算,可以得到时域性能指标。
① 峰值时间(timetopeak)可由以下命令获得:
[Y,k]=max(y); timetopeak=t(k)
② 最大(百分比)超调量(percentovershoot)可由以下命令得到:
C=dcgain(G); [Y,k]=max(y);
percentovershoot=100*(Y-C)/C dcgain( )函数用于求取系统的终值。
③ 上升时间(risetime)可利用MATLAB中控制语句编制M文件来获得。
要求出上升时间,可以用while语句编写以下程序得到: C=dcgain(G); n=1;
while y(n) 在阶跃输入条件下,y 的值由零逐渐增大,当以上循环满足y=C时,退出循环,此时对应的时刻,即为上升时间。 对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间,则计算程序如下: C=dcgain(G); n=1; while y(n)<0.1*C n=n+1; end m=1; while y(n)<0.9*C m=m+1; end risetime=t(m)-t(n) ④ 调节时间(setllingtime)可由while语句编程得到: C=dcgain(G); i=length(t); while(y(i)>0.98*C)&(y(i)<1.02*C) 16 自动控制原理实验指导书 i=i-1; end setllingtime=t(i) 用向量长度函数length( )可求得t序列的长度,将其设定为变量i的上限值。 【范例3-3】已知二阶系统传递函数为:G(s)3 (s13i)(s13i)利用下面的stepanalysis.m程序可得到阶跃响应如图3-及性能指标数据。 >> G=zpk([ ],[-1+3*i,-1-3*i ],3); % 计算最大峰值时间和超调量。 C=dcgain(G) [y,t]=step(G); plot(t,y) grid [Y,k]=max(y); timetopeak=t(k) percentovershoot=100*(Y-C)/C % 计算上升时间。 n=1; while y(n) % 计算调节时间。 i=length(t); while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1; end setllingtime=t(i) 运行后的响应图如图3-,命令窗口中显示的结果为 C = timetopeak = 0.3000 1.0491 percentovershoot = risetime = 35.0914 0.6626 setllingtime = 3.5337 17 自动控制原理实验指导书 图3-3 二阶系统阶跃响应 用游动鼠标法求取此二阶系统的各项性能指标与本例是一致的。 6、分析ωn不变时,改变阻尼比,观察闭环极点的变化及其阶跃响应的变化。 【自我实践2】二阶系统,ωn=10,当=0,0.25,0.5,0.75,1,1.25时,求对应系统的闭环极点、自然振荡频率及阶跃响应曲线;并分析对系统性能的影响。 参考程序: 18 自动控制原理实验指导书 阶跃响应曲线: 阻尼比不同时的阶跃响应曲线2ξ=01.81.6ξ=0.251.41.2ξ=0.5ξ=0.75ξ=1ξ=1.25Amplitude10.80.60.40.2000.20.40.60.81Time (sec)1.21.41.61.82 7、保持=0.25不变,分析ωn变化时,闭环极点对系统单位阶跃响应的影响。 【自我实践3】二阶系统,=0.25,当ωn=10,30,50时,求系统的阶跃响应曲线;并分析ωn对系统性能的影响。 参考程序: 阶跃响应曲线: 19 自动控制原理实验指导书 wn 变化时系统的阶跃响应曲线1.5wn=10wn=30wn=501Amplitude0.5000.20.40.60.81Time (sec)1.21.41.61.82 【综合实践】通过分别改变典型二阶系统的ξ和ωn,观察系统在脉冲、阶跃、斜坡信号作用下的响应特性,求时域指标,总结参数对系统性能影响的规律。 ξ ξ>1 ωn 0.2 1 0.2 ts tp σ% tr 响应曲线 参数影响说明 0<ξ<1 脉冲 ξ=0 1 0.2 1 0.2 -1<ξ<0 1 20 自动控制原理实验指导书 0.2 ξ<-1 1 0.2 ξ>1 1 0.2 0<ξ<1 1 阶跃 0.2 ξ=0 1 0.2 -1<ξ<0 1 0.2 ξ<-1 1 8、分析系统零、极点对系统阶跃响应的影响。 【自我实践4】试作出以下系统的阶跃响应,并与原系统G(s)响应曲线进行比较,作出实验结果分析。 1)系统有零点情况:z=-5,即G1(s)10的阶跃 s22s102s10; 2s2s10s20.5s102) 分子与分母多项式阶数相等:n=m=2,G2(s)2; s2s10s20.5s3) 分子多项式零次项系数为0,G3(s)2; s2s104) 原系统的微分响应,微分系数为1/10,G4(s)21 s。 s22s10自动控制原理实验指导书 【综合实践】附加零点的影响。 设原系统为: R(s) - 附加开环零点的情况: R(s) - P(s) Y(s) W0(s) 图3-4 原系统结构图 Y(s) W0(s) 图3-5 附加开环零点的系统结构图 附加闭环零点的情况为: R(s) P(s) —W0(s) Y(s) 图3-6 附加闭环零点的系统结构图 2n其中 P(S)=(TS+1)、W0(s)2。这里取ωn=1、ξ=0.5 s2ns 零点参数 闭环传递函数 T=0.2 单位阶跃响应曲线 说明零点的影响 附加开环零点 T=1 T=0.2 附加闭环零点 T=1 【综合实践】附加极点的影响。 当附加零点中的函数变为:P(S)=1/(TS+1),则上图3-4、3-5、3-6成为附加极点 22 自动控制原理实验指导书 的情况。假设取ωn=1、ξ=0.5,用单位阶跃信号作为系统输入,按照下表的要求输入参数,记录仿真曲线于下表。 极点参数 闭环传递函数 T=0.2 附加开环极点 T=1 T=0.2 附加闭环极点 T=1 响应曲线 说明极点的影响 9、三阶系统的单位阶跃响应分析 研究三阶系统单位阶跃响应及其动态性能指标与其闭环极点的关系。 【自我实践5】已知三阶系统闭环传递函数为(s)5(s2)(s3), (s4)(s22s2)① 编写MATLAB程序,求取系统闭环极点及其单位阶跃响应,读取动态性能指标。 ② 改变系统闭环极点的位置, (s)0.625(s2)(s3),即将原极点s = - 4改 (s0.5)(s22s2)成s= - 0.5,使闭环极点靠近虚轴,观察单位阶跃响应和动态性能指标变化。 ③ 改变系统闭环零点的位置,(s)10(s1)(s3),即将原零点s = - 2改成2(s4)(s2s2)s = - 1,观察单位阶跃响应及其动态性能指标的变化。 ④ 分析上面实验,给出结论。 10、高阶系统的单位阶跃响应分析 【自我实践6】已知控制系统的闭环传递函数 23 自动控制原理实验指导书 1(s)1.05(0.4762s1) 2(0.125s1)(0.5s1)(ss1)① 用MATLAB软件分析该系统的单位阶跃响应及其动态性能指标。 ② 将该系统的阶跃响应与二阶系统2(s)系统主导极点的特点及作用, ③ 比较系统3(s)1.05的单位阶跃响应比较分析闭环 s2s11.05和 (0.125s1)(0.5s1)(s2s1)4(s)1.05(s1)的单位阶跃响应及其动态性能指标,观察闭 (0.125s1)(0.5s1)(s2s1)环零点对系统动态性能产生的影响有哪些? ④ 比较系统1(s)和5(s)1.05(0.4762s1)的单位阶跃响应及其动态性能指 (0.5s1)(s2s1)标,分析非主导极点对系统动态性能的影响及作用。 ⑤ 比较系统2(s)和5(s)的单位阶跃响应及其动态性能指标,分析偶极子对系统动态性能的影响及作用。 三、实验报告要求 (1)完成实验内容中的实验,编写程序,记录相关数据和响应曲线,并分析,得出结论。 (2)总结阻尼比和固有频率对系统阶跃响应影响的规律。 (3)总结闭环零极点对系统阶跃响应影响的规律。 (4)总结非主导极点对系统动态性能的影响及作用。 (5)总结偶极子对系统动态性能的影响及作用。 24 自动控制原理实验指导书 实验四 线性定常控制系统的稳定分析 一、实验目的 (1)深刻理解反馈对系统稳定性的作用和影响; (2)深刻理解系统类型对系统稳定性的影响的规律; (3)深刻理解零点对系统稳定性无影响; (4)理解系统参数对系统稳定性的影响。 二、实验原理及内容: 1.单位反馈对系统稳定性的影响 (1) 已知开环系统结构图如图4-1所示。 R(S) Y(S) W(S) 图4-1 开环系统 其中W(S)分别为:(a)W(s)11和 (b)W(s) 0.1s1s0.2(2)闭环系统单位负反馈形式为: R(S) W ( S ) Y(S) 图4-2 闭环系统 其中W(S)同(1)。 通过观察两组W(S)在开环和闭环两种形式下系统的零、极点分布和单位阶跃响应曲线,来判断系统的稳定性。(参考实验三) 结构形式 系统传递函数 单位闭环极点 阶跃响应曲线 单位反馈对系统稳定性的影响 开环 a 闭环 1 0.1s1 25 自动控制原理实验指导书 开环 b 闭环 1 s0.2 2.系统类型对系统稳定性的影响及规律 线性定常系统的结构图如图4-2所示,则W(S)中含积分环节的个数就是系统的类型,分别取(a)W(s)111;(b)W(s)2;(c)W(s)3 2s1ssss通过观察闭环系统的零、极点分布与阶跃响应曲线来判断其稳定性,分析系统类型对系统稳定性的影响。 W(s) W(s) 1W(s)零、极点分布 单位阶跃响应曲线 系统类型对系统稳定性的影响及规律 1 s1 1 2ss 1s3s2 3.零、极点对系统稳定性的影响 若线性定常系统的结构图如图4-1所示, 其中W(S)分别为: (a)W(s)s0.2s0.2W(s);(b); s2s1s2s126 自动控制原理实验指导书 (c)W(s)11;(d) W(s)22(s0.2)(ss1)(s0.2)(ss1)通过观察系统的零极点分布与阶跃响应曲线,来判断其稳定性,分析零极点位置对系统稳定性有无影响。 W(s) 零极点位置 单位阶跃响应曲线 分析零极点的影响 s0.2 2ss1 s0.2 s2s1 1(s0.2)(s2s1) 1(s0.2)(s2s1) 4.系统参数对稳定性的影响 Kn2对于结构图4-1,当W(s)2,其中K=1,ξ=0.1 ωn=1。 2s2nsn保持其中的两个参数值不变,分别改变另一个参数,确定极点位置。观察响应曲线,分析各参数对系统稳定性的影响。 K ξ ωn 极点位置 1 1 0.1 单位阶跃响应曲线 影响分析 27 自动控制原理实验指导书 0.1 1 1 1 1 0.1 三、思考题 1)如何理解开环与闭环两个概念?如何理解它们的相对性? 2)通过实验观察,你认为系统的闭环零点的位置是否影响系统的稳定性?是否影响其动态特性?那么是否可以类推系统的开环零点的位置也不影响系统的稳定性?为什么? 3)系统的类型是可以开环传递中含积分环节的个数来确定的还是以闭环传递函数的积分环节数来确定的? 28 自动控制原理实验指导书 实验五 利用MATLAB绘制系统根轨迹 一、实验目的 (1)熟练掌握使用MATLAB绘制控制系统零极点图和根轨迹图的方法; (2)熟练使用根轨迹设计工具SISO; (2)学会分析控制系统根轨迹的一般规律; (3)利用根轨迹图进行系统性能分析; (4)研究闭环零、极点对系统性能的影响。 二、实验原理及内容 1、根轨迹与稳定性 当系统开环增益从变化时,若根轨迹不会越过虚轴进入s右半平面,那么系统对所有的K值都是稳定的;若根轨迹越过虚轴进入s右半平面,那么根轨迹与虚轴交点处的K值,就是临界开环增益。应用根轨迹法,可以迅速确定系统在某一开环增益或某一参数下的闭环零、极点位置,从而得到相应的闭环传递函数。 2、根轨迹与系统性能的定性分析 1)稳定性。如果闭环极点全部位于s左半平面,则系统一定是稳定的,即稳定性只与闭环极点的位置有关,而与闭环零点位置无关。 2)运动形式。如果闭环系统无零点,且闭环极点为实数极点,则时间响应一定是单调的;如果闭环极点均为复数极点,则时间响应一般是振荡的。 3)超调量。超调量主要取决于闭环复数主导极点的衰减率,并与其它闭环零、极点接近坐标原点的程度有关。 4)调节时间。调节时间主要取决于最靠近虚轴的闭环复数极点的实部绝对值;如果实数极点距虚轴最近,并且它附近没有实数零点,则调节时间主要取决于该实数极点的模值。 5)实数零、极点影响。零点减小闭环系统的阻尼,从而使系统的峰值时间提前,超调量增大;极点增大闭环系统的阻尼,使系统的峰值时间滞后,超调量减小。而且这种影响将其接近坐标原点的程度而加强。 假设闭环系统中的开环传递函数可以表示为: smb1sm1bm1bm(sz1)(sz2)(szm)numGk(s)KnKKKG0(s)den(sp1)(sp2)(spn)sa1sn1an1san 则闭环特征方程为: 1Knum0 den29 特征方程的根随参数K的变化而变化,即为闭环根轨迹。控制系统工具箱中提供 自动控制原理实验指导书 了rlocus()函数,可以用来绘制给定系统的根轨迹,它的调用格式有以下几种: rlocus(num,den) rlocus(num,den,K) 或者 rlocus(G) rlocus(G,K) 以上给定命令可以在屏幕上画出根轨迹图,其中G为开环系统G0(s)的对象模型,K为用户自己选择的增益向量。如果用户不给出K向量,则该命令函数会自动选择K向量。如果在函数调用中需要返回参数,则调用格式将引入左端变量。如 [R,K]=rlocus(G) 此时屏幕上不显示图形,而生成变量R和K。R为根轨迹各分支线上的点构成的复数矩阵,K向量的每一个元素对应于R矩阵中的一行。若需要画出根轨迹,则需要采用以下命令: plot(R,‟ „) plot()函数里引号内的部分用于选择所绘制曲线的类型,详细内容1.4.8节中plot函数的‘option’选项描述表。 控制系统工具箱中还有一个rlocfind()函数,该函数允许用户求取根轨迹上指定点处的开环增益值,并将该增益下所有的闭环极点显示出来。其调用格式为: [K,P]=rlocfind(G) 函数运行后,图形窗口中会出现要求用户使用鼠标定位的提示,用户可以用鼠标左键点击所关心的根轨迹上的点。这样将返回一个K变量,该变量为所选择点对应的开环增益,同时返回的P变量则为该增益下所有的闭环极点位置。此外,该函数还将自动地将该增益下所有的闭环极点直接在根轨迹曲线上显示出来。 【范例5-1】已知系统的开环传递函数模型:Gk(s)KKG0(s),绘 s(s1)(s2)制控制系统的根轨迹图,并分析根轨迹的一般规律。 利用下面的MATLAB命令可容易地验证出系统的根轨迹如图5-1所示。 >> G=tf(1,[conv([1,1],[1,2]),0]); rlocus(G); grid title(¹Root_Locus Plot of G(s)=K/[s(s+1)(s+2)]¹) xlabel(¹Real Axis¹) % 给图形中的横坐标命名。 ylabel(¹Imag Axis¹) % 给图形中的纵坐标命名。 [K,P]=rlocfind(G) 【思考】要想使此闭环系统稳定,如何确定其增益范围。 【解答】用鼠标点击根轨迹上与虚轴相交的点,在命令窗口中可发现如下结果 select_point=0.0000+1.3921i K= 30 自动控制原理实验指导书 5.8142 p= -2.29830 -0.0085+1.3961i -0.0085-1.3961i 所以,系统稳定的增益范围为0 根据控制系统的根轨迹,可以分析控制系统的性能。 参数根轨迹反映了闭环根与开环增益K的关系。我们可以编写下面的程序,通过K的变化,观察对应根处阶跃响应的变化。考虑K=0.1,0.2,…,1,2,…,5,这些增益下闭环系统的阶跃响应曲线。可由以下MATLAB命令得到。 >> hold off; % 擦掉图形窗口中原有的曲线。 t=0:0.2:15; Y=[ ]; for K=[0.1:0.1:1,2:5] GK=feedback(K*G,1); y=step(GK,t); Y=[Y,y]; end plot(t,Y) 对于for循环语句,循环次数由K给出。系统画出的图形如图5-2所示。可以看出,当K的值增加时,一对主导极点起作用,且响应速度变快。一旦K接近临界K值,振荡加剧,性能变坏。 31 自动控制原理实验指导书 图5-2 不同K值下的阶跃响应曲线 【自我实践5-1】在实验内容(2)中控制系统的根轨迹上分区段取点,构造闭环系统传递函数,分别绘制其对应系统的阶跃响应曲线,并比较分析。将数据填入实验数据记录表中。 阻尼比 闭环极点p 开环增益K 自然频率n 超调量% 调节时间ts =0 =0.25 =0.7 =1 =1.2 3、基于SISO设计工具的系统根轨迹设计 用根轨迹法进行系统校正过程中,分析补偿增益和附加实数(或复数)零极点之间匹配的规律。 在MATLAB命令窗口中输入命令【rltool】,然后回车,或者输入【rltool(sys)】函数命令,就可打开系统根轨迹的图形界面。 【范例5-2】已知系统开环传递函数G(s)1,试用根轨迹设计器对系统进行 s2(s10)补偿设计,使系统单位阶跃给定响应一次超调后就衰减;并在根轨迹设计器中观察根轨迹图与Bode图,以及系统阶跃给定响应曲线。 Step1:编写Matlab程序,调用rltool( ); 32 自动控制原理实验指导书 Step2:在根轨迹补偿校正器编辑器中,设计相应的增益和零极点; Step3:在新根轨迹图的主菜单中选择”analysis”下的各命令,观察相应的曲线。 【范例5-3】已知系统开环传递函数G(s)10,要求用根轨迹法设计超前校正装 0.5s2s置Gc1,要求Kv>20,希望该单位负反馈系统的时域性能指标%<15%, ts<1.5s。 33 自动控制原理实验指导书 【综合实践】绘制180°根轨迹。 请绘制: (1)G(s)Kg(T1s1)(T2s1)Kg;(2)G(s)Kg(as1)(T1s1)(T2s1); (3)G(s)(T1s1)(T2s1)(ps1)的根轨迹,其中T1=0.2,T2=2,a=0.1,p=1, 分析附加零点、极点对根轨迹的影响;固定T值,分别改变a和p的值看附加零、极点位置的变化对根轨迹形状的影响。将结果填入下表。 传递函数 根轨迹图 34 零、极点分布的影响分析 自动控制原理实验指导书 G(s)Kg(T1s1)(T2s1) G(s)Kg(as1)(T1s1)(T2s1) G(s)Kg(T1s1)(T2s1)(ps1) 【综合实践】0°根轨迹的绘制及参量分析。 分别绘制(1)G(s)Kg(as1)(T1s1)(T2s1);(2)G(s)Kg(T1s1)(T2s1)(ps1) 的0°根轨迹,比较其与180°根轨迹不同。其中T1=0.2,T2=2,a=0.1,p=1。 对于上面的180°和0°根轨迹,求系统临界稳定时的Kg值,求Kg=5时系统极点的位置(在根轨迹上的小红块上点击鼠标右键显示极点坐标值,该小红块可以用鼠标拖动);分析此时系统的阶跃动态响应和Bode图。 临界稳Kg=5时闭环系统零定Kg值 极点 阶跃响应曲线 分析说明(与180°根轨迹比较) 0°根轨迹 (注:Kg可取其它值,再求出对应的闭环零、极点响应曲线) 三、思考题 1) 附加开环零点总对系统的稳定性是否有利? 2) 附加开环极点总对系统的稳定性是否不利? 3) 对实际系统,如何通过附加零点和极点来改善系统性能?举例说明。 4) 如何绘制系统等效根轨迹? 四、实验能力要求 35 自动控制原理实验指导书 (1)熟练掌握使用MATLAB绘制控制系统零极点图和根轨迹图的方法。 (2)通过根轨迹图能够确定有用的参数,比如:分离点坐标及相应参数、临界开环增益点及相应参数、任意一点对应的开环增益K值和闭环极点。 (3)利用根轨迹图进行系统性能分析,以阻尼比为依据分区段比较不同闭环极点对应系统性能的变化。能够确定系统稳定的开环增益范围。 (4)了解闭环零、极点对系统性能的影响。 (5)学会使用根轨迹设计工具校验系统的动态性能和稳态性能。 36 自动控制原理实验指导书 实验六 线性系统的频域分析 一. 实验目的 (1)熟练掌握使用MATLAB命令绘制控制系统Nyquist图的方法; (2)能够分析控制系统Nyquist图的基本规律; (3)加深理解控制系统乃奎斯特稳定性判据的实际应用; (4)学会利用奈氏图设计控制系统; (5)熟练掌握运用MATLAB命令绘制控制系统伯德图的方法; (6)了解系统伯德图的一般规律及其频域指标的获取方法; (7)熟练掌握运用伯德图分析控制系统稳定性的方法; (8)设计超前校正环节并绘制Bode图; (9)设计滞后校正环节并绘制Bode图。 二. 实验原理及内容 1、频率特性函数G(j)。 设线性系统传递函数为: b0smb1sm1bm1sbm G(s)nna0sa1san1san则频率特性函数为: b0(j)mb1(j)m1bm1(j)bm G(jw)a0(j)na1(j)nan1(j)an由下面的MATLAB语句可直接求出G(jw)。 i=sqrt(-1) % 求取-1的平方根 GW=polyval(num,i*w)./polyval(den,i*w) 其中(num,den)为系统的传递函数模型。而w为频率点构成的向量,点右除(./)运算符表示操作元素点对点的运算。从数值运算的角度来看,上述算法在系统的极点附近精度不会很理想,甚至出现无穷大值,运算结果是一系列复数返回到变量GW中。 2、用MATLAB作奈魁斯特图。 控制系统工具箱中提供了一个MATLAB函数nyquist( ),该函数可以用来直接求解Nyquist阵列或绘制奈氏图。当命令中不包含左端返回变量时,nyquist()函数仅在屏幕上产生奈氏图,命令调用格式为: nyquist(num,den) ;作Nyquist图, nyquist(num,den,w);作开环系统的奈氏曲线,角频率向量ω的范围可以人工给定。ω为对数等分,用对数等分函数logspace ( ) 完成,其调用格式为:logspace(d1, 37 自动控制原理实验指导书 d2,n),表示将变量ω作对数等分,命令中d1,d2为10 d1 ~ 10 d2之间的变量范围,n为等分点数。 或者nyquist(G) ;画出下列开环系统传递函数的奈氏曲线: G(s)num(s),角频率 den(s)向量的范围自动设定,默认ω的范围为(-∞,+∞)。 nyquist(G,w); w包含了要分析的以弧度/秒表示的诸频率点,在这些频率点上,将对系统的频率响应进行计算,若没有指定的w向量,则该函数自动选择频率向量进行计算。 当命令中包含了左端的返回变量时,即: [re,im,w]=nyquist(G) 或 [re,im,w]=nyquist(G,w) 函数运行后不在屏幕上产生图形,而是将计算结果返回到矩阵re、im和w中。矩阵re和im分别表示频率响应的实部和虚部,它们都是由向量w中指定的频率点计算得到的。 在运行结果中,w数列的每一个值分别对应re、im数列的每一个值。 【范例6-1】考虑二阶典型环节:G(s)1,试利用MATLAB画出奈氏2s0.8s1图。 利用下面的命令,可以得出系统的奈氏图,如图6-1所示。 >> num=[0,0,1]; den=[1,0.8,1]; nyquist(num,den) % 设置坐标显示范围 v=[-2,2,-2,2]; axis(v) grid 38 自动控制原理实验指导书 title(′Nyquist Plot of G(s)=1/(s^2+0.8s+1) ′) 图6-1 二阶环节奈氏图 3、奈奎斯特稳定性判据(又称奈氏判据) 反馈控制系统稳定的充分必要条件是当ω从-∞变到∞时,开环系统的奈氏曲线不穿过点(-1,j0)且逆时针包围临界点(-1,j0)点的圈数R等于开环传递函数的正实部极点数。 【范例6-2】已知G(s)H(s)0.5,绘制Nyquist图,判定系统的稳定性。 s32s2s0.5 39 自动控制原理实验指导书 通过求其特征方程的根roots ( ) 函数求得 【分析】由于系统奈氏曲线没有包围且远离(-1,j 0)点,且p=0,因此系统闭环稳定。 4、用MATLAB作伯德图 控制系统工具箱里提供的bode()函数可以直接求取、绘制给定线性系统的伯德图。 当命令不包含左端返回变量时,函数运行后会在屏幕上直接画出伯德图。如果命令表达式的左端含有返回变量,bode()函数计算出的幅值和相角将返回到相应的矩阵中,这时屏幕上不显示频率响应图。命令的调用格式为: [mag,phase,w]=bode(num,den) [mag,phase,w]=bode(num,den,w) 40 自动控制原理实验指导书 或 [mag,phase,w]=bode(G) [mag,phase,w]=bode(G,w) 矩阵mag、phase包含系统频率响应的幅值和相角,这些幅值和相角是在用户指定的频率点上计算得到的。用户如果不指定频率w,MATLAB会自动产生w向量,并根据w向量上各点计算幅值和相角。这时的相角是以度来表示的,幅值为增益值,在画伯德图时要转换成分贝值,因为分贝是作幅频图时常用单位。可以由以下命令把幅值转变成分贝: magdb=20﹡log10(mag) 绘图时的横坐标是以对数分度的。为了指定频率的范围,可采用以下命令格式: logspace(d1,d2) 或 logspace(d1,d2,n) 第一种格式是在指定频率范围内按对数距离分成50等分的,即在两个十进制数 110d和 210d之间产生一个由50个点组成的分量,向量中的点数50是一 12个默认值。例如要在10.1弧度/秒与2100弧度/秒之间的频区画伯德图,则输入命令时,d1log10(1),d2log10(2)在此频区自动按对数距离等分成50个频率点,返回到工作空间中,即 w=logspace(-1,2) 要对计算点数进行人工设定,则采用第二种格式。例如,要在11与21000之间产生100个对数等分点,可输入以下命令: w=logspace(0,3,100) 在画伯德图时,利用以上各式产生的频率向量w,可以很方便地画出希望频率的伯德图。 由于伯德图是半对数坐标图且幅频图和相频图要同时在一个绘图窗口中绘制,因此,要用到半对数坐标绘图函数和子图命令。 (1) 对数坐标绘图函数 利用工作空间中的向量x,y绘图,要调用plot函数,若要绘制对数或半对数坐标图,只需要用相应函数名取代plot即可,其余参数应用与plot完全一致。命令公式有: semilogx(x,y,s); 只对x轴进行对数变换,y轴仍为线性坐标。 semilogy(x,y,s); y轴取对数变换的半对数坐标图。 Loglog(x,y,s); 全对数坐标图,即x轴和y 轴均取对数变换。 (2) 子图命令 41 自动控制原理实验指导书 MATLAB允许将一个图形窗口分成多个子窗口,分别显示多个图形,这就要用到subplot()函数,其调用格式为: subplot(m,n,k) 该函数将把一个图形窗口分割成m×n个子绘图区域,m为行数,n为列数,用户可以通过参数k调用各子绘图区域进行操作,子图区域编号为按行从左至右编号。对一个子图进行的图形设置不会影响到其它子图,而且允许各子图具有不同的坐标系。例如,subplot(4,3,6)则表示将窗口分割成4×3个部分。在第6部分上绘制图形。 MATLAB最多允许9×9的分割。 【范例6-3】给定单位负反馈系统的开环传递函数为:G(s)10(s1),试画出伯德 s(s7)图。 利用以下MATLAB程序,可以直接在屏幕上绘出伯德图如图6-2。 >> num=10*[1,1]; den=[1,7,0]; bode(num,den) grid title(′Bode Diagram of G(s)=10*(s+1)/[s(s+7)] ′) 该程序绘图时的频率范围是自动确定的,从0.01弧度/秒到30弧度/秒,且幅值取分贝值,轴取对数,图形分成2个子图,均是自动完成的。 图6-2 自动产生频率点画出的伯德图 如果希望显示的频率范围窄一点,则程序修改为: 42 自动控制原理实验指导书 >> num=10*[1,1]; den=[1,7,0]; w=logspace(-1,2,50); % 从0.1至100,取50个点。 [mag, phase, w]=bode(num, den, w); magdB=20*log10(mag) % 增益值转化为分贝值。 % 第一个图画伯德图幅频部分。 subplot(2,1,1); semilogx(w,magdB, ′-r′) % 用红线画 grid title(′Bode Diagram of G(s)= 10*(s+1)/[s(s+7)] ′) xlabel(¹Frequency(rad/s)¹) ylabel(¹Gain(dB)¹) % 第二个图画伯德图相频部分。 subplot(2,1,2); semilogx(w,phase, ¹-r¹); grid xlabel(¹Frequency(rad/s)¹) ylabel(′Phase(deg) ′) 修改程序后画出的伯德图如6-3所示。 图6-3 用户指定的频率点画出的伯德图 43 自动控制原理实验指导书 【范例6-4】已知控制系统开环传递函数:G(s)H(s)10,绘制其Bode图并2s2s10确定谐振峰值Mr和谐振频率r。 绘制Bode图(略),插值函数spline(m, w, mr)求谐振频率 5、 用MATLEB求取稳定裕量 同前面介绍的求时域响应性能指标类似,由MATLAB里bode()函数绘制的伯德图也可以采用游动鼠标法求取系统的幅值裕量和相位裕量。 此外,控制系统工具箱中提供了margin()函数来求取给定线性系统幅值裕量和相位裕量,该函数可以由下面格式来调用: margin(num , den);给定开环系统的数学模型,作Bode图,并在图上方标注幅值裕度Gm和对应频率ωg,相位裕度Pm和对应的频率ωc。 [Gm, Pm, Wcg, Wcp]=margin(G); 可以看出,幅值裕量与相位裕量可以由LTI对象G求出,返回的变量对(Gm, Wcg)为幅值裕量的值与相应的相角穿越频率,而(Pm, Wcp)则为相位裕量的值与相应的幅值穿越频率。若得出的裕量为无穷大,则其值为Inf,这时相应的频率值为NaN(表示非数值),Inf和NaN均为MATLAB软件保留的常数。 如果已知系统的频率响应数据,我们还可以由下面的格式调用此函数。 [Gm, Pm, Wcg, Wcp]=margin(mag, phase, w); 其中(mag, phase, w)分别为频率响应的幅值、相位与频率向量。 【范例6-5】 已知三阶系统开环传递函数为:G(s)7,利用 2(s32s23s2)下面的MATLAB程序,画出系统的奈氏图,求出相应的幅值裕量和相位裕量,并求出闭环单位阶跃响应曲线。 >> G=tf(3.5,[1,2,3,2]); subplot(1,2,1); % 第一个图为奈氏图 44 自动控制原理实验指导书 nyquist(G); grid xlabel('Real Axis') ylabel('Imag Axis') % 第二个图为时域响应图 [Gm,Pm,Wcg,Wcp]=margin(G) G_c=feedback(G,1); subplot(1,2,2); step(G_c) grid xlabel(′Time(secs) ′) ylabel(′Amplitude′) 显示结果为: ans=1.1429 1.1578 1.7321 1.62 图6-4 三阶系统的奈氏图和阶跃响应图 画出的图形如图6-4 所示。由奈氏曲线可以看出,奈氏曲线并不包围(-1,j0)点,故闭环系统是稳定的。由于幅值裕量虽然大于1,但很接近1,故奈氏曲线与实轴的交点离临界点(-1,j0)很近,且相位裕量也只有7.1578o,所以系统尽管稳定,但其性能不会太好。观察闭环阶跃响应图,可以看到波形有较强的振荡。 如果系统的相角裕量γ>45o,我们一般称该系统有较好的相角裕量。 45 自动控制原理实验指导书 100(s5)2【范例6-6】考虑一个新的系统模型,开环传递函数为:G(s),2(s1)(ss9)由下面MATLAB语句可直接求出系统的幅值裕量和相位裕量: >> G=tf(100*conv([1,5],[1,5]), conv([1,1],[1,1,9])); [Gm, Pm, Wcg, Wcp]=margin(G) 结果显示 Gm = Pm = Inf 85.4365 Wcg = Wcp = NaN 100.3285 再输入命令 >> G_c=feedback(G,1); step(G_c) grid xlalel(′Time(sec) ′) ylalel(′Amplitude′) 可以看出,该系统有无穷大幅值裕量,且相角裕量高达85.4365o。所以系统的闭环响应是较理想的,闭环响应图如图6-5。 图6-5 较理想的系统响应 【自我实践6-1】某单位负反馈系统的开环传递函数G(s)k,求(1) 当k=4 s(s1)(s2)时,计算系统的增益裕度,相位裕度,在Bode图上标注低频段斜率,高频段斜率及低频段、高频段的渐近相位角。(2) 如果希望增益裕度为16dB,求出响应的k值,并 46 自动控制原理实验指导书 验证 6、系统对数频率稳定性分析 【自我实践6-2】系统开环传递函数G(s)k,试分析系统的稳定性。 s(0.5s1)(0.1s1)31.6,求(1) s(0.01s1)(0.1s1)【自我实践6-3】某单位负反馈系统的开环传递函数G(s)绘制Bode图,在幅频特性曲线上标出低频段斜率、高频段斜率、开环截止频率和中频段穿越频率;在幅频特性曲线标出:低频段渐近相位角、高频段渐近相位角和-180线的穿越频率。(2)计算系统的相位裕度和幅值裕度h,并确定系统的稳定性 【自我实践6-4】某单位负反馈系统的开环传递函数G(s)k(s1),令k=1作bode s2(0.1s1)图,应用频域稳定判据确定系统的稳定性,并确定使系统获得最大相位裕度的增益k值。 7、时间延迟系统的频域响应 (1) 时间延迟系统的传递函数模型 带有延迟环节e-Ts的系统不具有有理函数的标准形式,在MATLAB中,建立这类系统的模型。要由一个属性设置函数set()来实现。该函数的调用格式为: set(H, ′属性名′, ′属性值′) ;其中H为图形元素的句柄(handle)。 在MATLAB中,当对图形元素作进一步操作时,只需对该句柄进行操作即可。例如以下调用格式 h=plot(x,y) ;plot()函数将返回一个句柄h G=tf(num,den) ;tf()函数返回一个句柄G 要想改变句柄h所对应曲线的颜色,则可以调用下面命令: set(h,color,[1,0,0]) ;对“color”参数进行赋值,将曲线变成红色(由[1,0,0]决定) 同样,要想对G句柄所对应模型的延迟时间‟Td‟进行修改,则可调用下面命令 set(G, ′Td′,T) ;T为延迟时间。由此修改后,模型G就已具有时间 延迟特性。 (2) 时间延迟系统的频域响应 含有一个延迟环节的系统,其开环频域响应为G(j)e可见,该系统的幅频特性不变,只加大了相位滞后。 【范例6-7】考虑系统的开环模型为:G(s)jTG(j)ej()T, 1Tse s1当T=1时,我们可以由下面的MATLAB命令绘出系统的奈氏图,如图6-5所示,此系统对应的时域响应图为6-6。 >> G=tf(1,[1, 1]); T=[1]; w=[0, logspace(-3, 1, 100), logspace(1,2,200)]; 47 自动控制原理实验指导书 set(G,„Td', T); % 延迟1秒。 nyquist(G,w) grid figure % 建立一个新的绘图窗口 step(G) 图6-5 时间延迟系统奈氏图 图6-6 时间延迟系统的阶跃响应 【综合实践】试观察下列典型环节BODE图形状,分析参数变化时对BODE图的影响,填写下表。 (1) 比例环节:K (K=10、K=30) K (K=1、K=10、T=0.1、1) Ts1K(3) 积分环节: (K=1、K=10) s(4) 微分环节:Ks (K=1、K=10) (2) 惯性环节: K2(5) 二阶惯性环节:2 (K=1、K=10、=0.1、=1、=5、=1) 2s2s 环节传递函数 BODE图形 2 参数变化影响的分析 1 48 自动控制原理实验指导书 3 4 5 【综合实践】已知系统开环传递函数: 1) 0型系统: K,(K=10、T1=1、T2=12) (T1s1)(T2s1)KK、(K=10、T1=1、T2=15)、s(T1s1)(T2s1)s(T1s1)2) 1型系统: K2(K=2、=0.4、=1), 22s(s2s)3) 2型系统: K(K=10、T1=5) 2s(T1s1)试根据Bode图比较上述各幅频和相频特性曲线有什么变化,并计算出幅穿频率c、相位余量γ、相穿频率、幅值余量Kg。 传递函数 BODE图形 c、γ、、Kg 结果说明 1 49 自动控制原理实验指导书 2 … 三、思考题 1)典型环节有哪些?分析典型环节中的参数T、K、ω、ξ参数变化对BODE图的影响。 2)系统类型对系统BODE图有哪些影响?对系统的相位稳定余量有什么影响? 四. 实验能力要求 (1)熟练使用MATLAB绘制控制系统Nyquist曲线的方法,掌握函数nyquist ( )的三种调用格式,并灵活运用。 (2)学会处理奈氏图形,使曲线完全显示ω从-∞变化至+∞的形状。 (3)熟练应用奈氏稳定判据,根据Nyquist图分析控制系统的稳定性。 (4)改变系统开环增益或零极点,观察系统Nyquist图发生的变化以及系统稳定性的影响。 50 自动控制原理实验指导书 实验七 基于MATLAB控制系统频域法串联校正设计 一、实验目的 (1)对给定系统设计满足频域或时域指标的串联校正装置; (2)掌握频域法设计串联校正的方法; (3)掌握串联校正环节对系统稳定性及过渡过程的影响。 二、实验原理及内容 利用MATLAB可以方便的画出Bode图并求出幅值裕量和相角裕量。将MATLAB应用到经典理论的校正方法中,可以方便的校验系统校正前后的性能指标。通过反复试探不同校正参数对应的不同性能指标,能够设计出最佳的校正装置。 1、串联超前校正 用频域法对系统进行超前校正的基本原理,是利用超前校正网络的相位超前特性来增大系统的相位裕量,以达到改善系统瞬态响应的目标。为此,要求校正网络最大的相位超前角出现在系统的截止频率(剪切频率)处。 串联超前校正的特点:主要对未校正系统中频段进行校正,使校正后中频段幅值的斜率为-20dB/dec,且有足够大的相位裕度;超前校正会使系统瞬态响应的速度变快,校正后系统的截止频率增大。这表明校正后,系统的频带变宽,瞬态响应速度变快,相当于微分效应;但系统抗高频噪声的能力变差。 用频率法对系统进行串联超前校正的一般步骤为: 1)根据稳态误差的要求,确定开环增益K。 2)根据所确定的开环增益K,画出未校正系统的波特图,计算未校正系统的相位裕度。 3)计算超前网络参数a和T。 4)确定校正网络的转折频率。 5)画出校正后系统的波特图,验证已校正系统的相位裕度。 【范例7-1】给定系统如图7-1所示,试设计一个串联校正装置,使系统满足幅值裕 o 量大于10分贝,相位裕量≥45 为了满足上述要求,试探地采用超前校正装置Gc(s),使系统变为图7-2的结构。 图7-1 51 校正前系统 自动控制原理实验指导书 图7-2 校正后系统 用下面地MATLAB语句得出原系统的幅值裕量与相位裕量。 >> G=tf(100, [0.04, 1, 0]); [Gw, Pw, Wcg, Wcp]=margin(G); 在命令窗口中显示如下结果 w = Pw = Inf 28.0243 Wcg = Wcp = Inf 46.9701 o 可以看出,这个系统有无穷大的幅值裕量,并且其相位裕量=28,幅值穿越频率Wcp=47rad/sec。 引入一个串联超前校正装置: Gc(s)0.025s1 0.01s1可以通过下面的MATLAB语句得出校正前后系统的Bode图如图7-3,校正前后系统的阶跃响应图如图7-4。其中1、1、ts1分别为校正前系统的幅值穿越频率、相角裕量、调节时间,2、2、ts2分别为校正后系统的幅值穿越频率、相角裕量、调节时间。 >> G1=tf(100,[0.04,1,0]); % 校正前模型 G2=tf(100*[0.025,1],conv([0.04,1,0],[0.01,1])) % 校正后模型 % 画伯德图,校正前用实线,校正后用短划线。 bode(G1) hold bode(G2, ′--′) % 画时域响应图,校正前用实线,校正后用短划线。 52 自动控制原理实验指导书 figure G1_c=feedback(G1,1) G2_c=feedback(G2,1) step(G1_c) hold step(G2_c, ′--′) 图7-3 校正前后系统的Bode图 图7-4 校正前后系统的阶跃响应图 可以看出,在这样的控制器下,校正后系统的相位裕量由28增加到48,调节时间由 o 。0.28s减少到0.08s。系统的性能有了明显的提高,满足了设计要求。 【范例7-2】已知单位负反馈传递函数Go(s)K,试设计无源串联超前校2s(0.2s1)正网络的传递函数,使系统的静态加速度误差系数ka=20,相角裕度 >35 。 (1) ka=10 (2) 绘制未校正系统的bode图, (=-30.5 ,不稳定) (3) 设计串联超前校正装置,确定校正装置提供的相位超前量m(84,采用两级 超前校正网络实现,每一级为42 ) (4) 确定校正网络的转折频率1和2 ,然后确定校正器的传递函数 53 自动控制原理实验指导书 自动控制原理实验指导书 图7-5 校正前(蓝色)和校正后(红色)系统的Bode图 图7-6 校正前(蓝色)和校正后(绿色)系统的单位阶跃响应 2、串联滞后校正 滞后校正网络具有低通滤波器的特性,会使系统开环频率特性的中频和高频段增 55 自动控制原理实验指导书 益降低和截止频率减小,从而有可能使系统获得足够大的相位裕度,它不影响频率特性的低频段。但是校正后系统的截止频率会减小,瞬态响应的速度要变慢 。 单位反馈最小相位系统频率法设计串联滞后校正网络的步骤如下: 1)根据稳态性能要求,确定开环增益K; 2)利用已确定的开环增益,画出未校正系统对数频率特性曲线,确定未校正系统的截止频率、相位裕度和幅值裕度; ,计算或查出不同的γ值,在伯特图上绘制(c3)选择不同的c) 曲线; 4)根据相位裕度要求,选择已校正系统的截止频率; 5)确定滞后网络参数b和T ; 6)验算已校正系统的相位裕度和幅值裕度。 【范例7-3】已知单位负反馈系统G0(s)0K,设计要求该系统 s(0.0625s1)(0.2s1)的相角裕度满足50,幅值裕度h17dB,静态速度误差Kv40s1。求串联滞后校正装置的传递函数Gc(s)。 56 自动控制原理实验指导书 三、实验能力要求 (1)熟练掌握频率法设计控制系统串联超前/滞后校正网络的方法。 (2)熟练使用MATLAB编程完成控制系统串联超前/滞后校正设计,掌握函数find ( )的作用,并灵活运用。 (3)比较分析控制系统校正前后的各项性能指标,明确串联超前/滞后校正的作用。 (4)了解串联超前/滞后校正环节对系统稳定性及过渡过程的影响。 57 自动控制原理实验指导书 附录1 MATLAB简介 MATLAB是Mathworks公司开发的一种集数值计算、符号计算和图形可视化三大基本功能于一体的功能强大、操作简单的优秀工程计算应用软件。MATLAB不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理及仿真模拟等功能。从而能够很好的帮助工程师及科学家解决实际的技术问题。 MATLAB的含义是矩阵实验室(Matrix Laboratory),最初主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。经过十几年的扩充和完善,现已发展成为包含大量实用工具箱(Toolbox)的综合应用软件,不仅成为线性代数课程的标准工具,而且适合具有不同专业研究方向及工程应用需求的用户使用。 MATLAB最重要的特点是易于扩展。它允许用户自行建立完成指定功能的扩展MATLAB函数(称为M文件),从而构成适合于其它领域的工具箱,大大扩展了MATLAB的应用范围。目前,MATLAB已成为国际控制界最流行的软件,控制界很多学者将自己擅长的CAD方法用MATLAB加以实现,出现了大量的MATLAB配套工具箱,如控制系统工具箱(control systems toolbox),系统识别工具箱(system identification toolbox),鲁棒控制工具箱(robust control toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境SIMULINK等。 1.1 MATLAB桌面系统 MATLAB的桌面系统由桌面平台以及桌面组件共同构成,如图1所示。桌面平台是各桌面组件的展示平台,它提供了一系列的菜单操作以及工具栏操作,而不同功能的桌面组件构成了整个MATLAB操作平台。其组件主要包含如下8个组件部分: ① 命令窗口(Command Window) ② 命令历史窗口(Command History) ③ 启动平台(Launch Pad) ④ 路径浏览器(Current Directory Browser) ⑤ 帮助浏览器(Help Browser) ⑥ 工作空间浏览器(Workspace Browser) ⑦ 数组编辑器(Array Editor) ⑧ M文件编辑调试器(Editor-Debugger)。 用户可以在View菜单下选择打开或关闭某个窗口。 58 自动控制原理实验指导书 图1 MATLAB桌面平台 1.2 MATLAB命令窗口 MATLAB是一种描述性语言。它对输入的语句边解释边执行,就象BASIC语言中直接执行语句一样。在MATLAB命令窗口中,标志>>为命令提示符,在命令提示符后面键入一个MATLAB命令时,MATLAB会立即对其进行处理,并显示处理结果。这种方式简单易用,但在编程过程中要修改整个程序比较困难,并且用户编写的程序不容易保存。如果想把所有的程序输入完再运行调试,可以用鼠标点击快捷 或 File|New|M-file菜单,在弹出的编程窗口中逐行输入命令,输入完毕后点击Debug|Run(或F5)运行整个程序。运行过程中的错误信息和运行结果显示在命令窗口中。整个程序的源代码可以保存为扩展名为“.m”的M文件。 在介绍MATLAB的强大计算和图象处理功能前,我们可以先运行一个简单的程序。 设系统的闭环传递函数为:G(s)可输入下面的命令: >> num=[1,2]; 59 s2,求系统的时域响应图。 s22s6自动控制原理实验指导书 den=[1,2,6]; step(num,den) 程序运行后会在一个新的窗口中显示出系统的时域动态响应曲线,如图2。用鼠标左键点击动态响应曲线的某一点,系统会提示其响应时间和幅值。按住左键在曲线上移动鼠标的位置可以很容易的根据幅值观察出上升时间、调节时间、峰值及峰值时间,进而求出超调量。 Step Response0.50.450.40.350.3System: sysTime (sec): 1.61Amplitude: 0.368Amplitude0.250.20.150.10.0500123Time (sec)456 图2 动态响应时域图 如果想求根轨迹,可将上面程序的第三行变为rlocus(num,den),求伯德图可改为bode(num,den)。所不同的是,在根轨迹和伯德图中,G(s)为开环传递函数。 MATLAB的语法规则类似于C语言,变量名、函数名都与大小写有关,即变量A和a是两个完全不同的变量。应该注意所有的函数名均由小写字母构成。 1.3 MATLAB的帮助系统 MATLAB是一个功能强大的工程应用软件,它提供了相当丰富的帮助信息,同时也提供了多种获得帮助的方法。 (1)使用联机帮助窗口 (2)使用帮助命令help,查找已知命令的使用方法 。 (3)使用lookfor命令,通过一般关键词找到命令和帮助标题。 60 自动控制原理实验指导书 (4)演示帮助,在命令窗口>>提示符下键入DEMO命令,将启动MATLAB的演示程序。可以在此演示程序中领略MATLAB所提供的强大的运算和绘图功能。 1.4 MATLAB基本操作命令 本节简单介绍与课程内容相关的一些基本知识和操作命令。 1.4.1 语句以“%”开始和以分号“;”结束的特殊效用 在MATLAB中以“%”开始的程序行,表示注解和说明。符号“%”类似于C++中的“//”。这些注解和说明是不执行的。即在MATLAB程序行中,出现“%”以后的一切内容都是可以忽略的。 分号(;)用来取消打印,如果语句最后一个符号是分号,则打印被取消,但是命令仍在执行,而结果不再在命令窗口或其它窗口中显示。这一点在M文件中大量采用,以抑制不必要的信息显示。 1.4.2 简单矩阵的输入 MATLAB是一种专门为矩阵运算设计的语言,所以在MATLAB中处理的所有变量都是矩阵。这就是说,MATLAB只有一种数据形式,那就是矩阵。标量可看作为1×1的矩阵,向量可看作为n×1或1×n的矩阵。MATLAB语言对矩阵的维数及类型没有,即用户无需定义变量的类型和维数,MATLAB会自动获取所需的存储空间。 输入矩阵最便捷的方式为直接输入矩阵的元素,其定义如下: (1) 元素之间用空格或逗号间隔; (2) 用中括号([])把所有元素括起来; (3) 用分号(;)指定行结束。 例如,在MATLAB的工作空间中,输入: 4 5 6] >> a[1 2 3; 则输出结果为: a 123 456矩阵a被一直保存在工作空间中,以供后面使用,直至修改它。 MATLAB的矩阵输入方式很灵活,大矩阵可以分成n行输入,用回车符代替分号或用续行符号(…)将元素续写到下一行。例如: a[1, 2, 3; 4, 5, 6; 7, 8, 9] 61 自动控制原理实验指导书 a[ 1 2 3 4 5 6 7 8 9]a[1, 2, 3; 4, 5, 6; 7, 8, 9]以上三种输入方式结果是相同的。长语句若超出一行,则换行前使用续行符号 (…)。 在MATLAB中,矩阵元素不限于常量,可以采用任意形式的表达式。同时,除了直接输入方式之外,还可以采用其它方式输入矩阵,如: (1) 利用内部语句或函数产生矩阵; (2) 利用M文件产生矩阵; (3) 利用外部数据文件装入到指定矩阵。 1.4.3 复数矩阵输入 MATLAB允许在计算或函数中使用复数。MATLAB表示复数时,复数单位用i或j。输入复数矩阵有两种方法: (1) a=[1 2; 3 4]+i*[5 6; 7 8] (2) a=[1+5i 2+6i; 3+7i 4+8i] 注意,当矩阵的元素为复数时,在复数实部与虚部之间不允许使用空格符。如1 +5i将被认为是1和5i两个数。 1.4.4 MATLAB语句和变量 MATLAB语句的常用格式为: 变量=表达式[;] 或简化为: 表达式[;] 表达式可以由操作符、特殊符号、函数、变量名等组成。表达式的结果为一矩阵,它赋给左边的变量,同时显示在屏幕上(语句末尾无分号(;))。如果省略变量名和“=”号,则MATLAB自动产生一个名为ans的变量来表示结果,如: 1000∕70 结果为: ans 14.2875 ans 是MATLAB提供的固定变量,具有特定的功能,用于结果的缺省变量名,是不能由用户清除的。常用的固定变量还有eps、pi、inf、NaN等。 数学表达式输入格式注意以下几方面: 62 自动控制原理实验指导书 (1)表达式必须在同一行内书写。 (2)数值与变量或变量与变量相乘都不能连写,中间必须用乘号“*”。 (3)分式的书写要求分子、分母最好分别用小括号限定。 (4)当MATLAB函数嵌套调用时,使用多重小括号限定。 (5)求幂运算的指数两侧最好用小括号限定,自然常数e的指数运算书写为exp( )。 (6)求e为底的自然对数,其函数书写形式为log()。 (7)特殊变量的含义:“pi”表示圆周率π;“i”或“j”表示虚数单位;“inf”或“INF”表示无穷大;NaN表示0/0不定式;eps表示计算机的最小数。 MATAB允许在函数调用时同时返回多个变量,而一个函数又可以由多种格式进行调用,语句的典型格式可表示为: [返回变量列表]=fun_name(输入变量列表) 例如用bode()函数来求取或绘制系统的Bode图,可由下面的格式调用: [mag,phase]bode(num,den,W) 其中变量num、den表示系统传递函数分子和分母,W表示指定频段,mag为计算幅值,phase为计算相角。 1.4.5 获取工作空间信息 MATLAB开辟有一个工作空间,用于存储已经产生的变量。变量一旦被定义,MATLAB系统会自动将其保存在工作空间里。在退出程序之前,这些变量将被保留在存储器中。 为了得到工作空间中的变量清单,可以在命令提示符>>后输入who 或 whos 命令,当前存放在工作空间的所有变量便会显示在屏幕上。 命令clear能从工作空间中清除所有非永久性变量。如果只需要从工作空间中清除某个特定变量,比如“x”,则应输入命令clear x。 1.4.6 常数与算术运算符 MATLAB采用人们习惯使用的十进制数。如: 3 –99 0.0001 9.6397238 1.60210e20 6.62252e23 2i -3.14159i 3e5i 数值的相对精度为eps,它是一个符合IEEE标准的16位长的十进制数,其范围为:10308~10308。 MATLAB提供了常用的算术运算符:+,-,,∕(﹨),^(幂指数)。 应该注意:(∕)右除法和(﹨)左除法这两种符号对数值操作时,其结果相同,其斜线下为分母,如1∕4与4﹨1,其结果均为0.25,但对矩阵操作时,左、右除法是有区别的。 63 自动控制原理实验指导书 1.4.7 选择输出格式 输出格式是指数据显示的格式,MATLAB提供format命令可以控制结果矩阵的显示,而不影响结果矩阵的计算和存储。所有计算都是以双精度方式完成的。 (1) 如果矩阵的所有元素都是整数,则矩阵以不带小数点的格式显示。 如输入: 0 1] x[1 则显示: x -1 0 1 (2) 如果矩阵中至少有一个元素不是整数,则有多种输出格式。常见格式有 以下四种: ① format short(短格式,系统默认格式) ② format short e(短格式科学表示) ③ format long(长格式) ④ format long e(长格式科学表示) 如: 1.2345e6] x[4/3 对于以上四种格式,其显示结果分别为: x 1.3333 0.0000x 短格式5位表示 1.3333e00 1.2345e06 短格式科学表示 x 1.33333333333333 0.00000123450000x 长格式16位表示 1.33333333333333 e00 1.234500000000000e061.4.8 MATLAB图形 长格式科学表示 一旦调用了某种格式,则这种被选用的格式将保持,直到对格式进行了改变为止。 当调用了一个产生图形的函数时,MATLAB会自动建立一个图形窗口。这个窗 口还可成多个窗口,并可在它们之间选择,这样在一个屏上可显示多个图形。 图形窗口中的图形可通过打印机打印出来。若想将图形导出并保存,可用鼠标点 自动控制原理实验指导书 击菜单File|Export,导出格式可选emp、bmp、jpg等。命令窗口的内容也可由打印机打印出来。如果事先选择了一些内容,则可打印出所选择的内容;如果没有选择内容,则可打印出整个工作空间的内容。 基本二维曲线绘图命令是plot ( )。 (1)调用格式:plot (x1, y1, ’option1’, x2, y2, ’option2’,„) (2)选项是指为了区分多条画出曲线的颜色、线型及标记点而设定的曲线的属性。MATLAB在多组变量绘图时,可将曲线以不同的颜色、不同的线型及标记点表示出来。常用选项控制字符option说明 标识符 y m c r g b w k 颜色 Yellow 黄 Magenta 品红 Cyan 青 Red 红 Green 绿 Blue 蓝 White 白 Black 黑 标识符 . o x + - * : -. -- 线型 点 圆圈 X号 +号 实线 星号 虚号 点划线 虚线 标识符 S D ^ v > < p h none 线型 正方形标记 菱形标记 上三角形 下三角形 右三角形 左三角形 五角星 六角星 无符号标记 常用绘图函数: 1)多次重叠绘制图形 hold on 使当前轴与图形保持不变,再重叠绘制一条或多条新的曲线。 hold off 使当前轴与图形不再具备被刷新功能。 hold 当前图形是否具备被刷新功能的双向切换开关。 2)使用多窗口绘制图形 figure ( N ) 命令功能是创建编号为N的新窗口,等待绘制图形。 3)图形窗口的分割 subplot ( ),在一个图形窗口显示多幅图形,把图形窗口分割成m行与n列的子窗口,并选定第i个窗口为当前窗口。 命令调用格式 subplot(m,n,i) 4)图形控制函数 axis ( [xmin, xmax, ymin, ymax] ) 设定坐标轴的范围。 title (‘字符串’) 在所画图形的最上端标注图形标题。 xlabel (‘字符串’)、ylabel (‘字符串’) 设置x,y 坐标轴的名称。 grid 增加网格。 65 自动控制原理实验指导书 1.4.9 剪切板的使用 利用Windows的剪切板可在MATLAB与其它应用程序之间交换信息。 (1) 要将MATLAB的图形移到其它应用程序,首先按Alt-Print Screen键,将图形复制到剪切板中,然后激活其它应用程序,选择edit(编辑)中的paste(粘贴),就可以在应用程序中得到MATLAB中的图形。还可以借助于copy to Bitmap 或copy to Metafile 选项来传递图形信息。 (2) 要将其它应用程序中的数据传递到MATLAB,应先将数据放入剪切板,然后在MATLAB中定义一个变量来接收。 如键入: q=[ 然后选择Edit中的paste,最后加上“]”,这样可将应用程序中的数据送入MATLAB的q变量中。 1.5 MATLAB在控制系统中的应用 MATLAB是国际控制界目前使用最广的工具软件,几乎所有的控制理论与应用分支中都有MATLAB工具箱。后面将结合《自动控制理论》的课程内容,采用控制系统工具箱(Control Systems Toolbox)和仿真环境(Simulink)进行MATLAB控制系统实验。 66 自动控制原理实验指导书 附录2 SIMULINK简介 2.1 什么是SIMULINK SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。 所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。 2.2 SIMULINK的模块库介绍 SIMILINK模块库按功能进行分类,包括以下8类子库: Continuous(连续模块) Discrete(离散模块) Function&Tables(函数和平台模块) Math(数学模块) Nonlinear(非线性模块) Signals&Systems(信号和系统模块) Sinks(接收器模块) Sources(输入源模块) 2.3 SIMULINK简单模型的建立及模型特点 2.3.1 简单模型的建立 (1)建立模型窗口 (2)将功能模块由模块库窗口复制到模型窗口 (3)对模块进行连接,从而构成需要的系统模型 2.3.2 模型的特点 (1)在SIMULINK里提供了许多如Scope的接收器模块,这使得用SIMULNK 67 自动控制原理实验指导书 进行仿真具有像做实验一般的图形化显示效果。 (2)SIMULINK的模型具有层次性,通过底层子系统可以构建上层母系统。 (3)SIMULINK提供了对子系统进行封装的功能,用户可以自定义子系统的图标和设置参数对话框。 2.3.3 SIMULINK功能模块的处理 模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。 在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对模块进行以下的基本操作。 (1)移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳。 (2)复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。 (3)删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。 (4)转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单Format中选择Flip Block旋转180度,选择Rotate Block顺时针旋转90度。或者直接按Ctrl+F键执行Flip Block,按Ctrl+R键执行Rotate Block。 (5)改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可。 (6)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用Format菜单中的Flip Name来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。 (7)颜色设定: Format菜单中的Foreground Color可以改变模块的前景颜色,Background Color可以改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。 (8)参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。通过对模块的参数设定,就可以获得需要的功能模块。 (9)属性设定:选中模块,打开Edit菜单的Block Properties可以对模块进行属性设定。包括Description属性、 Priority优先级属性、Tag属性、Open function属性、Attributes format string属性。其中Open function属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。 (10)模块的输入输出信号:模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为一种复合信号,是多个信号的集合,它对应着系统中几条连线的合成。缺省情况下,大多数模块的输出都为标量信号,对于输入信号, 68 自动控制原理实验指导书 模块都具有一种“智能”的识别功能,能自动进行匹配。某些模块通过对参数的设定,可以使模块输出向量信号。 2.3.4 启动仿真 选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。 除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下: [t,x,y]=sim(„模型文件名‟,[to tf],simset(„参数1‟,参数值1,„参数2‟,参数值2, …));其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值。simset定义了仿真参数,包括以下一些主要参数: AbsTol:默认值为1e-6设定绝对误差范围。 Decimation:默认值为1,决定隔多少个点返回状态和输出值。 MaxRows:默认值为0,表示不。若为大于零的值,则表示输 出和状态的规模,使其最大行数等于该数值。 InitialState:一个向量值,用于设定初始状态。 FixedStep:用一个正数表示步阶的大小,仅用于固定步长模式。 MaxStep:默认值为auto。用于变步长模式,表示最大的步阶大小。 如果知道模型文件名称,可以用以下命令得到该模型的仿真参数: simget(„模型文件名‟) 69 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务