matlab 简单控制原理仿真基础 [李园7舍_404]

        控制系统仿真除了考查基本概念之外,还会加上matlab语言的基础知识,主要体现在matlab矩阵、数组下标操作及读程序能力(逻辑能力 )。另外,有了matlab基础知识后,将发挥计算机语言作为工具的特性,matlab的种种特性将会用来系统仿真,包括由系统闭环系统特征方程来判定系统是否稳定、由系统的状态空间表达式来得出对应的传递函数和零极点模型、由系统的开环传递函数求得系统的闭环传递函数、由系统的开环传递函数绘制系统的根轨迹方程、根据系统的传递函数求系统的峰值时间和超调量等性能、由系统开环传递函数绘制系统的Bode图、由系统状态空间表达式确定系统的状态反馈矩阵。在数值解方面要求掌握求解微分方程的数值解法(欧拉、梯形法、龙格库塔法)的求解过程并能通过matlab来求解微分方程的数值解。最后根据《自控原理》的精神,还要明白求取系统稳态误差的求法。

     当然,考试的目的不是将广大可爱的考生考到,而是想通过尽可能简单的试题作为索引让考生明白每个过程的操作原理及会涉及到的相关命令( matlab已经将微分方程求解析解、求解个系统传递函数的方式都封装在某个具体的函数中来了,只要在用到具体函数的时候传递不同的参数就可以得到不同的结果 )。

 

1matlab基础

matlab 语言的基础从其矩阵和数值开始。在C语言中,系统对于多维数组的索引是先行后列,在matlab中,数组的是先列存储后行存储。并且在matlab中,要访问数组中具体的元素时,可以通过括号的方式访问。而且所有的变量都不必预先定义,这是与C语言的一大不同。如在matlab命令窗口中编辑如下语句

>> A=[1, 2,3;4 5 6] [回车] %得到以下结果

A =

     1    2     3

     4    5     6

matlab中,不打分号的语句的结果会在matlab命令窗口中显示出来;matlab中各行的每两个元素之间可以通过空格来隔开也可以通过逗号来隔开。行与行之间通过分号来隔开。这是matlab中矩阵的表示方式。

         访问矩阵或者数组的时候可以通过括号内具体的索引访问,如要访问矩阵A中的12列的元素就可以直接这样访问:

>> A(1,2)

ans =

     2

也可以通过此元素在此矩阵中的占的总元素个数的下标访问:

>> A(3)

ans =

     2

注意这里可能会以为A(2)A(1,2)元素,最开始就提到matlab存储矩阵的方式是列为先,所以在计算具体元素的下标值时要以列为先行为后的先后顺序来计算。在一个n x m的矩阵中,坐标为(i, j)的元素的下标为:

index         =j – 1* n  + i

通过matlab的这个式子和C语言中计算数组下标值的式子比较就可以看出matlab中确实是列先存储行后存。

         Matlab中访问矩阵的元素的方式比C语言等语言都灵活得多,在matlab中访问元素时,下标都可以是矩阵。矩阵中的值表示对应元素的下标值index

>> A([1 2;23])

ans =

     1    4

     4    2

matlab中的矩阵元素访问形式灵活,还不止这点形式,用得多知道得多。另外关于matlab矩阵数组的逻辑运算( &、|、~ )跟C语言一样,结果只有1和0两种结果,具体对应到矩阵中两个元素的逻辑运算结果之上,形成一个逻辑运算结果矩阵,存储的元素全为1或0值。

 

 

2 matlab用于自动控制原理函数和解题思路

2.1由闭环特征方程判断系统稳定性

由系统闭环特征方程判断系统是否稳定的思路为:首先用roots函数求解出闭环系统的闭环极点,然后用find命令找出实部大于0real)的根的下标,最后判断下标的维数是否为0,若为0则表示系统稳定,反之,系统在有半平面有极点,系统不稳定。

例:闭环系统特征方程s^5+10s^4+8s^3+17s^2+16s+3=0,判断系统稳定性,求系统在s右平面根的个数。

解:

matlab 简单控制原理仿真基础 [李园7舍_404]_第1张图片

 

 

2.2由状态空间表达式求对应的传递函数和零极点模型

由状态空间表达式求取对应的传递函数表达式时,需要用的函数为ss2tf。由状态空间表达式求取对应的零极点模型时需要用到ss2zp函数。函数的参数含义可以参看matlab中的help

例:给定系统状态空间为x'=[0, 1;1,−2]x+(0;1)u,y=[1,3]x+u,求传递函数模型和零极点模型。

 

程序中的num为传递函数分子各系数组成的矩阵,den为传递函数分母各系数组成的矩阵。只要使用tf(num, den)就可以在编辑窗口中查看到传递函数结果,z表示由状态空间表达式转换为零极点的所有零点组成的矩阵,p是所有极点组成的矩阵,k是当每个乘积式子中的s项系数为1时提到整个式子外的系数。

 

2.3由前向通道函数和反馈通道函数求取闭环传递函数

要完成这个操作只需要将两个传递函数表示出来,然后通过feedback函数就可以得到对应的传递函数。

 

在表示传递函数的矩阵时,需要将分子和分母化成以每项幂从最高到最小的顺序排列,然后将各幂对应的系数一次写在矩阵中,没有的项要赋0。

 

2.4由系统开环传递函数绘制系统的根轨迹

首先需要将系统的开环传递函数化为零极点模型[各项s系数为1 ](注意变换过后的k’k的关系),以方便得到传递函数的零极点,然后由zpk函数求取系统的零极点模型,然后根据系统的零极点模型就可以使用rlocus命令绘制出系统根轨迹,得到与k’的值最后需要转换到k之上。

例:已知系统的开环传递函数为G(s)H(s)=k(s+2)(s+3)/s(s+1),绘出闭环系统根轨迹,并求出当系统闭环极点P=[-0.707,-2.6]时的系统所对应的增益K值。

 

此程序中k’=k。

 

2.5求简单微分方程的解析解

微分方程的数值求解法已经是求解微分方程的主流方法,因为有的微分方程解不出来的。关于具初值的微分方程求解已经有记载,在这里只是想要记载一下求解简单微分方程的解析解的函数。

         例:已知微分方程dy/dx=y+2x     y(0)=1求次方程的解析解。

用一个函数即可:dsolve('Dy =y+2*x','y(0)=1','x') [ 回车然后得出一下结果

ans =3*exp(x) -2*x –2 跟手工解出来的解析解一个样。

关于其它的如求系统的阶跃响应曲线及峰值时间等也已经有过笔记记载。

 

 

此次笔记记录完毕。

 

你可能感兴趣的:(碚大)