2.系统的串联
series命令实现两个系统的串联,示意图如下: u1 y u2 y2
10s?1 G2(s)= s?1s?5>> num1=10; >> den1=[1,1];
>> G1=tf(num1,den1); >> num2=[1,1]; >> den2=[1,5];
>> G2=tf(num2,den2); >> G=series(G1,G2) 执行结果为: Transfer function: 10 s + 10 ------------- s^2 + 6 s + 5
3.系统的反馈
feedback命令实现两个系统的反馈连接,示意图如下: G1(s)?G1(s) G2(s)
u1 + G ( s ) y1 ± y2 u2
G(s)
1?G(s)H(s)命令格式:
Sys=feedback(sys1,sys2,sign)
Sign为反馈极性,若为正反馈其值为1,若为负反馈其值为-1 缺省时默认为负(即sign = -1)。 例5设有下面两个系统:
s?11 g2(s)? g1(s)?2s?2s?3s?10现要将它们负反馈连接,求传递函数 执行下面程序: >> n1=[1 1]; >> d1=[1 2 3]; >> G1=tf(n1,d1); >> n2=[1]; >> d2=[1 10]; >> H2=tf(n2,d2);
>> sys=feedback(G1,H2) 运行结果:
sys?H(s) Transfer function: s^2 + 11 s + 10 ------------------------ s^3 + 12 s^2 + 24 s + 31
例6 已知系统如下
s?2 2s?2s?3求该系统闭环后的传递函数(负反馈)。 输入:
>> n1=[1 2];
>> d1=[1 2 3];
>> [n,d]=cloop(n1,d1) 运行结果: n =
0 1 2 d =
1 3 5
即:闭环后系统的传递函数为
s?2 g1(s)?2
s?3s?55.生成二阶系统
ord2命令在给定?n,ξ下可以生成相应的二阶系统,即:
1g1(s)?2 2s?2??ns??n命令格式:
[ n,d] = ord2(Wn,z)
其中: z = ξ Wn = ?n
g1(s)?四、实验步骤
1.运行Matlab软件;
2.在其命令窗口中输入响应的命令或程序; 3.观察并记录。 五、实验习题
已知系统传递函数为:
12s3?24s2?12s?20 G(s)?4322s?4s?6s?2s?2求上述传递函数的零极点的表达形式。
实验二 控制系统的时域分析 一、实验目的:
通过上机实验,掌握运用MATLAB常用命令对系统进行时域分析的基本方法。 二、实验仪器
计算机 三、实验内容
2.1单位阶跃响应的求法
step命令可以求得连续系统的单位阶跃响应,当不带输出变量时,可在当前窗口中绘出单位阶跃响应曲线。带有输出变时时则输出一组数据。
命令格式: step(n,d,t);或 [ y,x,t ] = step(n,d,t);
其中t是事先确定的时间矢量,当t缺省时则时间由函数自行决定。
如果需要将输出结果返回到MATLAB工作空间,则采用以下调用格式:
c=step(G)
此时,屏幕上不会显示响应曲线,必须利用plot( )命令去查看响应曲线。Plot可以根据两个或多个给定的矢量绘制二维图形。 例1 已知传递函数为
利用以下MALAB命令可得阶跃响应曲线 num=[0,0,25]; den=[1,4,25]; step(num,den) grid % 绘制网格线
Step Response1.41.21Amplitude0.80.60.40.2000.511.5Time (sec)22.53
还可用下面的语句来得出阶跃响应曲线: 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
2.2 求阶跃响应的性能指标 方法一:游动鼠标法
如上例,在程序运行完毕后,用鼠标左键单击时域响应曲线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)。按住鼠标左键在曲线上移动,可找到曲线幅值最大的一点,即曲线最大峰值,此
时小方框显示的时间就是此二阶系统的峰值时间,根据观测到的稳态值和峰值可计算出系统的超调量。系统的上升时间和稳态响应时间可以此类推。
注:它不适用于用plot( )命令画出的图形。 方法二:用编程方式求取时域响应的各项性能指标
通过前面的学习,我们已经可以用阶跃响应函数step( ) 获得系统输出量,若将输出量返回到变量y中,可调用如下格式:
[y,t]=step(G)
对返回的这一对y和t变量的值进行计算,可得到时域性能指标。 ? 峰值时间( timetopeak )可由以下命令获得:
[Y,k]=max(y); timetopeak=t(k)
应用取最大值函数max( )求出y的峰值及相应的时间,并存于变量Y和k中。然后在变量t中取出峰值时间,并将它赋给变量timetopeak。
? 最大(百分比)超调量(percentovershoot)可由以下命令获得:
C=dcgain(G); [Y,k]=max(y);
percentovershoot=100*(Y-C)/C
dcgain( )函数用于求取系统的终值,将终值赋给变量C,然后依据超调量的定义,由Y和C计算出百分比超调量。
上升时间(risetime)可利用MATLAB中的循环控制语句编制M文件来获得。 要求出上升时间,可用while语句编写以下程序得到:
C=dcgain(G); n =1 while y(n)