控制系统数字仿真大作业.docx

上传人:b****8 文档编号:9288202 上传时间:2023-02-04 格式:DOCX 页数:27 大小:365.17KB
下载 相关 举报
控制系统数字仿真大作业.docx_第1页
第1页 / 共27页
控制系统数字仿真大作业.docx_第2页
第2页 / 共27页
控制系统数字仿真大作业.docx_第3页
第3页 / 共27页
控制系统数字仿真大作业.docx_第4页
第4页 / 共27页
控制系统数字仿真大作业.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

控制系统数字仿真大作业.docx

《控制系统数字仿真大作业.docx》由会员分享,可在线阅读,更多相关《控制系统数字仿真大作业.docx(27页珍藏版)》请在冰豆网上搜索。

控制系统数字仿真大作业.docx

控制系统数字仿真大作业

 

《控制系统数字仿真》课程

大作业

 

姓名:

学号:

班级:

日期:

同组人员:

 

目录

一、引言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<10s,ess=0,,超调量小于5%。

 

在不加入任何控制器的情况下,由控制系统结构图可得其开环传递函数为

Simulink仿真得

在单位阶跃信号作用下系统响应曲线为

2、系统性能指标

2.1绘制系统阶跃响应曲线、根轨迹图、频率特性

编写M文件如下:

%setupsystemmathmodle

num=[1];

den=[12100];

G0=tf(num,den)

G=feedback(G0,1)

figure

(1);

t=0:

100;

step(G,t);

grid;

title('单位阶跃响应曲线')

[yt]=step(G,t);

[Yk]=max(y);

MATLAB命令窗口中运行后得到结果为:

Transferfunction:

1

----------------------

s^3+2s^2+10s

Transferfunction:

1

---------------------------

s^3+2s^2+10s+1

ans=

RiseTime:

21.5386

SettlingTime:

38.5480

SettlingMin:

0.9001

SettlingMax:

0.9997

Overshoot:

0

Undershoot:

0

PeakTime:

79.1536

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)

 

以上各图依次为系统单位阶跃响应曲线、单位阶跃响应误差曲线、零极点分布图、系统开环对数特性曲线、系统根轨迹特性曲线、奈奎斯特曲线。

 

2.2稳定性分析

由闭环零极点分布图可知,系统闭环传递函数的极点全部位于s左半平面,因此系统闭环稳定。

2.3性能指标分析

(1)系统稳态误差

=0。

由以上分析可知在加入控制器之前,

=0,符合设计要求。

(2)系统调节时间

<10s。

在加入控制器之前,调节时间

=38s,不满足设计要求,因此需要加入控制器来缩短调节时间,以提高系统响应速度。

(3)系统阶跃响应的超调量σ%<5%。

在加入控制器之前,超调量σ%=0,符合设计要求。

3、控制器设计

由以上分析可知,要减小系统的调节时间,使其快速性能得到改善,同时不影响系统的稳态误差和超调量,因此,可以利用比例控制器来实现这一目的。

P控制方式只是在前向通道上加上比例环节,相当于增大了系统的开环增益,减小了系统的稳态误差,减小了系统的阻尼,从而增大了系统的超调量和振荡性。

P控制方式的系统结构图如下:

P控制器的传递函数为:

加上P控制后的系统开环传递函数为:

取Kp=1至15,步长为1,进行循环测试系统,将不同Kp下的阶跃响应曲线绘制在一张坐标图下:

MATLAB源程序:

%对于P控制的编程实现

num=[1];

den=[12100];

t=0:

0.01:

30;

forKp=1:

1:

15

num1=Kp*num;

G0=tf(num1,den)

G=feedback(G0,1)

y=step(G,t);

plot(t,y)

Ifishold~=1,holdon,end

不同Kp下的阶跃响应曲线

end

grid;

下面通过列表的方式给出在不同Kp值作用下系统的调节时间、稳态误差以及超调量:

