首页 > 其他 > 详细

控制系统仿真简易教程

时间:2014-04-15 15:34:26      阅读:632      评论:0      收藏:0      [点我收藏+]

 

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

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

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

    bubuko.com,布布扣

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

    bubuko.com,布布扣

     

    例如 :

    bubuko.com,布布扣

    代码:

        num=[8 24 16];

      den=[1 12 47 60 0];

      G0=tf(num,den)

结果:

bubuko.com,布布扣

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

例如:

bubuko.com,布布扣采样周期为0.5s。

代码:

 

   num=[1 1];

    den=[1 -3 2];

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

具体语句格式:

bubuko.com,布布扣

结果如下:

bubuko.com,布布扣

  1. 零奇点形式

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

    bubuko.com,布布扣

    离散情况:

    bubuko.com,布布扣

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

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

    bubuko.com,布布扣

    例如:

    bubuko.com,布布扣

    代码:

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

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

      K=6;

      G=zpk(z,p,K)

结果如下:

bubuko.com,布布扣

离散的情况就不用说了。

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

bubuko.com,布布扣

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

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

代码如下:

  s=tf(‘s‘);

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

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

结果如下:

bubuko.com,布布扣

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

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

z=tf(‘z‘,0.5);

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

结果:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

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

格式如下:

对于bubuko.com,布布扣

代码:

bubuko.com,布布扣

结果就不贴了。

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

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

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

Ts-采样周期

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

bubuko.com,布布扣

例如:

bubuko.com,布布扣采样周期为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‘)

结果如下:

 

 

bubuko.com,布布扣

  1. 离散系统的连续化

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

  • 系统性能分析

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

  1. 时域系统

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

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

    其他。。。。。。

    任意函数:lsim();

    调用格式:

     

    bubuko.com,布布扣

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

    bubuko.com,布布扣

    代码:

    clear;

    num=60;

    den=[1 4 0];

    Gs=tf(num,den);

    close_Gs=feedback(Gs,1);

    step(close_Gs)

    结果如下:

    bubuko.com,布布扣

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

    bubuko.com,布布扣

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

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

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

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

bubuko.com,布布扣

  1. 离散系统:

    与连续系统相同。

  • 频域分析

     

  1. bode图的绘制

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

    格式:

    bubuko.com,布布扣

    bubuko.com,布布扣

    例如:传递函数

    bubuko.com,布布扣

    num=[10^9 0];

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

sys=tf(num,den);

bode(sys);

grid;

结果:

bubuko.com,布布扣

  1. Nyquist图的绘制

    格式:

    bubuko.com,布布扣

    例如:

   num=[10^9 0];

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

sys=tf(num,den);

%bode(sys);

nyquist(sys);

grid;

结果:

bubuko.com,布布扣

 

控制系统仿真简易教程,布布扣,bubuko.com

控制系统仿真简易教程

原文:http://www.cnblogs.com/NeiHe/p/3663309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!