天天看点

用Matlab建立传递函数模型

一、控制系统模型描述

1、传递函数描述

命令格式:sys = tf(num, den, Ts)

num:分子多项式降幂排序的系数向量

den:分母多项式降幂排序的系数向量

Ts:采样时间,默认时表示系统连续

2、零极点模型描述

命令格式:sys = zpk(z, p, k, Ts)

z、p、k分别为系统的零点、极点及增益,若无零极点则用[ ]表示。

Ts:采样时间,默认时表示系统连续

二、系统模型转换

1、传递函数转零极点

命令格式:[num, den] = zp2tf(z, p, k);

2、零极点转传递函数

命令格式:[z, p, k] = tf2zp(num, den);

三、系统连接

1、系统并联

sys = parallel(sys1, sys2);

2、系统串联

sys = series(sys1, sys2)

3、系统反馈

sys = feedback(sys1, sys2, sign);

sign用于说明反馈的正负,默认为负,及sign = -1;

四、举个例子

求闭环传递函数C(s)/R(s)

用Matlab建立传递函数模型
用Matlab建立传递函数模型
%model.m
G1 = tf(1, [1 10]);             %使用tf建立传递函数G1~G4
G2 = tf(1, [1 1]);
G3 = tf([1 0 1], [1 4 4]);
g4_num = [1 1];
g4_den = [1 6];
G4 = tf(g4_num, g4_den);

H1 = tf([1 1], [1 2]);
h2_num = 2;
h2_den = 1;
H3 = 1;
nh2 = conv(h2_num, g4_den);
dh2 = conv(h2_den, g4_num);
H2 = tf(nh2, dh2);              %将H2移至G4之后

sys1 = series(G3, G4);          %将G3G4串联
sys2 = feedback(sys1, H1, +1);  %G3G4与H1构成反馈
sys3 = series(G2, sys2);        %G2与子系统sys2串联
sys4 = feedback(sys3, H2);      %组建H2反馈子系统
sys5 = series(G1, sys4);        %将G1串联到sys4
sys = feedback(sys5, H3);       %连接H3反馈,得到系统传函

num = sys.num{1};               %提取sys分子系数
den = sys.den{1};               %提取sys分母系数
printsys(num, den);             %输出系统传递函数

t = 0 : 0.005 : 15;             %设定仿真时间为15秒
[y, x, t] = step(num, den, t);  %得到15s内单位阶跃响应数据
plot(t, y);                     %绘制图像
grid;                           %显示网格
xlabel('时间(s)');            %横坐标说明
ylabel('系统响应');             %纵坐标说明

[z, p, k] = tf2zp(num, den);    %传函转化为零极点模式
zero_sys = zpk(z, p, k);
zero_sys
           

运行代码,输出两种形式的传递函数。

用Matlab建立传递函数模型

给系统加入阶跃信号得到响应:

用Matlab建立传递函数模型

继续阅读