Kp

1

2

3

4

5

6

7

8

9

10

Ts

29.56

14.58

9.60

7.13

5.57

4.91

3.48

3.26

3.15

4.730

Ess

0.048

0.002

7.788*e-5

2.725*e-6

8.913*e-8

2.854*e-9

1.239*e-4

0.006

0.028

0.055

Pos

4.782

0.204

0.008

2.725*e-4

8.913*e-6

2.854*e-7

0.012

0.604

2.840

5.541

从上表可以看出,随着Kp值的增大,系统的调节时间、超调量和稳态误差都逐渐减小,但是,当Kp增大到一定值后,系统的调节时间、超调量和稳态误差又都随Kp增大而增大,稳定性下降。

当Kp=6时,调节时间

=4.96s,稳态误差

近似为0,超调量σ%近似为0,满足设计要求。

此时系统的阶跃响应曲线如图所示:

MATLAB源程序:

%对于P控制的编程实现%(Kp=6)

clear

num0=[1];

den=[12100];

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')

综上所述,采用比例控制器时,满足设计要求的最合理的Kp值为6,此时系统的超调量为0,调节时间为4.96秒,稳态误差为0。

由上图可看出加入比例控制器后,系统的调节时间大幅度减小,快速性得到了很大的提高,同时系统的稳定性和准确性并没有受到明显影响。

此时,加入比例控制器后,系统开环传递函数为:

性能比较:

加入P之前加入P之后

MATLAB命令窗口运行结果

ans=

RiseTime:

21.5386

SettlingTime:

38.5480

SettlingMin:

0.9001

SettlingMax:

0.9997

Overshoot:

0

Undershoot:

0

PeakTime:

79.1536

MATLAB命令窗口运行结果

ans=

RiseTime:

2.9072

SettlingTime:

5.7436

SettlingMin:

0.9090

SettlingMax:

0.9996

Overshoot:

0

Undershoot:

0

PeakTime:

11.8768

 

 

三、深入探讨

通过以上讨论,单独使用比例控制器就已经满足各项要求,接下来将深入探讨是否还有其他控制器,能更好的满足各项性能指标。

1、比例-微分控制器(PD)

PD控制方式是在P控制的基础上增加了微分环节,系统的输出量同时受到误差信号及其速率的双重作用。

因而,比例—微分控制是一种早期控制,可在出现误差位置前,提前产生修正作用,从而达到改善系统性能的目的。

PD控制方式的系统结构图如下:

PD控制器的传递函数为:

加上PD控制后的系统开环传递函数为:

保持Kp=6不变,调试取Kd=0.1、0.3、0.5、0.7、0.9时的系统阶跃响应曲线,并与P控制做比较:

MATLAB源程序为:

%编程实现PD控制与P控制的比较

clear

num0=[6];

den=[12100];

t=0:

0.01:

40;

S0=tf(num0,den);

S=feedback(S0,1);

k=step(S,t);

plot(t,k);

grid;

Kp=6;

ifishold~=1,holdon,

end

forKd=0.1:

0.2:

1

num=[Kd*Kp,Kp];

G0=tf(num,den);

G=feedback(G0,1);

y=step(G,t);

plot(t,y);

ifishold~=1,holdon,

end

end

grid;

下面通过列表的方式给出在不同Kd值作用下系统的调节时间、稳态误差以及超调量:

Kd

0.1

0.3

0.5

0.7

0.9

ts

4.95

5.07

5.77

5.93

6.28

ess

4.2549e-6

1.6192e-5

4.4234e-5

9.9189e-5

1.9222e-4

pos

4.2549e-4

0.0016

0.0044

0.0099

0.0192

由实验曲线以及上表可以看出,在比例控制的基础上增加微分控制,对系统的稳态误差影响并不明显,而增大微分常数Kd可以有效的减小系统的超调量和调节时间,在不影响系统的稳态性能的基础上改善了系统的动态性能。

