MATLAB 控制系统设计与仿真 - 6

MATLAB线性控制系统分析 - 稳定性分析

1. 线性系统稳定的概念,

如果控制系统在初始条件和扰动下,其瞬态响应随时间的推移而逐渐衰减并趋于原点(原平衡工作点),则称该系统是稳定的;反之,如果控制系统收到干扰作用后,其瞬态响应随时间的推移而发散,输出呈持续震荡过程,或者输出无限制的偏离平衡状态,则称该系统是不稳定的。

2. 线性系统稳定的数学理解

以传递函数的形式理解线性系统稳定性

假设系统的闭环传递函数为:

G(s)=\frac{b_0}{s}+\frac{b_1}{s+a_0}+\frac{b_2}{s^2+b_2^2}

其Laplace逆变换为:

g(t)=b_0+b_1e^{-a_1t}+sin(b_2t)

g(t) 又称为线性系统的脉冲响应函数因为 g(t)=ilaplace(G(s)∗1)

所以对于一个稳定的线性系统,必须要求 a1≥0 ,否则, g(t) 会发散。

a1 为系统特征值的一个代表。

另外根据线性系统响应原理,系统的响应为:

输入信号与脉冲响应信号的卷积,如果脉冲响应信号发散,

系统的响应就会发散,进而可以判断,系统是不稳定的。

以状态方程的形式理解线性系统稳定性

连续系统的的状态方程模型为:

\begin{cases}\dot x(t)=Ax(t)+Bu(t)\\y(t)=Cx(t)+Du(t)\end{cases}

根据状态方程

\frac{dx}{dt}=Ax(t)+Bu(t)

所以

dx=Ax(t)dt+Bu(t)dt

e^{-At}dx=e^{-At}Ax(t)dt+e^{-At}Bu(t)

\int_{t_0}^t e^{-At}dx= \int_{t_0}^t e^{-At}Ax(t)dt+\int_{t_0}^t e^{-A\tau}Bu(\tau)d\tau

\int_{t_0}^t {(e^{-At}dx- \int_{t_0}^t e^{-At}Ax(t)dt)}=\int_{t_0}^t e^{-A\tau}Bu(\tau)d\tau

\int_{t_0}^t {d(xe^{-At})}=\int_{t_0}^t e^{-A\tau}Bu(\tau)d\tau

e^{-At}x(t)-e^{-At_0}x(0)=\int_{t_0}^{t} e^{-A\tau}Bu(\tau)d\tau

x(t)=e^{A(t-t_0)}x(t_0)+ \int_{t_0}^{t} e^{A(t-\tau)}Bu(\tau)d\tau

有上式可知,如果 x(t) 渐进稳定,A矩阵的特征值必须为小于等于0的数。

3. MATLAB的实现方式以及案例分析

有控制理论可知,系统A的特征根和系统的极点是完全一样的,所以如果内获得系统的极点,我们就可以很容易来判断给定线性系统的稳定性。

在控制理论发展初期,由于没有直接可用的计算机软件来求取高阶多项式的根,所以,无法用求根的方法直接判断系统的稳定性,因而出现了一些间接方法,例如控制理论中的Roth判据,Hurwite判据和Lyapunov判据等。

随着计算机和数值积分的发展,我们可以借助类似MATLAB这样的语言,直接获取线性系统的特征值,进而直接判断线性系统的稳定性。

MATLAB提供了一下几个方法查看极点的分布

  1. 用roots直接求取特征方程的解
  2. 用pole直接输出系统方程的特征值
  3. 用pzmap直接在虚轴实轴绘制极点和零点的分布
  4. 用eig求取系统矩阵A的eigenvalue

例如1

clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
p=roots(den)

运行结果为:

p =

   0.5517 + 1.2533i
   0.5517 - 1.2533i
  -1.4918 + 0.0000i
  -0.8058 + 1.2229i
  -0.8058 - 1.2229i

例如2

clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
p=pole(sys)

运行结果为:

p =

   0.5517 + 1.2533i
   0.5517 - 1.2533i
  -1.4918 + 0.0000i
  -0.8058 + 1.2229i
  -0.8058 - 1.2229i

例如3

clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
pzmap(sys)
grid on

运行结果为:

例如4

clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
[A,B,C,D]=tf2ss(num,den);
p=eig(A)

运行结果为:

p =

   0.5517 + 1.2533i
   0.5517 - 1.2533i
  -1.4918 + 0.0000i
  -0.8058 + 1.2229i
  -0.8058 - 1.2229i

另外,我们也可以直接用MATLAB提供的函数isstable(sys)来直接判断线性系统是否稳定,如果返回值为1,则系统稳定,否则不稳定。

例如

clear all;clc
num=[1 2 3];
den=[1 2 3 4 5 6];
sys=tf(num,den);
key=istable(sys)

结果为:

key =

  logical

   0

所以系统是不稳定的。

更多动力学知识,请参考这里

最后欢迎大家点赞,转发,加关注。更多精彩会持续更新!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东雁西飞

打赏一下,买杯咖啡提提神吧!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值