




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
物理与电子信息学院论文基于MATLAB的控制系统分析(物理与电子信息学院 10级电子信息工程2班,内蒙古 呼和浩特 010022)指导教师:XX摘要: 运用MATLAB 软件处理和仿真,分析所建立的控制系统模型的可行性。利用MATLAB平台分析系统传递函数的稳定性,利用MATLAB软件得出系统的单位阶跃响应和脉冲响应,分析说明MATLAB在自动控制系统方面的应用。关键词: 控制系统 MATLAB 稳定性 Simulink中图分类号: TN91 文献标识码: B1 绪论 自动控制技术已经广泛应用于工业、农业、交通运输业、航空及航天业等众多产业部门,极大地提高了社会劳动生产率,改善了人们的劳动条件,丰富与提高了人们的生活水平。在当今的社会生活中,自动化装置无所不在,为人类文明进步做出了重要贡献。随着科学技术的发展,控制系统变得越来越复杂,控制理论和系统的分析如果仅靠人工计算已经远远不能满足学习和研究的要求了。MATLAB是高性能的数值计算和可视化软件,他集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。MATLAB的出现给控制系统的分析提供了极大的方便。MATLAB(Matix Laboratory,即“矩阵实验室”)是美国MathWorks公司开发的用于概念设计、算法开发、建模仿真、实时实现的理想的集成环境。从1984年MATLAB诞生到现在,它已经集成了许多工具箱,例如控制系统工具箱(Control System Toolbox)、Simulink工具箱等。为此,MATLAB软件在控制工程领域已获得了广泛的应用,使得MATLAB成为控制系统仿真分析的必要工具。2 系统的稳定性分析 稳定是控制系统的重要性能,也是系统能够正常运行的首要条件。在分析控制系统时,首先遇到的问题就是系统的稳定性。对线性系统来说,如果一个系统的所有几点都位于左半s平面,则该系统是稳定的。对于离散系统来说,如果一个系统的全部极点都在单位圆内,则该系统可以被认为是稳定的。由此可见,线性系统的稳定性完全取决于系统的极点在根平面上的位置。判断一个线性系统稳定性的一种最有效的方法是直接求出系统所用的极点,然后根据极点的分布情况来确定系统的稳定性。下面举一个具体的例子进行说明:【例一】 已知闭环系统的传递函数为 G(s)=判断系统的稳定性,并给出不稳定极点可以采用下面的MATLAB程序%ex1.mnum=3 2 1 4 2;den=3 5 1 2 2 1;z,p=tf2zp(num,den);ii=find(real(p)0);n1=length(ii);if(n10) disp(The Unstable Poles are:); disp(p(ii);else disp(System is Stable);end执行结果显示:The Unstable Poles are: 0.4103+0.6801i 0.4103-0.6801i 在增加一下两条语句,则可画出如图所示的零极点图pzmap(num,den);title(Zero-Pole Map)这是一个高阶系统,如果用人工计算的话就是十分麻烦的了,而且容易出现很多错误,还会影响控制系统的开发时间。而运用MATLAB软件就可以用几句简单易懂的程序语句就可以得到简单直观的系统稳定性的结果,这无疑是给控制系统的分析与研究带来了极大地方便,这样正是MATLAB软件在控制系统的分析领域应用得越来越广泛的原因之一。除了上述的利用极点判断系统的稳定性,我们还可以运用MATLAB的其它指令语句,利用特征值判断系统的稳定性;在高阶系统或者特征多项式中,当某些系数不是数值时,利用求闭环极点或特征值的方法来判断系统的稳定性是比较困难的。在这种情况下利用李雅普诺夫第二法来判断系统的稳定性比较有效。尤其在系统含有非线性环节时更是如此。运用MATLAB软件进行求解则省去了复杂的运算,可以直接地得到结果。3 运用MATLAB软件分析控制系统 对于一个控制系统而言仅仅关注它的稳定性是不够的,我们还要对自动控制系统做全面的分析以满足生产实际的要求,例如系统的动态性能、稳态误差等等。在控制工程中,几乎所用的控制系统都是高阶系统,即用高阶微分方程描述的系统。对于不能用一、二阶系统近似的高阶系统来说,其动态性能指标的确定是比较复杂的,为了减少计算量和工作强度,工程上经常直接应用MATLAB软件进行高阶系统的分析。【例二】 假设某一功能下系统的数学模型的闭环传递函数为:(s)=由于(s)=,其开环函数为G(s)=(1) 系统的单位阶跃响应和脉冲响应在运用MATLAB软件分析系统的单位脉冲响应和单位阶跃响应的时候,我们可以调用MATLAB软件的impulse和step指令,其指令格式为:Y=impulse(sys,t)当不带输出变量y时,impulse命令可以直接绘制脉冲响应曲线;t用于设定仿真时间,可省略。Y=step(sys,t)当不带出输出变量y时,step命令可以直接绘制出阶跃响应曲线;t用于设定仿真时间,可以省略。下面运用上面介绍的两条指令语句对上述系统进行仿真MATLAB 程序为:clear ;close all ;num = 3 ;den = 1 6 11 6 ;subplot (2 ,1 ,1) ,step (num ,den) ;subplot (2 ,1 ,2) ,impulse (num ,den) ;系统的单位阶跃响应和脉冲响应如图所示: 单位脉冲响应 单位阶跃响应(2) 系统的稳定性分析 系统的稳定性分析有多种方法,这里在介绍一种运用MATLAB软件绘制系统的Bode图和Nyquist图判断系统的稳定性的方法。调用MATLAB的程序为:clear ;close all ;num = 3 ;den = 1 6 11 6 ;figure (1) ,bode (num ,den) ;margin (num ,den) ;figure (2) ,nyquist (num ,den) ;该程序可以的到系统的Bode图和Nyquist图,如下图所示 系统的Bode图 系统的Nyquist图由系统的Bode 图和Nyquist 图可以判断,该系统是稳定的。(3) 运用Simulink 进行系统仿真 Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。它支持连续、离散及两者混合的线性和非线性系统,同时它也支持具有不同部分拥有不同采样率的多种采样速率的系统仿真。Simulink为用户提供了一个图形化的用户界面,对于用方框图表示的系统,通过图形界面,利用鼠标点击和拖拉方式,建立系统模型就像用铅笔在在纸上绘制系统的方框图一样简单,它与用微分方程和差分方程建模的传统仿真软件包相比,具有更直观、更方便、更灵活的优点,它不但实现了可视化的动态仿真,也实现了与MATLAB、C或FORTRAN语言,甚至和硬件之间的数据传送,大大的扩展了它的功能。在MATLAB的主界面下点击Simulink的快捷图标,打开系统模型库,在建立的M-file文中直接加入所需要的模块,该系统的系统仿真模型如图所示。(注:其中den(s)=)通过上述系统的模拟仿真,我们得到了如下的系统阶跃响应的仿真图4 结论 通过本文的论述和实例分析可见, 利用MATLAB 分析控制系统稳定性具有编程简单、操作方便、处理速度快, 分析结果准确可靠等优点。由此可见,MATLAB 为工程技术人员分析、设计较优的控制系统提供了强有力的工具。5 学习心得在刚开始学习MATLAB这门课程的时候并没有得到我的重视,因为它只是一个工具性的软件,学习好自己的专业课程才是最重要的。直到MATLAB和自动控制原理两门课程都进行到重要的部分时候,我发现MATLAB现在就可以应用到我们的专业课自动控制原理上,随着学习的深入,控制系统的分析也变得越来越复杂,用传统方法的计算,时间周期长而且准确率不高。但是在学习完MATLAB软件以后发现,其实我们可以运用现在学习的MATLAB的知识可以分方便的解决自动控制原理方面的问题。MATLAB的软件编程语言非常简单易懂,更重要的是利用MATLAB软件的Simulink软件包可以非常方便的得到各种自动控制系统的响应图像,要比我们在实验室的到相应的图像要方便简单的多。在更深入的学习了MATLAB软件的使用以后,对它的强大功能有了更加深刻的认识,我相信在今后的学习和工作当中会有更多的地方运用到这一款软件,给我们的学习和工作带来更多的方便与快捷。6 MATLAB弹奏 义勇军进行曲clc,clear allfs = 44100; dt = 1/fs; f0 = 320; T16 = 0.125;t16 = 0:dt:T16; temp m = size(t16);t2 = linspace(0,8*T16,8*m); temp i = size(t2);t4 = linspace(0,4*T16,4*m); temp j = size(t4);t8 = linspace(0,2*T16,2*m); temp k = size(t8);t12 = linspace(0,4/3*T16,4/3*m); temp l = size(t12);% Modification functionsmod2 = sin(pi*t2/t2(end);mod4 = sin(pi*t4/t4(end);mod8 = sin(pi*t8/t8(end);mod12 = sin(pi*t12/t12(end);mod16 = sin(pi*t16/t16(end);ScaleTable = 2/3 3/4 5/6 15/16 .1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 .2 9/4 5/2 8/3 3 10/3 15/4 4 .1/2 9/16 5/8;do0g = mod2.*cos(2*pi*ScaleTable(21)*f0*t2);re0g = mod2.*cos(2*pi*ScaleTable(22)*f0*t2);mi0g = mod2.*cos(2*pi*ScaleTable(23)*f0*t2);fa0g = mod2.*cos(2*pi*ScaleTable(1)*f0*t2);so0g = mod2.*cos(2*pi*ScaleTable(2)*f0*t2);la0g = mod2.*cos(2*pi*ScaleTable(3)*f0*t2);ti0g = mod2.*cos(2*pi*ScaleTable(4)*f0*t2);do1g = mod2.*cos(2*pi*ScaleTable(5)*f0*t2);re1g = mod2.*cos(2*pi*ScaleTable(6)*f0*t2);mi1g = mod2.*cos(2*pi*ScaleTable(7)*f0*t2);fa1g = mod2.*cos(2*pi*ScaleTable(8)*f0*t2);so1g = mod2.*cos(2*pi*ScaleTable(9)*f0*t2);la1g = mod2.*cos(2*pi*ScaleTable(10)*f0*t2);% tb1g = mod2.*cos(2*pi*ScaleTable(11)*f0*t2);ti1g = mod2.*cos(2*pi*ScaleTable(12)*f0*t2);do2g = mod2.*cos(2*pi*ScaleTable(13)*f0*t2);re2g = mod2.*cos(2*pi*ScaleTable(14)*f0*t2);mi2g = mod2.*cos(2*pi*ScaleTable(15)*f0*t2);fa2g = mod2.*cos(2*pi*ScaleTable(16)*f0*t2);so2g = mod2.*cos(2*pi*ScaleTable(17)*f0*t2);la2g = mod2.*cos(2*pi*ScaleTable(18)*f0*t2);ti2g = mod2.*cos(2*pi*ScaleTable(19)*f0*t2);do3g = mod2.*cos(2*pi*ScaleTable(20)*f0*t2);I = zeros(1,i);do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4);re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4);mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4);fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4);so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4);la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4);ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4);do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4);re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4);mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4);fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4);so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4);la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4);% tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4);ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4);do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4);re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4);mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4);fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4);so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4);la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4);ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4);do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4);J = zeros(1,j);do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8);re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8);mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8);fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8);so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8);la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8);ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8);do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8);re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8);mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8);fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8);so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8);la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8);% tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8);ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8);do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8);re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8);mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8);fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8);so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8);la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8);ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8);do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8);K = zeros(1,k);do0d = mod12.*cos(2*pi*ScaleTable(21)*f0*t12);re0d = mod12.*cos(2*pi*ScaleTable(22)*f0*t12);mi0d = mod12.*cos(2*pi*ScaleTable(23)*f0*t12);fa0d = mod12.*cos(2*pi*ScaleTable(1)*f0*t12);so0d = mod12.*cos(2*pi*ScaleTable(2)*f0*t12);la0d = mod12.*cos(2*pi*ScaleTable(3)*f0*t12);ti0d = mod12.*cos(2*pi*ScaleTable(4)*f0*t12);do1d = mod12.*cos(2*pi*ScaleTable(5)*f0*t12);re1d = mod12.*cos(2*pi*ScaleTable(6)*f0*t12);mi1d = mod12.*cos(2*pi*ScaleTable(7)*f0*t12);fa1d = mod12.*cos(2*pi*ScaleTable(8)*f0*t12);so1d = mod12.*cos(2*pi*ScaleTable(9)*f0*t12);la1d = mod12.*cos(2*pi*ScaleTable(10)*f0*t12);% tb1d = mod12.*cos(2*pi*ScaleTable(11)*f0*t12);ti1d = mod12.*cos(2*pi*ScaleTable(12)*f0*t12);do2d = mod12.*cos(2*pi*ScaleTable(13)*f0*t12);re2d = mod12.*cos(2*pi*ScaleTable(14)*f0*t12);mi2d = mod12.*cos(2*pi*ScaleTable(15)*f0*t12);fa2d = mod12.*cos(2*pi*ScaleTable(16)*f0*t12);so2d = mod12.*cos(2*pi*ScaleTable(17)*f0*t12);la2d = mod12.*cos(2*pi*ScaleTable(18)*f0*t12);ti2d = mod12.*cos(2*pi*ScaleTable(19)*f0*t12);do3d = mod12.*cos(2*pi*ScaleTable(20)*f0*t12);L = zeros(1,l);do0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16);re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16);mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16);fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16);so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16);la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16);ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16);do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16);re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16);mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16);fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16);so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16);la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16);% tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16);ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16);do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16);re2s = mod16.*cos
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年加油站人员面试题及答案
- 2025云南机场集团有限责任公司航行管制员公开招聘笔试历年参考题库及答案
- 汽车驾驶维修考工试题及答案
- 外加工合同4篇
- 高空施工终身劳动合同(3篇)
- 安徽二建市政考试题真题及答案
- 2025国考试题及答案
- 现代农业企业设立与农业科技合作合同
- 钢铁企业职工工伤事故赔偿及保险协议
- 水工专业笔试试题及答案
- 制药企业GMP生产质量管理培训资料
- 4.1.2+无理数指数幂及其运算性质课件-2025-2026学年高一上学期数学人教A版必修第一册
- 工程用工实名管理方案(3篇)
- 2025兴业银行福建总行国际业务部交易银行部招聘若干人备考考试题库附答案解析
- 1.3 几和第几(课件)数学苏教版一年级上册(新教材)
- 食品卫生消防安全应急预案
- 1.3加与减①(课件)数学沪教版二年级上册(新教材)
- 2025至2030中国HPV相关疾病行业项目调研及市场前景预测评估报告
- 无领导小组讨论的经典面试题目及答案解析
- 许昌襄城县特招医学院校毕业生招聘笔试真题2024
- 永辉超市快消培训
评论
0/150
提交评论