微分控制部分相当于增大了系统的阻尼,所以可以选用较大的开环增益来改善系统的动态性能和系统的稳态精度。

此时系统的阶跃响应曲线如图所示:

MATLAB源程序为:

%对于PD控制的编程实现%(Kd=0.1)

clear

num0=[1];

den=[12100];

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);

G2=feedback(G1,1);

step(G,G2,t)

grid;

gtext('\leftarrowKp=1')

gtext('\leftarrowKp=6,Kd=0.1')

综上所述,当Kp=6,Kd=0.1时,引入比例-微分控制器,同样可以在保证系统稳态误差和超调量不发生明显变化的前提下,改善系统的动态性能,使系统的调节时间减小到10秒以下,从而满足设计要求。

此时系统的开环传递函数为:

MATLAB命令窗口运行结果

ans=

RiseTime:

21.5386

SettlingTime:

38.5480

SettlingMin:

0.9001

SettlingMax:

0.9997

Overshoot:

0

Undershoot:

0

PeakTime:

79.1536

系统性能验证:

MATLAB源程序:

%加入PD控制器之前系统性能

num0=[1];

den=[12100];

G0=tf(num0,den);

G=feedback(G0,1);

stepinfo(G)

MATLAB命令窗口运行结果

ans=

RiseTime:

3.0280

SettlingTime:

6.4927

SettlingMin:

0.9045

SettlingMax:

0.9996

Overshoot:

0

Undershoot:

0

PeakTime:

12.9803

%加入PD控制器之后系统性能

num=[0.66];

den=[12100];

G0=tf(num,den);

G=feedback(G0,1);

stepinfo(G)

 

2、比例-积分控制(PI)

PI控制是在P控制基础上增加了积分环节,提高了系统的型别,从而能减小系统的稳态误差。

因为单纯使用增大Kp的方法来减小稳态误差的同时会使系统的超调量增大,破坏了系统的平稳性,而积分环节的引入可以与P控制合作来消除上述的副作用,PI控制的结构图为:

PI控制器的传递函数为:

加上PI控制后的系统开环传递函数为:

保持Kp=6不变,将PI控制与P控制的系统阶跃响应曲线进行比较:

MATLAB源程序为:

%编程实现PI控制与P控制%的比较

clear

t=0:

0.01:

30;

num0=[6];

den0=[12100];

S0=tf(num0,den0);

S=feedback(S0,1);

k=step(S,t);

plot(t,k);

grid;

Kp=6;

ifishold~=1,holdon,

end

forKi=0.005:

0.5:

1

num=[Kp,Kp*Ki];

den=[121000];

G0=tf(num,den);

G=feedback(G0,1);

[yt]=step(G,t);

[Yk]=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)<1.05*C);

i=i-1;

end

ts=t(i)

ifishold~=1,holdon,

end

end

MATLAB命令窗口中运行后得到结果为:

percentovershoot=

0.7868

ts=

4.6700

percentovershoot=

33.6315

ts=

7.4700

上图的初步印象是PI控制中系统的稳态误差显著减小,但是系统的超调量和平稳性并没有得到改善,相反,增大积分环节中的增益Ki则会使系统的超调量增加,系统的震荡加剧,从而破坏了系统的动态性能。

原因是,PI控制器相当于在系统中增加了一个位于原点的开环极点,同时也增加了一个位于s左半平面的开环零点。

位于原点的开环极点可以提高系统的型别,以消除或减小系统的稳态误差,改善系统的稳态性能;而增加的负实零点则用来减小系统的阻尼程度,缓和PI控制器极点对系统稳定性及动态过程产生的不利影响。

只要积分常数Ki足够小,PI控制器对系统稳定性产生的不利影响可大为减弱。

因此,在控制工程实践中,PI控制器主要用来改善控制系统的稳态性能。

本例中当Ki=0.005时,可满足设计要求,验证了上述结论的正确性。

