《控制系统数字仿真》课程
大作业
姓 名 : 学 号 : 班 级 : 日 期 :
同组人员 :
目录
一、引言 ................................................. 2 二、设计方法 ............................................. 2 1、系统数学模型 ....................................... 2 2、系统性能指标 ....................................... 4 2.1 绘制系统阶跃响应曲线、根轨迹图、频率特性 ....... 4 2.2 稳定性分析 ..................................... 6 2.3 性能指标分析 ................................... 6 3、控制器设计 ......................................... 6 三、深入探讨 ............................................. 9 1、比例-微分控制器(PD) ................................ 9 2、比例-积分控制(PI ) ............................... 12 3、比例-微分-积分控制器(PID ) ....................... 14 四、设计总结 ............................................ 17 五、心得体会 ............................................ 18 六、参考文献 ............................................ 18
一、引言
MATLAB 语言是当今国际控制界最为流行的控制系统计算机辅助设计语言,它的出现为控制系统的计算机辅助分析和设计带来了全新的手段。其中图形交互式的模型输入计算机仿真环境SIMULINK ,为MATLAB 应用的进一步推广起到了积极的推动作用。现在,MATLAB 语言已经风靡全世界,成为控制系统CAD 领域最普及、也是最受欢迎的软件环境。
随着计算机技术的发展和应用,自动控制理论和技术在宇航、机器人控制、导弹制导及核动力等高新技术领域中的应用也愈来愈深入广泛。不仅如此,自动控制技术的应用范围现在已发展到生物、医学、环境、经济管理和其它许多社会领域中,成为现代社会生活中不可或缺的一部分。随着时代进步和人们生活水平的提高,在人类探知未来,认识和改造自然,建设高度文明和发达社会的活动中,控制理论和技术必将进一步发挥更加重要的作用。作为一个自动化专业的学生,了解和掌握自动控制的有关知识是十分必要的。
利用MATLAB 软件及其SIMULINK 仿真工具来实现对自动控制系统建模、分析与设计、仿真,能够直观、快速地分析系统的动态性能和稳态性能,并且能够灵活的改变系统的结构和参数,通过快速、直观的仿真达到系统的优化设计,以满足特定的设计指标。
二、设计方法
1、系统数学模型
美国卡耐尔基-梅隆大学机器人研究所开发研制了一套用于星际探索的系统,其目标机器人是一个六足步行机器人,如图(a)所示。该机器人单足控制系统结构图如图(b)所示。 要求:
(1)建立系统数学模型;
(2)绘制系统阶跃响应曲线、根轨迹图、频率特性; (3)分析系统的稳定性,及性能指标;
(4)设计控制器Gc(s),使系统指标满足:ts
在不加入任何控制器的情况下,由控制系统结构图可得其开环传递函数为
G 1
0(S ) =S (S 2
+2S +10)
Simulink 仿真得
在单位阶跃信号作用下系统响应曲线为
单位阶跃响应曲线
2、系统性能指标
2.1 绘制系统阶跃响应曲线、根轨迹图、频率特性
编写M 文件如下:
%set up system math modle num=[1];
den=[1 2 10 0]; G0=tf(num,den) G=feedback(G0,1) figure(1); t=0:100; step(G,t); grid;
title('单位阶跃响应曲线') [y t]=step(G,t); [Y k]=max(y); tp=t(k) ess=1-y; figure(2); plot(t,ess); grid;
title('单位阶跃响应误差曲线') figure(3); pzmap(G0);
title('零极点分布图') figure(4); margin(G0);
title('系统开环对数特性曲线') grid; figure(5); nyquist(G0);
title('nyquist曲线') figure(6); rlocus(G0)
title('系统根轨迹特性曲线') sgrid
stepinfo(G)
单位阶跃响应误差曲线
单位阶跃响应曲线
A m p l i t u d e
Time (sec)
M a g n i t u d e (d B )
系统开环对数特性曲线
I m a g i n a r y A x i
s
P h a s e (d e g )
Real Axis
10
10
10
10
10
Frequency (rad/sec)
nyquist 曲线
系统根轨迹特性曲线
I m a g i n a r y A x i s
I m a g i n a r y A x i s
Real Axis
Real Axis
以上各图依次为系统单位阶跃响应曲线、单位阶跃响应误差曲线、零极点分布图、系统开环对数特性曲线、系统根轨迹特性曲线、奈奎斯特曲线。
2.2 稳定性分析
由闭环零极点分布图可知,系统闭环传递函数的极点全部位于s 左半平面,因此系统闭环稳定。
2.3 性能指标分析
(1)系统稳态误差e ss =0。由以上分析可知在加入控制器之前,e ss =0,符合设计要求。
(2)系统调节时间t s
(3)系统阶跃响应的超调量σ%
3、控制器设计
由以上分析可知,要减小系统的调节时间,使其快速性能得到改善,同时不影响系统的稳态误差和超调量,因此,可以利用比例控制器来实现这一目的。
P 控制方式只是在前向通道上加上比例环节,相当于增大了系统的开环增益,减小了系统的稳态误差,减小了系统的阻尼,从而增大了系统的超调量和振荡性。
P
控制方式的系统结构图如下:
P 控制器的传递函数为:
G c (S ) =K p
加上P 控制后的系统开环传递函数为:
G (S ) =
K p
S (S +2S +10)
取Kp=1至15,步长为1,进行循环测试系统,将不同Kp 下的阶跃响应曲线绘制在一张坐标图下: MATLAB 源程序:
%对于P 控制的编程实现 num=[1];
den=[1 2 10 0]; t=0:0.01:30; for Kp=1:1:15 num1=Kp*num; G0=tf(num1,den) G=feedback(G0,1) y=step(G,t); plot(t,y)
If ishold~=1,hold on , end end
grid;
下面通过列表的方式给出在不同Kp 值作用下系统的调节时间、稳态误差以及超调量:
从上表可以看出,随着Kp 值的增大,系统的调节时间、超调量和稳态误差都逐渐减小,但是,当Kp 增大到一定值后,系统的调节时间、超调量和稳态误差又都随Kp 增大而增大,稳定性下降。当Kp=6时,调节时间t s =4.96s,稳态误差e ss 近似为0,超调量σ%近似为0,满足设计要求。
此时系统的阶跃响应曲线如图所示: MATLAB 源程序:
%对于P 控制的编程实现%(Kp=6) clear
num0=[1];
den=[1 2 10 0];
t=0:0.01:50; Kp=6;
num=Kp*num0;
G0=tf(num0,den); G=feedback(G0,1); G1=tf(num,den); G2=feedback(G1,1); step(G,G2,t) grid;
gtext('\leftarrowKp=1') gtext('\leftarrowKp=6')
Step Response
A m p l i t u d e
Time (sec)
综上所述,采用比例控制器时,满足设计要求的最合理的Kp 值为6,此时系统的超调量为0,调节时间为4.96秒,稳态误差为0。由上图可看出加入比例控制器后,系统的调节时间大幅度减小,快速性得到了很大的提高,同时系统的稳定性和准确性并没有受到明显影响。
此时,加入比例控制器后,系统开环传递函数为:
G (S ) =
性能比较: 加入P 之前
6
2
S (S +2S +10)
加入P
之后
三、深入探讨
通过以上讨论,单独使用比例控制器就已经满足各项要求,接下来将深入探讨是否还有其他控制器,能更好的满足各项性能指标。
1、比例-微分控制器(PD)
PD 控制方式是在P 控制的基础上增加了微分环节,系统的输出量同时受到误差信号及其速率的双重作用。因而,比例—微分控制是一种早期控制,可在出现误差位置前,提前产生修正作用,从而达到改善系统性能的目的。 PD 控制方式的系统结构图如下:
PD 控制器的传递函数为:
G c (S ) =K p (1+K d S )
加上PD 控制后的系统开环传递函数为:
G (S ) =
K p *K d S +K p S (S +2S +10)
保持Kp=6不变,调试取Kd=0.1、0.3、0.5、0.7、0.9时的系统阶跃响应曲线,并与P 控制做比较: MATLAB 源程序为:
%编程实现PD 控制与P 控制的比较 clear
num0=[6];
den=[1 2 10 0]; t=0:0.01:40;
S0=tf(num0,den); S=feedback(S0,1); k=step(S,t); plot(t,k); grid ; Kp=6;
if ishold~=1,hold on , end
for Kd=0.1:0.2:1 num=[Kd*Kp,Kp]; G0=tf(num,den); G=feedback(G0,1); y=step(G,t); plot(t,y);
if ishold~=1,hold on , end end grid ;
下面通过列表的方式给出在不同Kd 值作用下系统的调节时间、稳态误差以及超调量:
由实验曲线以及上表可以看出,在比例控制的基础上增加微分控制,对系统的稳态误差影响并不明显,而增大微分常数Kd 可以有效的减小系统的超调量和调节时间,在不影响系统的稳态性能的基础上改善了系统的动态性能。微分控制部分相当于增大了系统的阻尼,所以可以选用较大的开环增益来改善系统的动态性能和系统的稳态精度。此时系统的阶跃响应曲线如图所示: MATLAB 源程序为:
%对于PD 控制的编程实现%(Kd=0.1) clear
num0=[1];
den=[1 2 10 0]; t=0:0.01:50; Kp=6; Kd=0.1;
num=[Kd*Kp,Kp]; G0=tf(num0,den); G=feedback(G0,1); G1=tf(num,den);
Step Response
A m p l i t u d e
G2=feedback(G1,1); step(G,G2,t) grid;
gtext('\leftarrowKp=1')
gtext('\leftarrowKp=6,Kd=0.1')
综上所述,当Kp=6,Kd=0.1时,引入比例-微分控制器,同样可以在保证系统稳态误差和超调量不发生明显变化的前提下,改善系统的动态性能,使系统的调节时间减小到10秒以下,从而满足设计要求。
此时系统的开环传递函数为:
G (S ) =
0. 6S +6
S (S +2S +10)
系统性能验证: MATLAB 源程序:
%加入PD 控制器之前系统性能 num0=[1];
den=[1 2 10 0]; G0=tf(num0,den); G=feedback(G0,1); stepinfo(G)
%加入PD 控制器之后系统性能 num=[0.6 6]; den=[1 2 10 0]; G0=tf(num,den); G=feedback(G0,1); stepinfo(G)
2、比例-积分控制(PI )
PI 控制是在P 控制基础上增加了积分环节,提高了系统的型别,从而能减小系统的稳态误差。因为单纯使用增大Kp 的方法来减小稳态误差的同时会使系统的超调量增大,破坏了系统的平稳性,而积分环节的引入可以与P 控制合作来消除上述的副作用,PI 控制的结构图为:
PI 控制器的传递函数为:
K p S +K p K i K G c (S ) =K p (1+) =
S S
加上PI 控制后的系统开环传递函数为:
G (S ) =
K p S +K p K i S (S +2S +10)
2
2
保持Kp=6不变,将PI 控制与P 控制的系统阶跃响应曲线进行比较: MATLAB 源程序为:
%编程实现PI 控制与P 控
制%的比较 clear
t=0:0.01:30; num0=[6];
den0=[1 2 10 0]; S0=tf(num0,den0); S=feedback(S0,1); k=step(S,t); plot(t,k); grid; Kp=6; if ishold~=1,hold on , end
for Ki=0.005:0.5:1
num=[Kp,Kp*Ki]; den=[1 2 10 0 0];
G0=tf(num,den); G=feedback(G0,1); [y t]=step(G,t); [Y k]=max(y); plot(t,y); grid;
C=dcgain(G);
percentovershoot=100*(Y-C)/C i=length(t);
while (y(i)>0.95*C)&(y(i)
ts=t(i)
if ishold~=1,hold on , end end
MATLAB 命令窗口中运行后得到结果为:
上图的初步印象是PI 控制中系统的稳态误差显著减小,但是系统的超调量
和平稳性并没有得到改善,相反,增大积分环节中的增益Ki 则会使系统的超调量增加,系统的震荡加剧,从而破坏了系统的动态性能。
原因是,PI 控制器相当于在系统中增加了一个位于原点的开环极点,同时也增加了一个位于s 左半平面的开环零点。位于原点的开环极点可以提高系统的型别,以消除或减小系统的稳态误差,改善系统的稳态性能;而增加的负实零点则用来减小系统的阻尼程度,缓和PI 控制器极点对系统稳定性及动态过程产生的不利影响。只要积分常数Ki 足够小,PI 控制器对系统稳定性产生的不利影响可大为减弱。因此,在控制工程实践中,PI 控制器主要用来改善控制系统的稳态性能。本例中当Ki=0.005时,可满足设计要求,验证了上述结论的正确性。
由以上的分析可知,PI 控制器并不适合作为本题的控制器,因此不做过多讨论。
3、比例-微分-积分控制器(PID )
PID 控制方式结合了比例积分微分三种控制方式的优点和特性,在更大的程度上改善系统各方面的性能,最大程度的使闭环系统的阶跃响应尽可能地最好(稳、快、准)。
系统的结构图为:
PID 控制器的传递函数为:
G c (S ) =
K p (K d S 2+S +K i )
S
加上PID 控制后的系统开环传递函数为:
G (S ) =
K p (K d S 2+S +K i ) S (S +2S +10)
由此可见,当利用PID 控制器进行串联校正时,除可使系统的型别提高一级外,还将提供两个负实零点。与PI 控制器相比,PID 控制器除了同样具有提高系统的稳态性能的优点外,还多提供一个负实零点,从而在提高系统动态性能方面,具有更大的优越性。因此,在工业过程控制系统中,广泛使用PID 控制器。PID 控制器各部分参数的选择,在系统现场调试中最后确定。通常,应使积分部分发生在系统频率特性的低频段,以提高系统的稳态性能;而使微分部分发生在系统频率特性的中频段,以改善系统的动态性能。
现在要调整的参数有三个:Kp 、Kd 、Ki ,这样,增益扫描会更加复杂,这是因为比例、微分和积分控制动作之间有更多的相互作用。一般来说,PID 控制中的Ki 与PI 控制器的设计相同,但是为了满足超调量和调节时间这两个性能指标,比例增益Kp 和微分增益Kd 应同时调节。
1.4
1.2
1
0.8
0.6
0.4
0.2
[1**********]
尽管曲线过于密集,但是从PD 控制总结的一般规律来看,超调量最大的那一族曲线所对应的Kd 值最小,所以,我们选择Kd=0.1、0.2两组曲线族分开观察阶跃响应曲线:
从以上两组曲线图可以看出,增大Kd 可以有利于加快系统的响应速度,使系统超调量减小,稳定性增加,同时增大Kp 可以进一步加快系统的响应速度,使系统更快速。PID 控制器虽然在复杂性上有所增加,但同另外三种控制器相比大大改善了系统的性能。 MATLAB 源程序为:
%编程实现PID 控制 clear
t=0:0.01:14; Kp=9; Kd=0.2;
Ki=0.001;
num=[Kp*Kd Kp Kp*Ki];
den=[1 2 10 0 0]; G0=tf(num,den); G=feedback(G0,1);
[y t]=step(G,t); [Y k]=max(y); plot(t,y);
C=dcgain(G)
percentovershoot=100*(Y-C)/C
i=length(t);
while (y(i)>0.98*C)&(y(i)
end
ts=t(i) grid;
MATLAB 命令窗口中运行后得到结果为:
综上所述,选择Ki=0.001,Kp=9,Kd=0.2时系统各方面性能都能令人满意,所以可以作为PID 控制参数。
此时系统的开环传递函数为:
1.8S 2+9S +0.009
G (S ) =22
S (S +2S +10)
系统性能验证:
加入PID 之前
加入PID 之后
四、设计总结
通过以上分析,可以看出,从P 控制一直到PID 控制,系统的性能越来越好。同时,可以发现PID 控制所起的作用,不是P 、I 、D 三种作用的简单叠加,而是三种作用的相互促进。
增大比例系数Kp 一般将加快系统的响应,在有静差的情况下有利于减小静差,但是过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。所以调试时将比例参数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。如果系统没有静差或静差已经小到允许范围内,并且对响应曲线已经满意,则只需要比例调节器即可。
如果在比例调节的基础上系统的静差不能满足设计要求,则必须加入积分环节。增大积分时间I 有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。
如果系统的动态过程反复调整还不能得到满意的结果,则可以加入微分环节。增大微分时间D 有利于加快系统的响应速度,使系统超调量减小,稳定性增加,但系统对扰动的抑制能力减弱。
在PID 参数进行整定时如果能够有理论的方法确定PID 参数当然是最理想的方法,但是在实际的应用中,更多的是通过凑试法来确定PID 的参数。
原系统与P 、P D 、P I 、P ID 四种控制方式下的阶跃响应曲线比较
将原系统以及P 、PD 、PI 、PID 四种控
A m p l i t u d e
1.4
1.2
1
0.8
制方式下的阶跃响应曲线画在同一坐标系下如右图:
0.6
0.4
0.2
00
[1**********]11
Time (sec)
五、心得体会
这次实验,认识了自动控制领域最常用的PID 控制,基本掌握了PID 控制的基本规律,同时也认识到自动控制系统的复杂性。在利用MATLAB 软件时经常会碰到一些新问题,而我们手头的资料有限,时间和精力有限,并不能解决所有问题。比如在PID 控制时,一旦选定了Ki 和Kd 后,超调量随Kp 的变化并不明显,这是我无法理解的,当Kp 增加时,系统仅仅提高了响应的快速性,而超调量并没有显著的变化。又如,在PD 控制时,当Kd 和Kp 取值足够大时,便可以使响应曲线完全理想化,即响应时间趋于0,超调量趋于0,在本系统中也满足足够的稳态精度,我就会这样怀疑,并不是所有系统采用PID 控制效果一定比其他控制效果要好,等等。所有这些问题将在今后的学习和实验中寻求答案。
六、参考文献
(1)西安交通大学出版社 《反馈控制问题—使用MATLAB 及其控制系统工具箱》 (2)科学出版社《自动控制原理》第五版 胡寿松主编
(3)重庆大学出版社《控制系统计算机辅助设计》 蔡启仲等编著 (4)西北工业大学出版社《基于MATLAB7.x/Simulink/Stateflow系统仿真、分析及设计》 贾秋玲、袁冬莉等编著
(5)西安电子科技大学出版社《MATLAB 在自动控制中的应用》 吴晓燕主编 (6)机械工业出版社《MATLAB/Simulink建模与仿真实例精讲》