控制工程-实验指导书
《控制工程基础》实验指导书常熟理工学院机械工程系
目录
1.MATLAB时域分析实验 (2)
2.MATLAB频域分析实验 (4)
3. Matlab校正环节仿真实验 (8)
4.附录:Matlab基础知识 (14)
实验1 MATLAB 时域分析实验
一、实验目的
1. 利用MATLAB 进行时域分析。
要求:(1)计算连续系统的时域响应(单位脉冲输入,单位阶跃输入,任意输入)。
(2)根据系统的极点分析系统的稳定性。
2.掌握Matlab 系统分析函数impulse 、step 、lsim 、roots 、pzmap 的应用。
二、实验内容
1.已知某高阶系统的传递函数为
()26
543222050
1584223309240100
s s G s s s s s s s ++=++++++,试求该系统的单位脉冲响应、单位阶跃响应、单位速度响应和单位加速度响应。
MATLAB 计算程序 num=[2 20 50];
den=[1 15 84 223 309 240 100]; t= (0: 0.1: 20); figure (1);
impulse (num,den,t); %Impulse Response figure (2);
step(num,den,t);%Step Response figure (3);
u1=(t); %Ramp.Input hold on; plot(t,u1);
lsim(num,den,u1,t); %Ramp. Response gtext(‘t’); igure (4);
u2=(t*t/2);%Acce.Input hold on; plot(t,u2);
lsim(num,den,u2,t);%Acce. Response
gtext(‘t*t/2’);
2.已知某高阶系统的传递函数为
()328
76543272424
23456789
s s s G s s s s s s s s s +++=++++++++,试求该系统的极点并判断系统的稳定性。
MATLAB 计算程序 den=[1 2 3 4 5 6 7 8 9]; roots(den)
3.已知某高阶系统的传递函数为
()56
4233256
3.1210 6.25101.0108.010
4.410 6.2410s G s s s s s ?+?=+?+?+?+?,试求该系统的零极点并判
断系统的稳定性。
MATLAB 计算程序 num=[3.12*10^5 6.25*10^6];
den=[1 1.0*10^2 8.0*10^3 4.4*10^5 6.24*10^6]; [p,z]= pzmap(num,den); pzmap(num,den); title(‘Pole -Zero Map’); hold on;
实验2 MATLAB 频域分析实验
一、实验目的
1、加深理解频率特性的概念,了解一般系统的的Nyquist 图和Bode 图的特点和绘制。
2、学习采用MATLAB 绘制和分析系统频率特性图
二、实验要求
1、分析开环系统的频率特性,并用MATLAB 绘制其开环Nyquist 图和Bode 图,求取剪切频率ωc ,将实验结果与理论分析计算结果进行比较,验证理论的正确性。
2、用MATLAB 作闭环Nyquist 图和Bode 图,分析单位反馈系统的频率特性。
三、实验原理
1、对数频率特性:
Bode 图——对数坐标图,又称Bode 图,它由对数幅频特性图和对数相频特性图组成。对数幅频特性图纵坐标标度为20lgG( jw) ,其中对数以10为底均匀分度,采用单位是分贝(db);横坐标标度为lgw ,以对数分度绘制,标以w ,采用单位是弧度/秒(rad/s)。对数相频特性图纵坐标为角度,均匀分度,采用单位为度,横坐标与第一张图完全相同。对数相频特性图放在第一张之下,同时使横坐标的 上下一一对应,以便对比分析。
2、极坐标频率特性曲线(又称尼奎斯特曲线)
它是在复平面上用一条曲线表示w 由0→∞时的频率特性。即用矢量G( jw)的端点轨迹形成的图形,w 是参变量。在曲线的上的任意一点可以确定实频、虚频、幅频和相频特性。
3、用MATLAB 作频率特性曲线 1)用MATLAB 作开环频率特性
设系统的开环传递函数为
()10111011m m m m
n n n n b s b s b s b G s a s a s a s b ----+++=
+++ (2.1)
则系统的开环频率特性为
()10111011()()()()()()m m m m
n n n n b jw b jw b jw b G jw a jw a jw a jw a ----+++=
+++ (2.2)
据式(2.2)和表2.1中的MATLAB 命令可绘制出相应的尼奎斯特图和博德图。
2)用MATLAB 作闭环频率特性
若
()
M w 表示频率特性幅值,
()
w α表示相角,则闭环频率特性为
()()()
()()
j w o i X jw jw M w e
X jw αφ=
= (2.3)
其频率响应可按式(2.3)计算出不同频率处的()
i M w 和
()
i w α(i=1,2,3,…),
即可求得闭环系统频率特性并画出相应的曲线。 3)单位负反馈系统的频率特性
设单位负反馈系统的开环传递函数为
()
G s ,闭环频率特性表示为
()()()
1G jw jw G jw φ=
+ (2.4)
有式(2.2),得
()101111011011()()()()()()()()()m m m m
n n m m n n m m
b jw b jw b jw b jw a jw a jw a jw a b jw b jw b jw b φ------+++=
+++++++ (2.5)
据式(2.5)和表2.1的MATLAB 命令可绘制出闭环频率特性曲线。
num[ ]和den[ ]分别表示传递函数的分子和分母中包含以s 的降幂排列的多项式系数;grid on :在所画出的图形坐标中加入栅格;text( ):文字注释;tf (num ,den ):创建传递函数对象;feedback ( ,1):求单位负反馈系统的闭环传递函数。 4、实验步骤
1)将系统的传递函数写成式(2.2)和(2.5)形式;
2)在MATLAB 环境下,按MATLAB 语言格式要求,给num 和den 赋值;
3)在MATLAB 环境下,用表1的命令绘图; 4)输入MATLAB 程序。 5、举例说明
例1:已知控制系统的开环传递函数为21
()0.81G s s s =
++,利用MATLAB 画出尼
奎斯特图。 实验程序:
num=[0 0 1]; den=[1 0.8 1]; nyquist(num,den); grid on ;
title(‘Nyquit Plot of G(s)=1/(s^2+0.8s+1)’);
例2:已知控制系统的开环传递函数为225
()425G s s s =
++,利用MATLAB 画出博
德图。 实验程序:
num=[0 0 25]; den=[1 4 25]; bode(num,den); grid on ;
title(‘Bode Diagram of G(s)=25/(s^2+4s+25)’);
例3:已知单位负反馈系统的开环传递函数为()
2290.21()( 1.29)s s G s s s s ++=
++,利用MATLAB
画出w 从
0.1rad
s 到
1000rad
s 的博德图。
实验程序:
num=[0 9 1.8 9]; den=[1 1.2 9 0]; w=log space(-2,3,100); bode(num,den,w);
grid on;
title(‘Bode Diagram of G(s)=9(s^2+0.2s+1)/[s(s^2+1.2s+9)]’);
例4:已知单位负反馈系统的开环传递函数为
1
()
1
G s
s
=
+,利用MATLAB绘制系
统的频率特性曲线。
解:系统的开环频率特性为
1
()
1
G jw
jw
=
+,闭环频率特性为
1
()
2
jw
jw
φ=
+
实验程序:
P=tf([1],[1 1]);
PC=feedback(P,1);
bode(PC);
grid on;
title(‘Frequency Response of Closed Loop’);
实验3 MATLAB校正环节仿真实验
一、实验目的
1、学习利用实验探索研究控制系统的方法;
2、学会控制系统数学模型的建立及仿真;
3、熟悉并掌握控制系统频域特性的分析;
4、采用PID算法设计磁悬浮小球控制系统;
5、了解PID控制规律和P、I、D参数对控制系统性能的影响;
6、学会用Simulink来构造控制系统模型。
二、实验内容
在Matlab中Simulink环境下,建立控制系统的方框图,进行仿真,调整PID 参数,观察系统瞬态响应和稳态响应的变化,并记录几组PID参数作为实际系统控制参数。
三、实验原理
首先从理论上对磁悬浮小球系统进行数学建模,采用PID算法设计调节器,在MATLAB平台仿真获得适当的PID参数范围,并进行频域分析,观察并记录实验仿真结果。
1、系统建模及仿真
磁悬浮小球系统简介:它主要由铁芯、线圈、位置传感器、放大器、控制器和控制对象小球组成。系统开环结构如图所示。
控制要求:调节电流,使小球的位置x 始终保持在平衡位置。
忽略小球受到的其它干扰力,则受控对象小球在此系统中只受电磁吸力F 和自身重力mg 。球在竖直方向的动力学方程可以如下描述:
()()()1,2
2x i F mg dt t x d m -=
式中:x ——磁极到小球的气隙,单位m ;m ——小球的质量,单位Kg ;F(i,x)——电磁吸力,单位N ;g ——重力加速度,单位m/s 2。
由磁路的基尔霍夫定律、毕奥-萨格尔定律和能量守恒定律,可得电磁吸力为:
()()22
,2
20?
?
?
??-
=x i AN x i F μ
式中:μ0——空气磁导率,4πX10-7H/m ;A ——铁芯的极面积,单位m 2;N ——电磁铁线圈匝数;x ——小球质心到电磁铁磁极表面的瞬时气隙,单位m ;i ——电磁铁绕组中的瞬时电流,单位A 。
根据基尔霍夫定律,线圈上的电路关系如下:
()()()()3dt
t di L t Ri t U += 式中:L ——线圈自身的电感,单位H ;i ——电磁铁中通过的瞬时电流,单位A ;R ——电磁铁的等效电阻,单位Ω。
当小球处于平衡状态时,其加速度为零,即所受合力为零,小球的重力等于小球受到的向上电磁吸力,即:
()()42,2
2
000???
?
??-
==x i AN x i F mg μ
综上所述,描述磁悬浮小球系统的方程可完全由下面方程确定:
()
()()()()()()()52,2,,2
020002
202
2??????
?
???
??
????
? ??-==+=???
??-=-=x i AN
x i F mg dt t di L t Ri t U x i AN x i F x i F mg dt t x d m μμ
以小球位移为输出,电压为输入,可得系统的传递函数为:
()3
112331
2/k k s k s k s k k s G +--=
其中:L R k mx ki k mx ki k AN k -=-==-
=32
02302012
0,2,2,2
μ 设系统参数如下表所示:
四、实验要求
1、建立磁悬浮小球控制系统框图;
2、给定几组PID参数作为实际系统控制参数,并观察PID参数对系统瞬态响应和
稳态响应的影响。
五、实验步骤
1)进入MATLAB软件系统,在命令区内键入simulink函数,调用实验软件系统的主界面。
2)将各模块连接起来,点击开始仿真,再双击示波器模块,其控制框图和仿真结
果如下图所示。从示波器来看,此系统是一个不稳定的系统。则需要用PID控制器来控制。
3)利用MATLAB设计具有PID调节器的磁悬浮小球控制系统,并计算相关参数,其控制系统如下图:
4)在Matlab中Simulink环境下,建立系统的控制总方框图,如下图所示。
5)调整PID参数,观察系统瞬态响应和稳态响应的变化;如K P=1,K I=0.05,K D=8,其仿真结果如下图所示。
6)双击PID模块,弹出界面如下图所示,改变并记录几组PID参数作为实际系统控制参数。
附录
M a t l a b基础
关于M A T L A B
MATLAB是Matrix laboratory的缩写,是美国的MATHWORK公司开发的一种进行科学和工程计算的交互式程序语言。1984年推出第一个商业版本,到现在已经到了6.1版本,功能日趋完善和强大。主要适用于矩阵运算及控制和信息处理领域的分析设计。另外还包括仿真、系统辨识、神经元网络、模糊控制等工具箱。其中Simulink仿真工具箱可以利用图形界面和框图来编程和仿真。
运行M A T L A B程序的流程
?MATLAB软件通常工作在交互状态下,当键入一条命令后,MATLAB系统立即执行该命令并在屏幕上显示结果;
?MATLAB系统也可以执行储存在文件中的命令序列。这两种工作方式构成了系统的解释环境。
数字运算
MATLAB可以像计算器一样直接进行数学运算。
在MATLAB命令窗口内输入:
80*0.8+16*12.2
ans =
259.2000
帮助命令h e l p
MATLAB提供了大量的函数和命令,如果想记住所有的函数及其调用格式几乎是不可能的。
在线帮助可以由help 命令来获得。在MATLAB 的命令窗口直接键入help即可得到所有的帮助主题。如果要对某一命令或函数进行查询,直接在help后跟上该命令或函数即可。
变量的命名规则
变量名对大小写敏感。
变量名的首字符必须是字母。
每个变更名最多可包含19个字符。函数的命名规则与变量相同。
表达式
MTLAB对使用者键入的表达式进行翻译和计算,语句的形式通常为:
变量=表达式;
或简单地写作:表达式;
其中分号是可选的,如果该语句的最后一个字符是分号,则在执行词句时不在屏幕上显示结果。
表达式是由运算符,函数以及变量名组成。例如:z=r*sin(x)
简单矩阵的输入
矩阵不需维数说明和类型定义,存储单元完全由计算机自动分配。输入矩阵最简单的方法是输入矩阵的元素表,每个元素之间用空格或逗号隔开,用“;”号作为元素表中每一行的结束符,并用[ ]将元素表括起来。
例如,输入语句:a=[1 2 3;4 5 6;7 8 9]
则结果为:a = 1 2 3
4 5 6
7 8 9
向量的产生
冒号是MATLAB中一个重要的字符。
语句:x=1:5
产生一个行向量,其元素为1至5的数,每个数较前一数字递增1。即:x=[1 2 3 4 5 ],增量也可以是其它数。
如:y=[0:2:10]
则y=[0,2,4,6,8,10]
矩阵操作
1、转置:
若a=[1 2 3;4 5 6]
b=a'
得b =
1 4
2 5
3 6
2、求逆(inverse)
使用函数inv(a),例如:
a=[1 2 0; 2 5 -1; 4 10 -1]
inv(a)
ans =
5 2 -2
-2 -1 1
0 -2 1
3、矩阵的加、减、乘。
两个同维矩阵,才能进行加减运算
c= a+b; d=a-b;
a的列数等于b的行数,则e=a*b;
例如:a=[1 3 5 7], b=[2 4 6 8]则
a.*b’
ans =
2 12 30 56
M A T L A B程序的流程
MATLAB通常工作在交互状态下,当键入一条命令后,MATLAB系统立即执行该命令并在屏幕上显示结果;
MATLAB系统也可以执行储存在文件中的命令序列。这两种工作方式构成了系统的解释环境。
当面对一个问题,用文本编辑器编辑好MATLAB程序后,保存为后缀为“.m”的文件(实质为MATLAB命令序列),执行时在命令窗口键入M文件名后回车或用菜单命令。
M A T L A B程序的流程
MATLAB具有类似其它语言while ,for循环语句,可以实现一条语句或一组语句的多次重复执行。
1、for循环
for i = 1:n,
for j = 1:n
a(i , j) = 1/(i+j-1);
end
end
重复执行FOR 和END之间的命令,可以嵌套。
2、while循环
while 表达式
语句
end
例:n=1;y=0;
while n<=100
y=y+n; n=n+1;
end
得 y =5050
3、if语句
if x>0
x=x ;
else
x= - x ;
end
图形处理
MATLAB有强大图形处理功能,能处理二维、三维及图形对象或句柄图形。
二维图形处理常用命令有:
figure 创建图形窗口
plot、fplot、ezplot 基本的二维绘图命令
semilogx、semilogy、semilog,同plot,但此行的命令坐标轴是lnx,lny
xlabel、ylabel、title 标注轴名称与图形标题
text、gtext、legend 标注图形与图例的标注
help graph2d 二维图形方面有命令
help graph3d 三维图形方面有命令
help specgrah 特殊图形方面有命令
假设有两个同长度的向量 x 和 y, 则用 plot(x,y) 就可以自动绘制画出二维图来。如果打开过图形窗口,则在最近打开的图形窗口上绘制此图,如果未打开窗口,则开一个新的窗口绘图。
〖例〗正弦曲线绘制:
t=0:0.1:2*pi; %生成横坐标向量,使其为 0,0.1,0.2,...,6.2
y=sin(t); % 计算正弦向量
plot(t,y) %绘制图形
这样立即可以得出二维图
控制系统工具箱
控制工具箱包含了进行控制系统分析与设计所必需的工具箱函数。
(1)模型建立(2)模型变换
(3)模型简化(4)模型实现
(5)模型特性(6)方程求解
(7)时间响应 (8)频率响应
(9)根轨迹 (10)估计器/调节器设计 控制系统模型
1)状态空间状态空间形式的系统方程写为:
在MA TLAB 中,这个系统简单的写为A 、B 、C 、D 四个矩阵的形式即可
Sys=ss(A,B,C,D) 2)传递函数
传递函数一般记为:
在MA TLAB 中,直接用分子/分母系数表示 Num=[b0,b1,b2…bm] den=[a0,a1,a2,….an] sys=tf(num,den)
(3)零点增益模型(ZP )
在MATLAB 中,用[z,p,k]矢量组表示 Sys=zpk(z,p,k) 模型之间的转换
控制系统的时域分析
Impulse 脉冲响应 Step 阶跃响应 Lsim 任意输入模拟 控制系统频域分析
Bode Bode 图 Nyquist Nyquist 图
Margain 增益裕度和相位裕度 例:
figure,bode(sys1) 画其Bode 图
Du
Cx y Bu Ax x
+=+= n
n n m
m m a s a s a b s b s b s den s num s H ++++++=
=--......)()()(110110)
)...()(())...()(()(2121m m p s p s p s z s z s z s k
s H ------=[num,den]=ss2tf(a,b,c,d,iu)状态空间到传函[z,p,k]=ss2zp(a,b,c,d,iu)状态空间到零极
[a,b,c,d]=tf2ss(num,den)传函到状态空间
[z,p,k]=tf2zp(num,den)传函到零极[a,b,c,d]=zp2ss(z,p,k)零极到状态空间[num,den]=zp2tf(z,p,k)零极到传函
figure,nyquist(sys1) 画Nyquist图
margin(sys1) 求系统的幅值裕量与相位裕量
控制系统稳定性分析
在MATLAB中,可利用pzmap函数绘制系统的零极点图,从而确定系统的稳定性
调用格式:
Pzmap(num,den)
系统仿真工具箱S I M U L I N K
类似V B中在窗体上放置控件一样,S I M U L I N K用方框图的绘制代替了程序的编写。SIMULINK 主要完成两方面的工作
建立控制系统的模型
实现控制系统的仿真
S I M U L I N K启动
1. 在MATLAB的命令窗口中键入SIMULINK,就打开了SIMULINK的模块库(如图);
2. 在MATLAB命令窗口的file菜单中选择new命令的model,将打开一个新的空白窗口;
3. 在MATLAB的工具栏中,按按钮,将打开一个新的空白窗口;
连接与建模
构成任何一个系统需要三步:选定典型环节、相互联接和给定环节参数。