控制系统仿真简易教程 |
您所在的位置:网站首页 › 计算机控制及系统仿真 › 控制系统仿真简易教程 |
传递函数的构建(请大家注意公式以及函数的格式!) 要进行控制系统的仿真那么传递函数肯定少不了,那么它有几种常见的形式以及如何利用matlab创建呢? 两个多项式相除的形式如何构建呢?嘿嘿,如下:
例如 :
代码: num=[8 24 16]; den=[1 12 47 60 0]; G0=tf(num,den) 结果: 对于离散系统同样适用,只不过增加了采样周期, 例如:
代码:
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-离散化方法,常用有以下几种: 例如:
代码: 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; 结果: 格式: 例如: 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 |