控制系统建模分析设计和仿真.docx
《控制系统建模分析设计和仿真.docx》由会员分享,可在线阅读,更多相关《控制系统建模分析设计和仿真.docx(12页珍藏版)》请在冰豆网上搜索。
![控制系统建模分析设计和仿真.docx](https://file1.bdocx.com/fileroot1/2022-11/29/29d0371d-08e1-4ab5-8b2f-c0262ae19fdd/29d0371d-08e1-4ab5-8b2f-c0262ae19fdd1.gif)
控制系统建模分析设计和仿真
控制系统建模、分析、设计和仿真第5组
自动化专业学生韩小康
指导老师周景雷
摘要
本次课程实践为设计两个控制器分别为最小拍无波纹和最小拍有波纹控制器。
通过这次实践可以进一步对所学的《计算机控制技术》有进一步的了解,并对Matlab软件的操作有一定程度的熟悉,为以后的工作或研究作基础。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
关键字:
Matlab;计算机控制系统;建模;仿真
Controlsystemmodeling,analysis,designandsimulationofgroup5
StudentmajoringinHanXiaokang
TutorZhouJinglei
Abstract:
Thecoursepracticetodesigntwocontrollersrespectivelyminimumcorrugatedcontrollerwithoutripplesandminimumpat.Throughthispracticecanbefurtherlearnedtohavefurtherunderstandingofcomputercontroltechnology,andacertaindegreeoffamiliartotheoperationoftheMatlabsoftware,thefoundationforlaterworkorstudy.MATLABisshortforMatrixlab(MatrixLaboratory),isproducedbytheAmericanMathWorkscompanybusinessmathematicssoftware,usedforalgorithmdevelopment,datavisualization,dataanalysisandnumericalcalculationofseniortechnicalcomputinglanguageandinteractiveenvironment,mainlyincludingtwomostofMATLABandSimulink.
Keywords:
Matlab;Thecomputercontrolsystem;Modeling;Thesimulation
1课程设计的性质、目的
本课程设计是信息学院自动化专业开设的计算机仿真专业选修课的实践课。
通过本课程的学习实践,要求学生掌握有关控制系统计算机仿真的基本概念、工具、原理、方法和步骤,培养和增强学生运用《计算机仿真》课程中所学知识,以MATLAB为工具对控制系统进行分析、设计和仿真的技能,加深理解所学知识,牢固掌握所学知识,提高运用所学知识解决实际问题的能力。
2MATLAB软件介绍
1、基本功能
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
2、基本应用
MATLAB产品族可以用来进行以下各种工作:
(1)数值分析
(2)数值和符号计算
(3)工程与科学绘图
(4)控制系统的设计与仿真
(5)数字图像处理技术
(6)数字信号处理技术
(7)通讯系统设计与仿真
(8)财务与金融工程
(9)管理与调度优化计算(运筹学)
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
3课程设计的内容
1、求被控对象传递函数G(s)的MATLAB描述。
输入:
num=conv([968],conv([12],[19]));
den=conv([100],conv([11],conv([14],[18])));
T=0.05;
sys=tf(num,den)
显示结果:
Transferfunction:
968s^2+10648s+17424
------------------------------
s^5+13s^4+44s^3+32s^2
2、求被控对象脉冲传递函数G(z)。
输入:
Gz=c2d(Gs,0.02,'zoh')
显示结果:
ransferfunction:
0.001132z^4+0.00226z^3-0.006126z^2+0.001831z+0.0009176
------------------------------------------------------------------
z^5-4.735z^4+8.961z^3-8.473z^2+4.003z-0.7558
Samplingtime:
0.02
3、转换G(z)为零极点增益模型并按z-1形式排列。
输入:
[z,p,k]=zpkdata(Gz)
Gz=zpk(z,p,k,T,'variable','z^-1')
显示结果:
z=[4x1double]
p=[5x1double]
k=0.0011
Zero/pole/gain:
0.001132z^-1(1+3.605z^-1)(1-0.9802z^-1)(1-0.8869z^-1)(1+0.2586z^-1)
------------------------------------------------------------------------
(1-z^-1)^2(1-0.9608z^-1)(1-0.9048z^-1)(1-0.8694z^-1)
Samplingtime:
0.02
4、确定误差脉冲传递函数Ge(z)形式,满足单位加速度信号输入时闭环稳态误差为零和实际闭环系统稳
定的要求。
symsza0a1a2b0b1
Gez=(1-z^-1)^3*(b0+b1*z^-1)
5、确定闭环脉冲传递函数Gc(z)形式,满足控制器Dy(z)可实现、最少拍和实际闭环系统稳定的要求。
输入:
Gcz=z^-1*(1+3.605*z^-1)*(a0+a1*z^-1+a2*z^-2)
结果:
Gcz=1/z*(1+721/200/z)*(a0+a1/z+a2/z^2)
6、根据4、5、列写方程组,求解Gc(z)和Ge(z)中的待定系数并最终求解Gc(z)和Ge(z)。
7、求针对单位加速度信号输入的最少拍有波纹控制器Dy(z)并说明Dy(z)的可实现性。
8、用程序仿真方法分析加速度信号输入时闭环系统动态性能和稳态性能。
输入:
f1=subs(Gez,z,1)
f2=subs(diff(Gez,1),z,1)
f3=subs(diff(Gez,2),z,1)
[b0j,b1j]=solve(f1,f2,f3)
Gcz=z^-1*(1+3.605*z^-1)*(a0+a1*z^-1+a2*z^-2)
f1=subs(Gcz,z,1)-1
f2=subs(diff(Gcz,1),z,1)
f3=subs(diff(Gcz,2),z,1)
[a0j,a1j,a2j]=solve(f1,f2,f3)
结果:
f1=921/200*a0+921/200*a1+921/200*a2-1
f2=-821/100*a0-2563/200*a1-871/50*a2
f3=2363/100*a0+2463/50*a1+841/10*a2
a0j=878529200/781229961
a1j=-1115305600/781229961
a2j=406424600/781229961
Gcz=1/z*(1+721/200/z)*(878529200/781229961-1115305600/781229961/z+406424600/781229961/z^2)
Gez=(1-1/z)^3*(1-b0/z)
f4=0
f5=-406424600/374805361-156245992200/270234665281*b0
b0j=-1465160683/781229961
所以:
Gez=(1-1/z)^3*(1+1465160683/781229961/z)
Gcz=1/z*(1+721/200/z)*(878529200/781229961-1115305600/781229961/z+406424600/781229961/z^2)
Dyz=4611686018427387904/5220428572859803*(878529200/781229961-1115305600/781229961/z+406424600/781229961/z^2)/(1-4901/5000/z)/(1-8869/10000/z)/(1+1293/5000/z)/(1-1/z)*(1-1201/1250/z)*(1-1131/1250/z)*(1-4347/5000/z)/(1+1465160683/781229961/z)
9、用图形仿真方法(Simulink)分析单位加速度信号输入时闭环系统动态性能和稳态性能。
输入:
[N,D]=numden(simplify(Gcz));
numc=sym2poly(N)
denc=sym2poly(D)
[N,D]=numden(simplify(Guz));
numu=sym2poly(N)
denu=sym2poly(D)
t=0:
0.02:
1
u=t.*t/2
holdon
dlsim(numc,denc,u)
dlsim(numu,denu,u)
holdoff
[N,D]=numden(simplify(Dyz));
numdy=sym2poly(N)
dendy=sym2poly(D)
有波纹最小拍程序仿真截图:
有波纹最小拍图形仿真截图:
闭环系统输出Gcz图形仿真结果:
控制器输出U(z)图形仿真图:
10、确定误差脉冲传递函数Ge(z)形式,满足单位速度信号输入时闭环稳态误差为零和实际闭环系统稳定的要求。
Gez=(1-1/z)^2*(e0+e1/z+e2/z^2+e3/z^3+e4/z^4)
11、确定闭环脉冲传递函数Gc(z)形式,满足控制器Dw(z)可实现、无波纹、最少拍和实际闭环系统稳定的要求。
Gez=(1-z^-1)^2*(b0+b1*z^-1+b2*z^-2+b3*z^-3+b4*z^-4)
12、根据10、11、列写方程组,求解Gc(z)和Ge(z)中的待定系数并最终求解Gc(z)和Ge(z)。
输入:
symsza0a1b0b1b2b3b4
Gez=(1-z^-1)^2*(b0+b1*z^-1+b2*z^-2+b3*z^-3+b4*z^-4)f1=subs(Gcz,z,1)-1
f2=subs(diff(Gcz,1),z,1)
[a0ja1j]=solve(f1,f2)
A=double([a0ja1j])
Gcz=subs(Gcz,[a0a1],A)
Gez=(1-z^-1)^2*(b0+b1*z^-1+b2*z^-2+b3*z^-3+b4*z^-4)
f3=subs(Gez,z,inf)-1
f4=subs(Gez,z,-3.427)-1
f5=subs(Gez,z,0.9512)-1
f6=subs(Gez,z,0.7408)-1
f7=subs(Gez,z,-0.245)-1
[b0jb1jb2jb3jb4j]=solve(f3,f4,f5,f6,f7)
B=double([b0jb1jb2jb3jb4j])
Gez=subs(Gez,[b0b1b2b3b4],B)
结果:
Gez=(1-1/z)^2*(1+4607117145708427/1099511627776/z+857326361880357/68719476736/z^2-5728981633685343/549755813888/z^3-7601370565683995/2199023255552/z^4)
Gcz=5220428572859803/4611686018427387904/z*(1+721/200/z)*(1-4901/5000/z)*(1-8869/10000/z)*(1+1293/5000/z)/(1-1/z)^2/(1-1201/1250/z)/(1-1131/1250/z)/(1-4347/5000/z)
13、求针对单位速度信号输入的最少拍无波纹控制器Dw(z)并说明Dw(z)的可实现性。
Gz=0.016808*z^-1*(1+3.427*z^-1)*(1-0.9512*z^-1)*(1-0.7408*z^-1)*(1+0.245*z^-1)/(1-z^-1)^2/(1-0.9048*z^-1)/(1-0.7788*z^-1)/(1-0.7047*z^-1)
Guz=Gcz/Gz
Dwz=Gcz/Gz/Gez
Gcz=4844576162357971/288230376151711744/z*(1+3427/1000/z)*(1-1189/1250/z)*(1-463/625/z)*(1+49/200/z)*(-4545899597750647/274877906944+1195119780778763/68719476736/z)
Gez=(1-1/z)^2*(1+615657890023047/2199023255552/z+1796608902133647/2199023255552/z^2-71813391245365/137438953472/z^3-6084857878461669/35184372088832/z^4)
Dwz=(-4545899597750647/274877906944+1195119780778763/68719476736/z)*(1-1131/1250/z)*(1-1947/2500/z)*(1-7047/10000/z)/(1+615657890023047/2199023255552/z+1796608902133647/2199023255552/z^2-71813391245365/137438953472/z^3-6084857878461669/35184372088832/z^4)
14、用程序仿真方法分析单位速度信号输入时闭环系统动态性能和稳态性能。
15、用图形仿真方法(Simulink)分析单位速度信号输入时闭环系统动态性能和稳态性能。
[N,D]=numden(simplify(Gcz))
numd=sym2poly(N)
dend=sym2poly(D)
[N,D]=numden(simplify(Guz))
numi=sym2poly(N)
deni=sym2poly(D)
t=0:
0.2:
10
u=t
holdon
dlsim(numd,dend,u)
dlsim(numi,deni,u)
holdoff
[N,D]=numden(simplify(Dwz))
numt=sym2poly(N)
dent=sym2poly(D)
无波纹最小拍程序仿真截图:
无波纹最小拍图形仿真截图:
无波纹最小拍闭环系统输出Gcz图形仿真结果:
无波纹最小拍闭环系统数字控制器输出Guz图形仿真结果:
16、根据8、9、14、15、的分析,说明有波纹和无波纹的差别和物理意义。
有波纹和无波纹的差别在于有波纹控制器经过一定的采样周期之后,其输入跟踪输出,但其数字控制器的曲线会出现小的波动,该波动为波纹,而无波纹数字控制器D(z)的输出曲线经过一定采样周期之后会为一常数,不会产生波纹。
五、参考文献
1.肖伟,刘忠.MATLAB程序设计与应用[M].清华大学出版社,2005
2.周润景.基于MATLAB与fuzzyTECH的模糊与神经网络设计[M].电子工业出版社,2010
3.陈超.MATLAB应用实例精讲-数学数值计算与统计分析篇[M].电子工业出版社,2010
4.田敏.案例解说MATLAB典型控制应用[M].电子工业出版社,2009
5.刘刚.MATLAB数字图像处理[M].机械工业出版社,2010