控制系统仿真简易教程

 

  • 传递函数的构建请你们注意公式以及函数的格式!

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

  1. 两个多项式相除的形式

    如何构建呢?嘿嘿,以下: 性能

     

    例如 : ui

    代码: spa

        num=[8 24 16]; 3d

      den=[1 12 47 60 0]; rest

      G0=tf(num,den) blog

结果: 性能分析

对于离散系统一样适用,只不过增长了采样周期, bfc

例如: grid

采样周期为0.5s。

代码:

 

   num=[1 1];

    den=[1 -3 2];

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

具体语句格式:

结果以下:

  1. 零奇点形式

    你们都知道这种形式的标准公式为:

    离散状况:

    咱们从他能够看出三个东西: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)

结果以下:

离散的状况就不用说了。

  1. 通常状况,也就是既没有化成多项式相除的形式,也没有化成零极点形式,以下:

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

首先须要指明函数中的'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.

格式以下:

对于

代码:

结果就不贴了。

  • 离散函数的离散化以及离散函数的连续化
  1. 连续函数的离散化

所用函数为函数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')

结果以下:

 

 

  1. 离散系统的连续化

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

  • 系统性能分析

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

  1. 时域系统

    单位阶跃响应: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

获得:叉符号表明极点圆圈符号是零点,咱们能够很是清楚的看到,这个系统具备右半平面的极点,因此这个系统是不稳定的

  1. 离散系统:

    与连续系统相同。

  • 频域分析

     

  1. bode图的绘制

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

    格式:

    例如:传递函数

    num=[10^9 0];

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

sys=tf(num,den);

bode(sys);

grid;

结果:

  1. Nyquist图的绘制

    格式:

    例如:

   num=[10^9 0];

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

sys=tf(num,den);

%bode(sys);

nyquist(sys);

grid;

结果:

相关文章
相关标签/搜索