由以上的分析可知,PI控制器并不适合作为本题的控制器,因此不做过多讨论。

3、比例-微分-积分控制器(PID)

PID控制方式结合了比例积分微分三种控制方式的优点和特性,在更大的程度上改善系统各方面的性能,最大程度的使闭环系统的阶跃响应尽可能地最好(稳、快、准)。

系统的结构图为:

PID控制器的传递函数为:

加上PID控制后的系统开环传递函数为:

由此可见,当利用PID控制器进行串联校正时,除可使系统的型别提高一级外,还将提供两个负实零点。

与PI控制器相比,PID控制器除了同样具有提高系统的稳态性能的优点外,还多提供一个负实零点,从而在提高系统动态性能方面,具有更大的优越性。

因此,在工业过程控制系统中,广泛使用PID控制器。

PID控制器各部分参数的选择,在系统现场调试中最后确定。

通常,应使积分部分发生在系统频率特性的低频段,以提高系统的稳态性能;而使微分部分发生在系统频率特性的中频段,以改善系统的动态性能。

现在要调整的参数有三个:

Kp、Kd、Ki,这样,增益扫描会更加复杂,这是因为比例、微分和积分控制动作之间有更多的相互作用。

一般来说,PID控制中的Ki与PI控制器的设计相同,但是为了满足超调量和调节时间这两个性能指标,比例增益Kp和微分增益Kd应同时调节。

尽管曲线过于密集,但是从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*KdKpKp*Ki];

den=[121000];

G0=tf(num,den);

G=feedback(G0,1);

[yt]=step(G,t);

[Yk]=max(y);

plot(t,y);

C=dcgain(G)

percentovershoot=100*(Y-C)/C

i=length(t);

while(y(i)>0.98*C)&(y(i)<1.02*C);

i=i-1;

end

ts=t(i)

grid;

MATLAB命令窗口中运行后得到结果为:

percentovershoot=

0.3270

ts=

4.6300

综上所述,选择Ki=0.001,Kp=9,Kd=0.2时系统各方面性能都能令人满意,所以可以作为PID控制参数。

此时系统的开环传递函数为:

系统性能验证:

加入PID之前加入PID之后

MATLAB命令窗口运行结果

ans=

RiseTime:

21.5386

SettlingTime:

38.5480

SettlingMin:

0.9001

SettlingMax:

0.9997

Overshoot:

0

Undershoot:

0

PeakTime:

79.1536

MATLAB命令窗口运行结果

ans=

RiseTime:

2.3903

SettlingTime:

4.6403

SettlingMin:

0.9190

SettlingMax:

1.0032

Overshoot:

0.3214

Undershoot:

0

PeakTime:

5.1556

 

四、设计总结

通过以上分析,可以看出,从P控制一直到PID控制,系统的性能越来越好。

同时,可以发现PID控制所起的作用,不是P、I、D三种作用的简单叠加,而是三种作用的相互促进。

增大比例系数Kp一般将加快系统的响应,在有静差的情况下有利于减小静差,但是过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。

所以调试时将比例参数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。

如果系统没有静差或静差已经小到允许范围内,并且对响应曲线已经满意,则只需要比例调节器即可。

如果在比例调节的基础上系统的静差不能满足设计要求,则必须加入积分环节。

增大积分时间I有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。

如果系统的动态过程反复调整还不能得到满意的结果,则可以加入微分环节。

增大微分时间D有利于加快系统的响应速度,使系统超调量减小,稳定性增加,但系统对扰动的抑制能力减弱。

在PID参数进行整定时如果能够有理论的方法确定PID参数当然是最理想的方法,但是在实际的应用中,更多的是通过凑试法来确定PID的参数。

将原系统以及P、PD、PI、PID四种控制方式下的阶跃响应曲线画在同一坐标系下如右图:

五、心得体会

这次实验,认识了自动控制领域最常用的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建模与仿真实例精讲》

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1