《控制系统仿真与CAD》
——控制系统建模、分析、设计及仿真
一、摘要
本结课论文为设计两个控制器,分别为最小拍无波纹和最小拍有波纹控制器。通过这次实践可以进一步对所学的《控制系统仿真与CAD》有进一步的了解,并对Matlab软件的操作有一定程度的熟悉,为以后的学习或工作做基础。MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
关键字:Matlab;控制系统仿真与CAD;建模;仿真
二、课程设计的内容
1、求被控对象传递函数G(s)的MATLAB描述。
输入:
num=conv([968],conv([1 2],[1 9]));
den=conv([1 0 0],conv([1 1],conv([1 4],[1 8])));
T=0.05;
sys=tf(num,den)
显示结果:
Transfer function:
968 s^2 + 10648 s + 17424
------------------------------
s^5 + 13 s^4 + 44 s^3 + 32 s^2
2、求被控对象脉冲传递函数G(z)。
输入:
Gz=c2d(Gs,0.02,'zoh')
显示结果:
ransfer function:
0.001132 z^4 + 0.00226 z^3 - 0.006126 z^2 + 0.001831 z + 0.0009176
------------------------------------------------------------------
z^5 - 4.735 z^4 + 8.961 z^3 - 8.473 z^2 + 4.003 z - 0.7558
Sampling time: 0.02
3、转换G(z)为零极点增益模型并按z-1形式排列。
输入:
[z,p,k]=zpkdata(Gz)
Gz=zpk(z,p,k,T,'variable','z^-1')
显示结果:
z = [4x1 double]
p = [5x1 double]
k =0.0011
Zero/pole/gain:
0.001132 z^-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)
Sampling time: 0.02
4、确定误差脉冲传递函数Ge(z)形式,满足单位加速度信号输入时闭环稳态误差为零和实际闭环系统稳
定的要求。
syms z a0 a1 a2 b0 b1
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
hold on
dlsim(numc,denc,u)
dlsim(numu,denu,u)
hold off
[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) 。
输入:
syms z a0 a1 b0 b1 b2 b3 b4
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)
[a0j a1j]=solve(f1,f2)
A=double([a0j a1j])
Gcz=subs(Gcz,[a0 a1],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
[b0j b1j b2j b3j b4j]=solve(f3,f4,f5,f6,f7)
B=double([b0j b1j b2j b3j b4j])
Gez=subs(Gez,[b0 b1 b2 b3 b4],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
hold on
dlsim(numd,dend,u)
dlsim(numi,deni,u)
hold off
[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
四、心得体会
通过学习薛教授的《控制系统仿真与CAD》这门课程,我学到了很多东西,最直接的就是将控制理论和MATLAB软件联系起来,用计算机来仿真在《自动控制原理》中所学的内容,即利用MATLAB软件来对自动控制系统进行仿真,以验证所学的知识并且得到比较直观的结论。
MATLAB不仅仅是一门编程语言,还是一个集成的软件平台,它包含以下几个主要部分:MATLAB语言、集成工作环境、MATLAB图形系统、数学函数库、交互式仿真环境Simulink、编译器、应用程序接口API、工具箱、Notebook工具。MATLAB它具有丰富的可用于控制系统分析和设计的函数,MATLAB的控制系统工具箱提供对线性系统分析、
设计和建模的各种算法;MATLAB的仿真工具箱(Simulink)提供了交互式操作的动态系统建模、仿真、分析集成环境。通过在传递函数的建立、绘制响应的曲线等方面谈了我学习的经历,以及整个对控制系统仿真的整体过程。
而在控制系统CAD中我们较多的是使用MATLAB数学函数库中的函数来对控制系统进行仿真与处理。另外,也利用MATLAB交互式仿真环境Simulink来构建系统的结构框图,这样更直接的应用于不知道系统传递函数的情况下来得到系统的仿真结果,从而省去了计算传递函数的复杂计算。在学习过程中还有利用Simulink工具箱绘出系统的结构框图,再调用这个框图来产生出传递函数再进行仿真计算。这样的话可以更方便的对控制系统进行仿真与设计,而不用去通过复杂的方式去求去传递函数,然后再去计算响应,绘制响应曲线。
虽然学习结束了,但对控制系统的仿真仍要伴随在我以后的学习和工作中。今后,对控制系统的仿真与设计也将有更加实际的内容,继续学习,不断深入,努力将MATLAB这个软件更好的应用于对控制系统的仿真和设计上。
因篇幅问题不能全部显示,请点此查看更多更全内容