MATLAB入门与控制系统仿真.docx
- 文档编号:3132099
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:21
- 大小:47.01KB
MATLAB入门与控制系统仿真.docx
《MATLAB入门与控制系统仿真.docx》由会员分享,可在线阅读,更多相关《MATLAB入门与控制系统仿真.docx(21页珍藏版)》请在冰点文库上搜索。
MATLAB入门与控制系统仿真
济南铁道职业技术学院
毕业设计(论文)
题目:
MATLAB入门与控制系统
仿真
系别:
电气工程系
专业:
应用电子技术
班级:
应电0631
学生姓名:
孔青
指导老师:
武静悦
班级
应电0631
学生姓名
孔青
指导老师
武静悦
设计(论文)题目
MATLAB入门与控制系统仿真
主要
研究
内容
使学生对MATLAB有一个初步的认识和掌握,学会在MATLAB环境下进行指令操作、实现计算和结果图形可视化、编写M文件;通过典型样例,理解、掌握MATLAB在系统仿真、分析与设计中的应用,独立完成使用MATLAB对系统进行时域分析、根轨迹分析的方案设计,编写相关程序。
主要技
术指标
或研究
目标
(1)初步掌握MATLAB的使用。
(2)设计一个对自控系统进行时域分析的方案,要求能够计算二阶系统的各项性能指标,判断n(n>2)阶系统的稳定性。
(3)设计一个对自控系统进行根轨迹分析的方案,要求绘制出根轨迹图像。
(4)独立编写所需的所有MATLAB程序。
(5)分析结果可视化,输出各项图形。
基本
要求
(1)明确设计任务。
(2)根据任务要求,确定设计步骤。
(3)查阅有关文献资料。
(4)确定方案。
(5)编写相关程序并上机验证。
(6)方案设计,3000字左右。
主要
参考
文献
(1)《自动控制原理的MATLAB实现》黄忠霖编著国防工业出版社
(2)《MATLAB自动控制原理习题精解》刘坤主编国防工业出版社
(3)《自动控制原理》孙虎章主编中央广播电视大学出版社
(4)《基于MATLAB的控制系统计算机仿真》
济南铁道职业技术学院毕业设计(论文)任务书
摘要
MATLAB的产生是与数学计算紧密联系在一起的。
MATLAB是一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,经过十几年的发展,它已经成为一个国际公认的最优秀的科技应用软件。
由于它具有强大的计算和绘图功能、大量稳定可靠的算法库和简洁高效的编程语言,已成为数学计算工具方面事实上的标准,而且其强大的扩展功能更是为各个工程领域提供了分析和设计的基础。
计算仿真软件MATLAB与“自动控制原理”两者结合起来,使枯燥乏味的原理变成直观的图像形式,理解就比较容易。
此论文就是通过MATLAB对时域分析及根轨迹分析进行系统仿真。
关键词:
MATLAB自动控制时域分析根轨迹分析系统仿真
目录
1引言5
2自动控制系统及MATLAB基础
2-1自动控制系统的分析方法.......................6
2-1-1时域分析.....................................
2-1-2频域分析.....................................
2-1-3根轨迹分析...................................
2-2MATLAB程序设计6
2-3MATLAB仿真的重要性9
3M文件基础知识
3-1M文件的基本特点及组成............................
3-2脚本式M文件.....................................
3-3函数式M文件.....................................
4时域分析的MATLAB仿真11
4-1典型输入信号11
4-2系统稳定性12
4-3MATLAB函数指令方式下的时域响应仿真12
4-3-1时域响应MATLAB仿真的函数指令与格式12
4-3-2时域分析设计方案14
5根轨迹分析的MATLAB仿真16
5-3根轨迹的性能7
5-4MATLAB函数指令方式下的根轨迹仿真17
5-4-1根轨迹分析的MATLAB实现函数指令与格式17
5-4-2根轨迹分析设计方案18
总结20
致谢21
参考文献22
附:
MATLAB中与自动控制有关的指令集及相关含义........
1引言
MATLAB全称MatrixLaboratory即“矩阵实验室”是MathWorks公司于1984年推向市场的,是专门用于矩阵运算的软件,它已经成为国际上最为流行的科学与工程计算的软件工具之一,现在的MATLAB占据了数值型软件市场的主导地位。
现在的MATLAB已经不仅仅是一个“矩阵实验室”了,它已经成为了一种具有广泛应用前景的、全新的计算机高级编程语言了,可以说它是“第四代”计算机语言,可与Fortran和C语言混合编程,进一步扩展了其功能。
MATLAB具有极强的适应能力,它用简洁的代码和函数库为编程研究人员提供了直观简单的程序开发环境。
且功能十分强大,仅基本的MATLAB产品就有1000个以上的内部函数可供调用,比其他任何工具提供的函数都要多。
MATLAB以矩阵和数组为核心,已成为应用代数、数理统计、自动控制理论、数字信号处理、时间序列分析、动态系统仿真等课程的基本教学工具。
MATLAB在以下的领域里解决各种问题是一个十分有效的工具:
●工业研究与开发
●数学教学,特别是线性代数。
所有基本概念都能涉及
●在数值分析和科学计算方面的教学与研究。
能够详细地研究和比较各种算法
●在诸如电子学、控制理论和物理学等工程方面的教学与研究
●在诸如经济学、化学和生物学等有计算问题的所有其他领域中的教学与研究
●在图形处理、器材控制、模糊逻辑、动态仿真上的应用
MATLAB的主要特点:
(1)功能强大,适用范围广。
(2)可由多种操作系统支持。
(3)界面友好,用户使用方便。
(4)与其他软件和语言具有良好的对接性。
(5)语句简单,内部函数丰富。
(6)强大的图形和符号功能。
(7)可以自动选择算法。
(8)MATLAB功能齐备的自动控制软件工具包。
2自动控制系统的分析及MATLAB基础
2-1自动控制系统的分析方法
2-1-1时域分析
时域分析法是根据系统微分方程,用拉氏变换直接解出动态过程。
并依据过程曲线及表达式分析系统性能,如稳、快、准。
对于一阶、二阶的控制系统时域分析可分析其所有的性能。
主要性能指标有:
(1)峰值时间tp:
越小系统快速性越好
(2)超调量σ﹪:
越小系统平稳性越好
(3)调节时间ts:
越小系统快速性越好
(4)稳态误差ess:
越小系统准确度、精度越好,=0时最好
判断系统稳定性的方法有:
(1)数学条件的稳定性判断:
系统所有特征根的实部为负(或所有特征根位于根平面虚轴之左),即Resi〈0(i=1,2,……,n),Resi>0系统不稳定,Resi=0系统临界稳定。
(2)利用代数稳定判据:
该判据必须满足以下两个条件
1>.特征多项式中各项系数大于0,即ai>0(i=0,1,2,……,n)2>.在由特征多项式各系数够造的n阶行列式Dn中,各奇数子行列式或各偶数子行列式大于零,即:
D1>0,D3>0,D5>0……或D2>0,D4>0,D6>0……
时域分析法的应用范围:
一、二阶系统的所有性能均可、高阶系统(三阶以上)的准确性,稳定性。
但无法分析高阶系统的平稳性。
2-1-2频域分析
频域性能指标:
(1)峰值Am:
与系统平稳性有关,Am越大,平稳性越差。
一般要求Am<1.5A(0)。
(2)频带ωb:
与系统的快速性有关,频带越大,快速性越好。
(3)相频宽:
相频越宽,快速性越好。
(4)A(0):
指ω=0时的振幅比。
A(0)越接近于1,系统的准确性和精度越高。
频率特性分析稳定系统动态响应的一般准则:
频带宽、峰值小,过渡性能好。
2-1-3根轨迹分析
根轨迹:
指系统中某个参数(由0→∞)变动时闭环特征根在s平面上移动的轨迹。
基本法则:
(1)n阶系统有n条根轨迹;
(2)根轨迹对称于实轴;
(3)根轨迹起始于开环极点,终止于开环零点与无穷远;
(4)实轴上根轨迹所在区段的右侧,开环零、极点数目之和为奇数;
(5)根轨迹渐近线方位可以计算确定;
(6)根轨迹的起始角与终止角可以计算确定;
(7)根轨迹的分离角与汇合角可以计算确定;
(8)根轨迹与虚轴的交点可以计算确定;
(9)系统n个开环极点之和等于系统n个闭环极点之和等。
根轨迹的性能
闭环系统零、极点位置对性能的影响,可归纳为以下几点:
1)稳定性:
如果闭环极点全部位于s左半平面,则系统一定是稳定的,即稳定性只与闭环极点位置有关。
2)偶极子及其处理:
如果零、极点之间的距离比它们本身的模值小一个数量级,则它们构成了偶极子。
远离原点的偶极子其影响可略;接近原点的偶极子,其影响必须考虑。
3)主导极点:
在s平面上,最靠近虚轴而附近又无闭环零点的一些闭环极点,对系统动态性能影响最大的,起主要的决定性作用,称为主导极点。
2-2MATLAB程序设计
MATLAB除了可以在命令窗口中编写行命令外,作为一种高级应用软件还可以生成自己的程序文件。
MATLAB程序代码所编写的文件通常以“.m”为扩展名,因此这些文件称为M文件。
M文件是一个ASCII码文件,可以用任何字处理软件来编写,MATLAB的程序在第一次运行时由于逐句解释运行程序,故速度比编译型的慢,但M文件一经运行就编译代码放在内存中,再次运行的速度就大大加快了。
M文件可以分为两种类型:
一种是函数文件,另一种是命令文件。
MATLAB中的函数即函数文件,它的第一行必须包含“function”,每一个函数文件都要定义一个函数,它是M文件最主要的形式,函数是能够接受输入参数并返回输出参数的M文件。
在MATLAB中,函数名和M文件名必须相同。
MATLAB中的函数有两种不同的形式,一种是内置在MATLAB核心中最基本的运算函数,如sqrt()函数和sin()函数,其执行效率非常高。
另一种是通过M文件实现的函数,如gamma()函数,这些函数大部分是在最基本运算函数的基础上扩展而来,扩展的目的是为了实现与完善MATLAB新的功能。
在MATLAB中,实现某项功能的一串MATLAB语句命令与函数组合成的M文件叫命令文件。
将“Scriptfile”译为“脚本文件”的就是MATLAB命令文件。
这种M文件在MATLAB的工作空间内对数据进行操作,能在MATLAB环境下直接执行。
命令文件不仅能够对工作空间内已存在的变量进行操作,并能将建立的变量及其执行后的结果保存在MATLAB的工作空间里,供在以后的计算中使用。
与函数文件相比,命令文件既不带输入参量也不带输出参量。
MATLAB同样与其它高级语言一样拥有表达式语句、赋值语句和程序流程控制语句。
MATLAB支持各种流程控制结构,如顺序结构、循环结构(for…end结构和while…end结构)、条件结构(if…else…end结构和switch…case开关结构)和试探结构(try…catch…end结构)。
控制程序流程的命令:
break,continue,return,pause,keyboard和input命令。
2-3MATLAB仿真的重要性
因为我们所学的数学窄而浅,所以在“自动控制原理”课程中,会遇到许多原理抽象、计算复杂且繁琐以及绘图困难的问题,让我们对学习产生厌恶感,并对其由感兴趣变为讨厌。
但是自从有了MATLAB工具,那些繁琐的计算或抽象的问题,就变的简单,而且可以方便地绘制出图像,利用图像将抽象的文字控制原理,变的一目了然,让我们很容易理解、明白。
MATLAB别适合进行自动控制原理的实现。
MATLAB可以进行各种科学与工程技术计算,应用范围也越来越广,而且MATLAB的函数命令简单高效,特别容易学习和很方便地使用,绘制的图像也是丰富多彩。
3M文件基础
MATLAB语言与其他与语言相比的巨大优势在于用户可以在命令窗口中直接输入命令行,从而以一种交互式的方式来编写程序。
这种方式适用于命令行比较简单,输入比较方便,同时处理的问题步骤较少的情况。
当需要处理重复、复杂且容易出错的问题时,单纯使用这种方式会比较吃力。
因此,作为一门高级语言,MATLAB和其他语言一样,可以进行控制流的程序设计,这就是M文件的编程工作方式。
3-1M文件的特点及组成
M文件的语法类似于一般高级语言,是一种程序化的编程语言,但M文件又有自己的特点。
它只是一个简单的ASCII型码文本文件,因此他的语言比其他的要简单,也容易调试,并且有很好的交互性。
它是一种解释性的语言。
MATLAB提供了许多的工具箱,工具箱中的函数就是一个个的M文件,用户可以添加自己的M文件,注意每个M文件必须以m为扩展名。
M文件有两种:
一种为脚本式,一种为函数式。
M文件的组成部分:
(1)函数的定义行:
定义函数名,以及输入输出变量的数目和顺序(仅限于函数式M文件)
(2)H1行:
对程序进行概括性的描述,使用help和lookfor命令都可以调出此行
(3)帮助文本:
这时比H1行更详细的帮助信息,使用help命令时与H1行一起显示
(4)函数体:
函数体是M文件的主体部分,程序的设计和实现都在此实现
(5)注释:
解释程序行的意义
例:
functionf=fact(n)%函数的定义行
%computeafactorialvalue%H1行
%FACT(N)returnsthefactorialofN,%帮助文本
%usuallydenotedbyN!
%Putsimply,FACT(N)isPROD(1:
N).%注释
f=prod(1:
n);%函数体
3-2脚本式M文件
有时候用户需要输入较多的命令,而且经常要对这些命令重复输入,此时直接在命令窗口中输入显得比较麻烦,而利用命令文件可以比较简单。
用户可以将需要重复输入的命令按顺序放到一个扩展名为m的文本文件下,每次运行时只要输入该M文件的文件名即可。
需要注意的是用户自己创建的M文件名要避免与系统的内置函数和工具箱中的函数重名,以免发生内置函数被替换。
脚本式文件的运行相当于在命令窗口中顺次输入运行命令,在编制这类文件时,只需将所要执行的语句逐行编辑到制定的文件中,且变量不需要预先定义,在命令文件中变量都是全局变量,任何其他的命令文件和函数都可以访问这些变量,也不存在文件名对应的问题。
3-3函数式M文件
函数式M文件比脚本式M文件相对要复杂一些,脚本式M文件只是将一些命令语句组织在一起,不需要自带参数,也不一定要返回结果,而函数式M文件一般都要自带参数,并且有返回结果,这样,就可以更好的把整个程序连为一段。
函数式M文件的第一行都是以function开始,说明此文件是一个函数。
函数式M文件中的变量都不是全局变量,仅在函数运行期间有效,函数运行完毕后,它所定义的变量将从工作区间中清除。
4时域分析的MATLAB仿真
所谓控制系统的时域响应分析就是在时间域内求解系统的微分方程,根据系统的微分方程,用拉普拉斯变换直接解出动态方程,然后求出传递函数,通过MATLAB软件对整个系统的性能(如:
稳、快、准)和各主要参数对系统性能的影响进行分析,使其稳定。
4-1典型输入信号
对各种控制系统的性能进行测试和评价时,人们习惯选择阶跃、斜坡、加速度及脉冲输入作为系统的输入信号。
对于一个实际的控制系统,测试信号的形式应接近或反映工作时最常见的输入形式,同时也应该注意选取对系统工作最不利的信号作为测试信号。
4-2系统稳定性
对于线性连续系统,如果系统的所有特征根(极点)的实部为负,则系统是稳定的;如果有实部为零的根,则系统是临界稳定的;反之,如有正实部的根,则系统不稳定。
求解控制系统闭环特征方程的根,在MATLAB里这是很容易用函数roots()实现的。
求多项式根的函数roots()的调用格式很简单:
roots(P)
函数输入参量P是降幂排列多项式系数向量,输出即为求出的根,存放在ans中。
在自动控制的稳定性分析中,P就是系统闭环特征多项式降幂排列的系数向量。
若能够求得P,则其根就可以求出,并进而判断所有根的实部是否小于零。
若系统闭环特征方程的所有根的实部都小于零,则系统闭环是稳定的,只要有一个根的实部不小于零,则系统闭环不稳定。
4-3MATLAB函数指令方式下的时域响应仿真
4-3-1时域响应MATLAB仿真的函数指令格式
利用MATLAB所提供的求取连续系统的单位阶跃响应函数step(),单位冲激响应函数impulse(),零输入响应函数initial()以及其它函数都可以求出其相应的响应。
1.求连续系统单位阶跃响应的函数step()
单位阶跃响应是系统在单位阶跃信号1(t)作用下的响应。
函数命令调用格式:
step(sys)
step(sys,t)
[y,t,x]=step(sys)
step(sys,t)函数用于计算系统的阶跃响应,函数中t可以指定为一个仿真终止时间,此时t为一标量;也可以设置为一个时间向量。
[y,t,x]=step(sys)函数为带有输出变量引用的函数,可计算系统阶跃响应的输出数据,而不绘制出曲线。
输出变量y是系统的输出响应值向量;输出变量t为取积分值的时间向量;输出变量x是系统的状态轨迹数据。
需要特别指出的是输出变量[y,t,x]三个元素的顺序不能错,尤其是t与x的顺序,输出变量三个元素的顺序如果弄错,会给与step()函数相关的计算带来错误。
2.求连续系统单位冲激响应的函数impulse()
单位冲激响应是系统在单位冲激信号作用下的响应。
函数命令调用格式:
impulse(sys)
impulse(sys,t)
[y,t,x]=impulse(sys)
impulse(sys)函数用来计算系统的单位冲激响应。
impulse(sys,t)函数用于计算系统的单位冲激响应,函数中t可以指定为一个仿真终止时间,此时t为一标量;也可以设置为一个时间向量。
[y,t,x]=impulse(sys)函数为带有输出变量引用的函数,可计算系统单位冲激响应的输出数据,而不绘制出曲线。
3.求连续系统零输入响应的函数intial()
零输入响应是系统初始状态引发的动态过程,此时系统无输入信号的作用,响应只与系统的初始状态、结构及参数有关。
函数命令调用格式:
initial(sys,x0)
initial(sys,x0,t)
[y,t,x]=initial(sys,x0)
initial(sys,x0)函数用来计算系统的零输入响应,x0为初始状态。
initial(sys,x0,t)函数用于计算系统的零输入响应,函数中t可以指定为一个仿真终止时间,此时t为一标量。
[y,t,x]=initial(sys,x0)函数为带有输出引用的函数,可计算系统单位冲激响应的输出数据,而不绘制出曲线。
4-3-2时域分析设计方案
实例1:
判断如下系统的稳定性
_
解:
num=1;den=[11223];
sys=tf(num,den)
sys1=feedback(sys,1);
roots(sys1,den{1})
得到结果:
ans=
-3.0000
1.0000+2.6458i
1.0000–2.6458i
特征根的实部有正值,所以系统不稳定。
实例2:
设控制系统的开环传递函数为:
G(s)=1.25/(s^2+s),试绘制出该(闭环系统)的单位阶跃响应曲线,并计算系统的各项性能指标。
解:
(1)执行以下程序program1.m
%MATLABPROGRAM1.m
clear
s1=tf(1.25,[110]);
sys=feedback(s1,1);
step(sys)
程序执行后绘制出该闭环系统的单位阶跃响应曲线,如图2-2所示。
图2-2闭环系统的单位阶跃响应曲线
(2)采用函数perf()的MATLAB程序program2.m计算性能指标:
%MATLABPROGRAM2.m
clear
globalyt
s1=tf(1.25,[110]);sys=feedback(s1,1);
[y,t]=step(sys);
perf(2,y,t);
程序执行结果:
sigma=20.9121
tp=3.0920
ts=4.9693
即求得:
超调量:
σ%=20.9121%
峰值时间:
tp=3.0920s
2%误差带调节时间:
ts=4.9693s
(3)采用函数targ()的MATLAB程序j0001b.m计算性能指标:
%MATLABPROGRAMj0001b.m
clear
n1=[1.25];d1=[110];s1=tf(n1,d1);
sys=feedback(s1,1);
[y,t]=step(sys);
targ(y,t);
程序执行结果:
ess=0.0013
b1=0.2088
b2=0.0103
sigma=20.9121
n=20.3364
pusi=0.9508
T=6.2945
f=0.1589
即求得:
阶跃响应的余差:
ess=0.0013;阶跃响应的第一波峰值:
b1=0.2088;阶跃响应的第二波峰值:
b2=0.0103;阶跃响应的超调量:
σ%=20.9121%;阶跃响应的衰减比:
n=20.3364;阶跃响应的衰减率:
Ψ=0.9508;阶跃响应的衰减振荡周期:
T=6.2945s;阶跃响应的振荡频率:
f=0.1589Hz.
3根轨迹分析
一、根轨迹方程
根轨迹方程为:
1+G(s)H(s)=0
即:
G(s)H(s)=-1
(1)相角条件:
arg[W(s)]=±180(2k+1),k=0,1,2,…..
(2)幅值条件:
|KW(s)|=1
3-4MATLAB函数指令方式下的根轨迹仿真
人工绘制根轨迹图非常麻烦与繁琐,费时费力,劳动强度大,又不易画准确,绘制过程中甚至还要求解高次方程。
在MATLAB中,系统专门提供了函数:
rlocus()用来求系统根轨迹;rlocfind()用来计算给定根的根轨迹增益;pzmap()用来绘制系统的零极点图等,这些函数都能够方便、简单而快捷地绘制根轨迹或者进行有关根轨迹的计算。
3-4-1根轨迹分析的MATLAB实现的函数指令格式
1.绘制系统开环零极点图的函数pzmap()
函数命令的调用格式:
[p,z]=pzmap(sys)
pzmap(p,z)
sys是输入变量。
当不带输出变量引用时,pzmap()函数可在当前图形窗口中绘出系统的零极点图。
在图中,极点用“×”表示,零点用“○”表示。
当带有输出变量引用函数时,可返回系统零极点位置的数据,而不直接绘制零极点图。
pzmap(p,z)函数可在复平面里绘制零极点图,其中行向量p为极点,列向量z为零点。
这个命令用于直接绘制给定的零极点图。
2.求系统根轨迹的函数rlocus()
函数命令调用格式:
rlocus(sys)
rlocus(sys,k)
[r,k]=rlocus(sys)
rlocus(sys)函数命令用来绘制SISO的LTI对象的根轨迹图。
当不带输出变量引用时,函数可在当前图形窗口中绘出系统的根轨迹图。
rlocus(sys,k)可以指定的反馈增益向量k来绘制系统的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 入门 控制系统 仿真