控制系统仿真简易教程

您所在的位置:网站首页 计算机控制及系统仿真 控制系统仿真简易教程

控制系统仿真简易教程

#控制系统仿真简易教程| 来源: 网络整理| 查看: 265

 

传递函数的构建(请大家注意公式以及函数的格式!)

要进行控制系统的仿真那么传递函数肯定少不了,那么它有几种常见的形式以及如何利用matlab创建呢?

两个多项式相除的形式

如何构建呢?嘿嘿,如下:

 

例如 :

代码:

        num=[8 24 16];

      den=[1 12 47 60 0];

      G0=tf(num,den)

结果:

对于离散系统同样适用,只不过增加了采样周期,

例如:

采样周期为0.5s。

代码:

 

   num=[1 1];

    den=[1 -3 2];

    Gz=tf(num,den,'Ts',0.5)

具体语句格式:

结果如下:

零奇点形式

大家都知道这种形式的标准公式为:

离散情况:

我们从他可以看出三个东西:1,零点z;2,极点p;3,增益K;

构造格式如下:(大家当然也可以把他展开,用tf构建)

例如:

代码:

        z=[-5 -2-2j -2+2j];

      p=[-4 -3 -2 -1];

      K=6;

      G=zpk(z,p,K)

结果如下:

离散的情况就不用说了。

一般情况,也就是既没有化成多项式相除的形式,也没有化成零极点形式,如下:

第一种方法:(具有通用性)

首先需要指明函数中的's',然后就可以构造符号函数了。

代码如下:

  s=tf('s');

G=5*(s^2+4)/((s+2)^3*(s^2+2*s+2)*(s^2+5))

第一句指明用s代替tf函数中的's',

结果如下:

对于离散系统同样适用,只不过s变成了z并加上采样时间而已。

例如对于上面离散的例子:

z=tf('z',0.5);

H=(z+1)/(z^2-3*z+2)

结果:

第二种形式:(利用conv()函数,当然也具有通用性,矩阵乘法)

由于我们将多项式表示为一维矩阵的形式,故多项式的运算当然可以用矩阵的相关运算来代替了(matlab不是称为矩阵实验室吗)。

C = conv(A, B) convolves vectors A and B.

格式如下:

对于

代码:

结果就不贴了。

离散函数的离散化以及离散函数的连续化 连续函数的离散化

所用函数为函数c2d(sysc,Ts,'method');

sysc-所需要离散的连续传递函数

Ts-采样周期

Method-离散化方法,常用有以下几种:

例如:

采样周期为1s。

代码:

num=[8 24 16];

den=[1 12 47 60 0];

G=tf(num,den);

Ts=1;

G1=c2d(G,Ts,'zoh')

G2=c2d(G,Ts,'tustin')

结果如下:

 

 

离散系统的连续化

调用函数为 d2c(sysd,'method'); method与c2d()函数一样,在这里就不啰嗦了。

系统性能分析

现在已经知道了传递函数的构建与离散,还需要构造闭环传函,函数为feedback(Gs,Hs); 简单吧!

时域系统

单位阶跃响应:step(sysc);

单位冲击响应:impulse(sysc);

其他。。。。。。

任意函数:lsim();

调用格式:

 

例如开环传函如下,求单位负反馈时单位阶跃响应:

代码:

clear;

num=60;

den=[1 4 0];

Gs=tf(num,den);

close_Gs=feedback(Gs,1);

step(close_Gs)

结果如下:

关于图像,直接在图像上右键,便可以看到系统的相关性能参数,比如超调量,上升时间,调整时间等。

零极点分布图:pzmap(传递函数);根轨迹分布图:rlocus(传递函数);

例如:(只举例零极点分布图)

sys=tf([3 2 5 4 6],[1 3 4 2 7 2]);pzmap(sys)grid on

得到:叉符号代表极点,圆圈符号是零点,我们可以非常清楚的看到,这个系统具有右半平面的极点,所以这个系统是不稳定的!

离散系统:

与连续系统相同。

频域分析

 

bode图的绘制

matlab提供了函数bode(),来绘制bode图;函数margin(),来求解幅值稳定裕度与相位稳定裕度。

格式:

例如:传递函数

    num=[10^9 0];

den=conv([1 1000],[1 10^7]);

sys=tf(num,den);

bode(sys);

grid;

结果:

Nyquist图的绘制

格式:

例如:

   num=[10^9 0];

den=conv([1 1000],[1 10^7]);

sys=tf(num,den);

%bode(sys);

nyquist(sys);

grid;

结果:

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3