系列文章目录
本系列由五章组成。以下是这些章节的简要总结:
第1章:MATLAB简介。本章面向新手介绍MATLAB。读者将学习MATLAB®的基本概念。
第2章:控制系统分析常用命令。本章研究控制系统工具箱中一些最重要的命令,如tf、zpk、ss、bode、nyquist、rlocus、脉冲、步进、反馈、序列、并行等命令。
第3章:Simulink简介。Simulink是模拟动态系统的最重要工具之一。Simulink是一种图形环境。用户使用大量现成的模块制作系统模型。因此,得益于Simulink强大的模块库,用户可以轻松地模拟复杂的系统,而无需处理编码。本章通过一些示例介绍Simulink。
第4章:MATLAB中的控制器设计。计算机是现代工程科学的重要组成部分。几乎所有的工程设计都是在计算机的帮助下完成的,控制工程也不例外。MATLAB的控制系统工具箱为控制系统的设计提供了丰富的功能。工业上大约90%的控制器是PID(比例积分微分)。本章从pidTuner命令开始,这是一个用于设计PID控制器的强大命令。本章以控制系统设计器应用程序结束。
第5章:系统识别工具箱简介。系统辨识根据动态系统的输入/输出信号建立数学模型。本章研究了一个示例。
定义传递函数
例2.1(定义传递函数):在MATLAB中定义以下传递函数:
H ( s ) = 100 s 2 + 6 s + 100 H(s)=\frac{100}{s^2+6s+100} H(s)=s2+6s+100100
方法1:
>>H=tf([100],[1 6 100]);
方法2:
>>s=tf('s');
>>H=100/(s^2+6*s+100)
例2.2(定义传递函数):在MATLAB中定义以下传递函数:
I
(
s
)
=
s
2
−
6
s
s
3
+
6
s
+
100
I(s)=\frac{s^2-6s}{s^3+6s+100}
I(s)=s3+6s+100s2−6s
>>I=tf([100 -6 0],[1 0 6 100]);
例2.3(定义零极点形式传递函数):在MATLAB中定义以下传递函数:
J
(
s
)
=
s
+
1
(
s
+
2
)
(
s
+
3
)
(
s
+
4
)
J(s)=\frac{s+1}{(s+2)(s+3)(s+4)}
J(s)=(s+2)(s+3)(s+4)s+1
>>J=zpk([-1],[-2 -3 -4],1);
zpk命令有三个输入:第一个输入是包含传递函数零点的向量,第二个输入是包含传递函数极点的向量,第三个输入是增益。
例2.4(将zpk模型转换为tf模型)::
>> J=zpk([-1],[-2 -3 -4],1)
J =
(s+1)
-----------------
(s+2) (s+3) (s+4)
Continuous-time zero/pole/gain model.
>> tf(J)
ans =
s + 1
-----------------------
s^3 + 9 s^2 + 26 s + 24
Continuous-time transfer function.
例2.5(使用ss命令定义状态空间模型)::
>> A=[1 0; 5 6];B=[1;1];C=[1 3];D=0;
>> L=ss(A,B,C,D)
L =
A =
x1 x2
x1 1 0
x2 5 6
B =
u1
x1 1
x2 1
C =
x1 x2
y1 1 3
D =
u1
y1 0
Continuous-time state-space model.
借助tf命令,可以获得与状态空间模型相关的传递函数(图2.3)。
>> A=[1 0; 5 6];B=[1;1];C=[1 3];D=0;
>> L=ss(A,B,C,D)
L =
A =
x1 x2
x1 1 0
x2 5 6
B =
u1
x1 1
x2 1
C =
x1 x2
y1 1 3
D =
u1
y1 0
Continuous-time state-space model.
>> tf(L)
ans =
4 s + 6
-------------
s^2 - 7 s + 6
Continuous-time transfer function.
例2.6(零极点):
可以分别借助pole和zero命令获得极点和零点的位置:
>> pole(L)
ans =
6
1
>> zero(L)
ans =
-1.5000
借助pzmap命令,可以获得极点和零点位置的图形。pzmap使用x标记极点位置,使用o标记零点位置。例如,您可以借助以下命令绘制L的零极点图。
pzmap(L)
如果所有极点都位于开放的左半平面(LHP)。可以使用isstable命令了解系统是否稳定。
>> isstable(L)
ans =
logical
0
系统的脉冲响应
系统的脉冲响应可以借助impulse命令来绘制。
例2.7(绘制脉冲响应):绘制以下系统的脉冲响应:
H
(
s
)
=
100
s
2
+
6
s
+
100
H(s)=\frac{100}{s^2+6s+100}
H(s)=s2+6s+100100
>> H=tf([100],[1 6 100]);
>> impulse(H)
>> grid on
您可以要求MATLAB显示峰值响应和稳定时间。要执行此操作,请右键单击图片。单击Characteristics并选择所需选项。例如,我们选择峰值响应,单击Peak Response后,MATLAB会用一个点显示图形的峰值。单击显示的点后,MATLAB会添加一个标签,并用标签显示该点的坐标。
可以使用Data Cursor图标将光标添加到图形中。首先单击Data Cursor图标,然后单击图形上的一个点。使用光标,可以轻松读取所需点的坐标。可以将光标滑动到所需的点。如果将Selection Style 设置为Mouse Position ,则可以更轻松地滑动光标。要查看Selection Style,请在图形上单击鼠标右键。
可以画出特定时间间隔内的脉冲响应。例如,要绘制[.2,1.8]时间间隔内的脉冲响应:
>> H=tf([100],[1 6 100]);
>> impulse(H,[.2:.01:1.8])
>> grid on
系统的阶跃响应
借助Step命令可以绘制系统的阶跃响应。
例2.8(绘制阶跃响应):绘制以下系统的阶跃响应:
H
(
s
)
=
100
s
2
+
6
s
+
100
H(s)=\frac{100}{s^2+6s+100}
H(s)=s2+6s+100100
>> H=tf([100],[1 6 100]);
>> step(H)
>> grid on
可以画出特定时间间隔内的阶跃响应。例如,要绘制[.2,1.8]时间间隔内的脉冲响应:
>> H=tf([100],[1 6 100]);
>> step(H,[.2:.01:1.8])
>> grid on
您可以要求MATLAB测量响应的重要特征,并显示它们。为此,右键单击阶跃响应图,然后单击characteristics。从显示的菜单中选择所需选项。例如,我们从显示的菜单中选择Rise Time 。上升时间是指响应从稳态响应的10–90%上升所需的时间。
您可以使用stepinfo命令查看阶跃响应特性。
>> stepinfo(H)
ans =
包含以下字段的 struct:
RiseTime: 0.1324
SettlingTime: 1.1230
SettlingMin: 0.8614
SettlingMax: 1.3714
Overshoot: 37.1410
Undershoot: 0
Peak: 1.3714
PeakTime: 0.3224
绘制系统的频率响应
例2.9(绘制频率响应):您可以借助bode命令绘制系统的频率响应。例如,可以借助以下命令绘制示例2.1中系统的波特图:
>> bode(H),grid on
如果要绘制特定间隔内系统的频率响应,必须定义所需的间隔。可以使用bode(sys, w),其中w是所需频率范围的向量。例如,如果您想绘制例2.1中[100Rad/s, 1000Rad/s]间隔的系统频率响应,可以使用以下代码。
>> w=logspace(log10(100),log10(1000));
>> bode(H,w)
>> grid on
您可以通过右键单击绘制的图形并选择Characteristics来测量其重要特征。
绘制系统的奈奎斯特图
例2.10(绘制奈奎斯特图):你可以借助Nyquist命令绘制系统的Nyquist图。例如,可以借助以下命令绘制示例2.1中系统的奈奎斯特图。
>> nyquist(H)
通过右键单击绘图并选择characteristics,可以看到绘制绘图的特征。
您可以通过右键单击图形并在出现的列表中单击Grid,将网格添加到绘制的图形中。向图形中添加网格的另一种方法是在MATLAB命令提示符中键入>>grid on
。
根轨迹图
例2.11(绘制奈奎斯特图):可以借助rlocus命令绘制动态系统的根轨迹图。例如,可以借助以下命令绘制H的根轨迹:
>> rlocus(H), grid on
单击Data Cursor 图标,将光标添加到绘图中。
还有另一个绘制根轨迹图的命令:rltool。借助rltool,您可以同时看到所有极点的运动。键入以下命令:
>> rltool(H), grid on
将出现下图所示的窗口。在左侧的Root Locus Editor for Loop Transfer中,极点以粉红色示出。
将闭环极点移动到所需位置。要执行此操作,请用鼠标左键单击粉色点,然后将点移动到所需位置,而无需松开鼠标左键。您可以同时看到所有点的移动。所需增益和其他有用信息显示在窗口底部。
将系统连接在一起
考虑如图所示的方框图。
可借助以下命令计算闭环传递函数:
>> C=tf([1.13 0.45],[1 0]);
>> P=tf([1],[1 3 3 1]);
>> CL=feedback(C*P,1)
您可以使用>>step(feedback(C*P,1))
命令查看闭环系统的阶跃响应。
考虑如图所示的方框图。
在这种情况下,闭环传递函数的计算如下:
>>C=tf([1.13 0.45],[1 0]);
>>P=tf([1],[1 3 3 1]);
>>CL=feedback(P,C)
考虑图所示的方框图(在这个方框图中反馈是正的)。
在这种情况下,闭环传递函数的计算如下:
>>C=tf([1.13 0.45],[1 0]);
>>P=tf([1],[1 3 3 1]);
>>CL=feedback(P,C,+1)
下图所示的连接传递函数可借助于series命令,即>> series(C,P)
。
下图所示的连接传递函数可借助parallel命令获得,即>>parallel(C,P)
。