控制系统与MATLAB的菜鸟教程(四)…
来源:互联网 发布:js怎么判断日期格式 编辑:程序博客网 时间:2024/06/07 00:32
写这篇之前先说明一个情况,恩……因为最近要准备学校的考试,所以,这个学期的教程这次可能是最后一篇了,接下来的3到4个星期内,可能不会写新的东西出来,但是寒假里我会把这个事情继续下去,在这里先请个假,咔咔!!
按照上一次说的,这一篇开始我们来介绍控制系统的时域分析。这部分内容比较基本,也比较重要,其中的一些操作很经典,可能以后会经常用到,所以需要格外的注意
按照上一次说的,这一篇开始我们来介绍控制系统的时域分析。这部分内容比较基本,也比较重要,其中的一些操作很经典,可能以后会经常用到,所以需要格外的注意
引子:
我们先从上一篇我留下的一个问题开始说起;
上一次,我留下了两个问题,第二个问题是就求一个闭环系统的传递函数,那个比较简单,第一个相对来说要思考以下,
现在我们把问题再简化一下。用代码写出
的单位阶跃响应,还记得我的要求么,只能用我们上一篇里介绍的函数。我的目的其实是让大家熟悉一些函数的用法,和单位阶跃响应的求
解过程,阶跃响应怎么求的呢,步骤是不是这样:先根据系统的输入和传递函数来求出系统的输出,然后在把输出进行拉氏逆变换,求出输出
的时域形式,在指定仿真时间来作图。现在我们按照所说的过程来编写程序。
我们先从上一篇我留下的一个问题开始说起;
上一次,我留下了两个问题,第二个问题是就求一个闭环系统的传递函数,那个比较简单,第一个相对来说要思考以下,
现在我们把问题再简化一下。用代码写出
的单位阶跃响应,还记得我的要求么,只能用我们上一篇里介绍的函数。我的目的其实是让大家熟悉一些函数的用法,和单位阶跃响应的求
解过程,阶跃响应怎么求的呢,步骤是不是这样:先根据系统的输入和传递函数来求出系统的输出,然后在把输出进行拉氏逆变换,求出输出
的时域形式,在指定仿真时间来作图。现在我们按照所说的过程来编写程序。
运行上面的代码就可以得到一个一阶系统的阶跃响应曲线,上面的代码不解释了,我想都能看懂。
关于一些基本理论(这里请耐心看下去):
我还是问你们两个问题,看看你们对最基本的东西的掌握情况
一 如果给你一个系统的传递函数,那么,这个系统的动态性能从最根本上讲取决于什么。
二 这些决定因素是如何影响系统的性能的
这个问题其实是我们古典控制理论最核心的问题,所有的方法都是基于这个问题来展开的。现在给出一个答案。
给定一个传递函数,决定系统性能的最根本因素就是系统的零点和极点在复平面上的分布情况,其中,起决定性作用的是极点的分布,他决
定了系统是否是稳定的,是否有震荡,震荡的频率和幅度等等系统最关键的东西,零点的存在起的是一种调节作用,要么是锦上添花,要么
是雪上加霜。我们学习控制,最终的目的是学会如何根据各种被控对象的情况来设计合适的控制器,但从上面的意义上来讲,设计控制器的
最终目的就是为了把整个系统的零点和极点控制在我们希望的区域或范围内。
说这么多的目的是想让大家知道,这是我们控制理论里最根本的问题,在学习一些分析和设计方法的时候我们最好多想一下,这个种方法对系统的零极点分布有什么影响,我觉得这样对我们理解一些问题尤其是一些相关经验的建立会有很大帮助。
OK,前面强调了系统极点的重要性,再展开来讲,我们有一系列非常重要的结论。
对一个受到阶跃信号输入的系统
一 如果系统所有极点都具有负实部,那么这个系统无论如何都是稳定的(输出有一个最终的恒定值)
二 系统只要有一个极点有正实部,这个系统都是不稳定或着发散的
三 系统的极点如果存在复数根,那么系统的输出将存在震荡。复根离实轴越远震荡越厉害,反之,则不存在震荡。
我们知道,在上个世纪初,在还没有小麦的黑暗时代里,劳斯同志挺身而出,发明了分析系统极点的一个定性算法,后来我们把它叫做劳斯判据。让我们为好同志阿劳默哀一秒种。BUT!阿劳死了就死了吧,反正我们现在已经不用这个东西了,因为现在有了非常成熟的寻根算法,“用小麦计算,一次顶过去一万次,方便!实惠!您愁准了,mathwork牌小麦!!!”呵呵,现在我们来给出几种求系统极点的方法。
用函数:roots
这个函数非常有用,它返回一个列向量,结果是一个多项式方程精确的根。例如我们要求一个传递函数
的所有零点和极点。代码如下
另外说一句,如果这个系统的传递函数的增益k是一个变量,那么系统的极点将不会是几个确定的值,反映在上面的图象上,就变成了几条随k变化的曲线,这样的曲线就是传说中的“根轨迹”,关于根轨迹后面还会说到。
我还是问你们两个问题,看看你们对最基本的东西的掌握情况
一
二
这个问题其实是我们古典控制理论最核心的问题,所有的方法都是基于这个问题来展开的。现在给出一个答案。
给定一个传递函数,决定系统性能的最根本因素就是系统的零点和极点在复平面上的分布情况,其中,起决定性作用的是极点的分布,他决
定了系统是否是稳定的,是否有震荡,震荡的频率和幅度等等系统最关键的东西,零点的存在起的是一种调节作用,要么是锦上添花,要么
是雪上加霜。我们学习控制,最终的目的是学会如何根据各种被控对象的情况来设计合适的控制器,但从上面的意义上来讲,设计控制器的
最终目的就是为了把整个系统的零点和极点控制在我们希望的区域或范围内。
说这么多的目的是想让大家知道,这是我们控制理论里最根本的问题,在学习一些分析和设计方法的时候我们最好多想一下,这个种方法对系统的零极点分布有什么影响,我觉得这样对我们理解一些问题尤其是一些相关经验的建立会有很大帮助。
OK,前面强调了系统极点的重要性,再展开来讲,我们有一系列非常重要的结论。
对一个受到阶跃信号输入的系统
一
二
三
我们知道,在上个世纪初,在还没有小麦的黑暗时代里,劳斯同志挺身而出,发明了分析系统极点的一个定性算法,后来我们把它叫做劳斯判据。让我们为好同志阿劳默哀一秒种。BUT!阿劳死了就死了吧,反正我们现在已经不用这个东西了,因为现在有了非常成熟的寻根算法,“用小麦计算,一次顶过去一万次,方便!实惠!您愁准了,mathwork牌小麦!!!”呵呵,现在我们来给出几种求系统极点的方法。
用函数:roots
这个函数非常有用,它返回一个列向量,结果是一个多项式方程精确的根。例如我们要求一个传递函数
的所有零点和极点。代码如下
这个函数不难,都猜到这个函数的用法了吧
然后可以输入z和p查看零点和零点
用函数zpkdata
这个函数是最直接的做法,不介绍了,用法见链接
[url=http://www.ilovematlab.cn/thread-1182-1-1.html][/url]http://www.ilovematlab.cn/thread-1182-1-1.html
用函数pzmap
这个函数的作用是画出一个系统的零极点的分布图,这种方法给出了一个非常的直观的结果。现在来求上面传递函数的零极点分布图。
代码如下:
我们得到了这样的一个图形,酷吧!!图上叉符号代表极点,圆圈符号是零点,我们可以非常清楚的看到,这个系统具有右半平面的极点,所以这个系统是不稳定的!
另外说一句,如果这个系统的传递函数的增益k是一个变量,那么系统的极点将不会是几个确定的值,反映在上面的图象上,就变成了几条随k变化的曲线,这样的曲线就是传说中的“根轨迹”,关于根轨迹后面还会说到。
下面来补充一个内容:如何把一个传递函数进行部分分式展开。这里用到一个求留数的函数
resdue
用法:
[r pk]=residue(num,den)
num和den分别是分子和分母多项式的系数矩阵
r是留数,p是求得的极点,k是余下项s的系数,由于我们的传递函数一般都是分子的阶次小于分母(这叫做物理可实现形式),所以,一般k
就是0,返回一个空矩阵。举个例子就明白了:
现在来求一个传递函数的部分分式展开
代码和返回值如下:
从代码中我们可以求出部分分式展开的最后结果:
很简单,懂了吧!!!
resdue
用法:
[r pk]=residue(num,den)
num和den分别是分子和分母多项式的系数矩阵
r是留数,p是求得的极点,k是余下项s的系数,由于我们的传递函数一般都是分子的阶次小于分母(这叫做物理可实现形式),所以,一般k
就是0,返回一个空矩阵。举个例子就明白了:
现在来求一个传递函数的部分分式展开
代码和返回值如下:
从代码中我们可以求出部分分式展开的最后结果:
很简单,懂了吧!!!
下面来介绍如何求系统的输出响应,涉及到的几个函数可能以后会经常用到
求系统的阶跃响应
当然,你可以用这一篇最开始的方法来求,但是更简便的方法是用一个函数
step
直接看例子
求
的阶跃响应曲线
代码如下:
得到系统的阶跃响应曲线如图:
(230.74KB)
求系统的阶跃响应
当然,你可以用这一篇最开始的方法来求,但是更简便的方法是用一个函数
step
直接看例子
求
的阶跃响应曲线
代码如下:
或者直接:step([1 2 4],[1 10 54])
得到系统的阶跃响应曲线如图:
2007-12-23 09:05上传
下载附件