admin 管理员组

文章数量: 1086019


2023年12月18日发(作者:matlab怎么plot其中一段数据)

MATLAB/Simulink与控制系统仿真实验报告

姓名: 喻彬彬

学号: K031541725

实验1、MATLAB/Simulink仿真基础及控制系统模型的建立

一、实验目的

1、掌握MATLAB/Simulink仿真的基本知识;

2、熟练应用MATLAB软件建立控制系统模型。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、熟悉MATLAB/Smulink仿真软件。

2、一个单位负反馈二阶系统,其开环传递函数为G(s)10。用Simulink建立该s3s2控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。

3、某控制系统的传递函数为Y(s)G(s)s50。用Simulink建,其中G(s)2X(s)1G(s)2s3s立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。

4、一闭环系统结构如图所示,其中系统前向通道的传递函数为20G(s)s0.53,而且前向通道有一个[-0.2,0.5]的限幅环节,图中用N表s0.1s12s220s示,反馈通道的增益为1.5,系统为负反馈,阶跃输入经1.5倍的增益作用到系统。用Simulink建立该控制系统模型,用示波器观察模型的阶跃响应曲线,并将阶跃响应曲线导入到MATLAB的工作空间中,在命令窗口绘制该模型的阶跃响应曲线。

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

题1、

(1)利用Simulink的Library窗口中的【File】→【New】,打开一个新的模型窗口。

(2)分别从信号源库(Sourse)、输出方式库(Sink)、数学运算库(Math)、连续系统库(Continuous)中,用鼠标把阶跃信号发生器(Step)、示波器(Scope)、传递函数(Transfern

Fcn)和相加器(Sum)4个标准功能模块选中,并将其拖至模型窗口。

(3)按要求先将前向通道连好,然后把相加器(Sum)的另一个端口与传递函数和示波器的线段连好,形成闭环反馈。

(4)双击传递函数。打开其“模块参数设置”对话框,并将其中的numerator设置为“[10],”denominator设置为“[1 3 0]”,将相加器设置为“+-。”

(5)绘制成功后,如图1所示。

(6)对模型进行仿真,运行后双击示波器,得到系统的阶跃响应曲线如图2 所示。

图1

图2

题2:

分别将Simulink Library Browser 中的以下模块依次拖到untitled窗口中,连接后便得到整个控制系统的模型,如图3所示。

图3

对模型进行仿真,运行后双击示波器,得到系统的阶跃响应曲线如图4所示。

图4

题3:

(1)在MATLAB中的Simulink Library Browser 窗口下找到符合要求的模块,搭建模型,如图5所示。

图5

(2)修改各模块参数,运行仿真,单击“start”,点击示波器,得到如下结果,图6

图6

实验2 MATLAB/Simulink在控制系统建模中的应用

一、实验目的

1、掌握MATLAB/Simulink在控制系统建模中的应用;

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、给定RLC网络如图所示。其中,ui(t)为输入变量,u0(t)为输出变量。求解这个系统的传递函数模型,零极点增益模型以及状态空间模型(假设R11,R21,C1F,L1H)。

2、已知某双环调速的电流环系统的结构图如图所示。试采用Simulink动态结构图求其线性模型。

题1:

步骤1

从数学上求出系统传递函数。

根据电路基本定理,列出该电路的微分方程,如下:

R1i1Ldi3u0ui

dti1i2i3同时还有

uoi3R2

i2Cddi3uoLdtdt整理以上方程,并在零初始条件下,取拉普拉斯变换,可得:

G(s)Uo(s)Ui(s)1LR1(R1Cs1)s1RR22

代入具体数值可得G(s)1

2s2s2步骤2 使用MATLAB程序代码如下。

clear all;

num=[0,1];den=[1 2 2];

sys_tf=tf(num,den)

[z,p,k]=tf2zp(num,den)

sys_zpk=zpk(z,p,k)

[A,B,C,D]=zp2ss(z,p,k);

sys_ss=ss(A,B,C,D)

step(sys_tf);

[A,B,C,D]=linmod('Samples_4_12')

[num,den]=ss2tf(A,B,C,D);

printsys(num,den,'s');

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

实验3 MATLAB/Simulink在时域分析法中的应用

一、实验目的

1、掌握时域分析中MATLAB/Simulink函数的应用;

2、掌握MATLAB/Simulink在稳定性分析中的应用。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、某随动系统的结构如图所示。利用MATLAB完成如下工作:(1)对给定的随动系统建立数学模型;(2)分析系统的稳定性,并且绘制阶跃响应曲线;(3)计算系统的稳态误差;(4)大致分析系统的总体性能,并给出理论上的解释。

2、已知某二阶系统的传递函数为G(s)n,(1)将自然频率固定为n1,22s2nsn分析变化时系统的单位阶跃响应;(2)将阻尼比固定为0.55,0,0.1,...,1,2,3,5,分析自然频率n变化时系统的阶跃响应(n变化范围为0.1~1)。

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

题1:

步骤1 求取系统的传递函数。

首先需要对系统框图进行化简。不难看出,题中给出的系统包含两级反馈:外环是单位负反馈;内环则是二阶系统与微分环节构成的负反馈。可以利用MATLAB中的 feedback函数计算出系统的传递函数,代码如下。

cic;

clear aii;

num1=[20];den1=[1 2 0];

sys1=tf(num1,den1);

num2=[0.1 0];den2=[0 1];

sys2=tf(num1,den2);

sys_inner=feedback(sys1,sys2);

sys_outer=feedback(sys_inner,1)

程序运行结果为:

Transfer function:

20

--------------

s^2 + 4 s + 20

这样就得到了系统的总传递函数,即G(s)= 20

S^2+4s+20

步骤2 进行稳态分析。

根据求得的传递函数,对系统进行稳态性分析,代码如下:

den=[1 4 20];

roots(den)

pzmap(sys_outer);

grid on;

程序运行结果如下:

ans =-2.0000 + 4.0000i

-2.0000 - 4.0000i

系统的零极点分布图如图1所示

Pole-Zero Map40.40.280.20.140.0940.043.532.5230.5620.811.510.5Imaginary

Axis00.5-10.8-2-30.560.4-4-2-1.8-1.6-1.40.28-1.2-1Real Axis0.2-0.80.14-0.60.09-0.411.522.530.043.5-0.240

图1系统的零极点分布图

步骤3 求取阶跃响应

计算系统的阶跃响应:可以采用MATLAB编程实现,还可以利用simulink对系统进行建模,直接观察响应曲线。MATLAB程序代码如下:

num=[20];den=[1 4 20];

[y.t.x]=steo(num,den)

plot(x,y);

grid on;

程序运行结果如图2所示

1.41.210.80.60.40.2000.511.522.5

图2系统阶跃响应曲线

采用simulink对系统进行建模,如图3所示

图3利用Simulink对系统建模

可以从scope中得到系统的不同响应曲线,如下图4,这与编程的结果完全相同的。

图4系统阶跃响应曲线

步骤4 分析系统的响应特性。

在上面的语句[y.t.x]=steo(num,den)执行之后,变量y中就存放了系统阶跃响应的具体数值。从响应曲线中不难看出,系统的稳态值为1。可以利用如下代码计算系统的超调量。

y_stable=1;

max_response=max(y);

sigma=(max_respomse-y_stable)/y_stable

程序运行结果为

sigma =0.2077

同时可看出,系统的稳态误差为0。示波器error的波形显示如图5所示,可见,当阶跃输入作用系统2s后,输出就基本为1了。

图5系统误差曲线

还可以精确计算出系统的上升时间、峰值时间及调整时间。如上所述,y中储存了系统阶跃响应的数据;同时,x中方存放了其中每个数据对应的时间,编写代码如下。

for i =1:length(y)

If y(i)>y_stable

break;

end

end

tr=x(i)

[max_response,index]=max(y);

tp=x(index)

for i =1:length(y)

If max(y(i:length(y)))<=1.02*y_stable

If min(y(i;length(y)))>0.98*y_stable

break

end

end

end

ts=x(i)

程序运次结果为

tr =0.5298

tp =0.7947

ts =1.9074

即上升时间为0.52s,峰值时间为0.77s,并且系统在经过1.88s后进入稳态。

题2

利用MATLAB建立控制系统的数学模型,并且同时显示Wn=1,阻尼系数取不同值时系统的阶跃响应曲线,代码如下

clc;

clear;

t=linspace(0,20,200)’;

omega=1;

omega2=omega^2;

zuni=[0,0.1,0.2,0.5,1,2,3,5];

num=omega2;

for k=1:8

den=[1 2 * zuni(k)*omega omega2];

sys=tf(num,den);

y(:,k)=step(sys,t);

end

figure(1);

plot(t,y(:,1:8));

grid;

gtext(‘zuni=0’);gtext(‘zuni=0.1’);gtext(‘zuni=0.2’);gtext(‘zuni=0.5’);

gtext(‘zuni=1’);gtext(‘zuni=2’);gtext(‘zuni=3’);gtext(‘zuni=5’);

运行程序,结果如图6所示

21.81.61.41.210.80.60.40.200zuni=0zuni=0.1zuni=0.2zuni=0.5zuni=1zuni=2zuni=3zuni=524681

图6固定自然频率,阻尼比变化时系统的阶跃响应曲线

利用MATLAB在一幅图像的上绘制阻尼系数=0.55,Wn从0.1变化到1时系统的阶跃响应曲线,代码如下

clc;

clear;

t=linspace(0,20,200)’;

zuni=0.55;

omega=[0.1,0.2,0.4,0.7,1];

omega2=omega^2;

for k=1:5

num=omega2(k);

den=[1 2 * zuni*omega(k) omega2(k)];

sys=tf(num,den);

y(:,k)=step(sys,t);

end

figure(2);

plot(t,y(:,1:5));

grid;

gtext(‘omega=0.1’);gtext(‘omega=0.2’);gtext(‘omega=0.4’);

gtext(‘omega=0.7’);gtext(‘omega=1.0’);

运行代码,结果如图7所示

1.41.2omega=1.0omega=0.70.8omega=0.4omega=0.2omega=0.110.60.40.2161820

图7固定阻尼系数,自然频率变化时系统的阶跃响应曲线

实验4 MATLAB/Simulink在根轨迹分析法中应用

一、实验目的

1、掌握MATLAB/Simulink绘制根轨迹函数;

2、掌握MATLAB/Simulink绘制根轨迹的方法。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、已知单位负反馈控制系统的开环传递函数G(s)k(s1)。(1)画出这个s(s1)(s4)系统的根轨迹;(2)确定使闭环系统稳定的增益值k;(3)分析系统的阶跃响应性能;(4)利用rltool对系统的性能进行分析。

实验代码1:

clc;

clear;

num=[1 1];

den=conv([1 0],conv([1 -1],[1 4]));

sys=tf(num,den)

输出结果:

Transfer function:

s + 1

-----------------

s^3 + 3 s^2 - 4 s

实验代码2:

rlocus(sys);

grid on;

title('¸ù¹ì¼£Í¼')

输出结果:

根轨迹图150.38100.5250.8Imaginary

Axis0.260.190.130.0850.System: sysGain: 5.08Pole: 0.0797 + 1.26iDamping: -0.063Overshoot (%): 122Frequency (rad/sec): 1.2600.8-50.52-100.380.26-15-5-40.19-30.13-2Real Axis0.085-10.012

实验代码3:

[k,poles]=rlocfind(sys)

输出结果:

[k,poles]=rlocfind(sys)

根轨迹图1.51.50.01950.0170.0140.0110.00850.00550.0031.451.45Imaginary

Axis1.40.02251.41.351.351.31.3-0.03-0.025-0.02-0.015-0.01-0.005Real Axis00.0050.010.0150.02

使用rltool进行分析:

K=6

阶跃响应曲线:

Step Response21.81.61.41.2Amplitude10.80.60.40.2Time (sec)

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

实验5 MATLAB/Simulink在频域分析法中的应用

一、实验目的

1、掌握MATLAB绘制伯德图和乃奎斯特曲线;

2、熟练应用MATLAB分析稳定裕度。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、已知晶闸管-直流电机开环系统结构图如图所示。试用Simulink动态结构图进行频域分析并求频域性能指标。

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

步骤1

在SIMULINK中建立该系统的动态模型,如下图,并将模型存为“Samples_7_。”

步骤2求取系统的线性状态空间模型,并求取频域性能指标。

在MATLAB命令窗口中运行以下命令。

[A,B,C,D]=linmod('Samples_7_9');

sys=ss(A,B,C,D);

margin(sys);

程序运行后,输出如下图所示曲线:

从图中可以看出:

幅值裕度GM=26.4dB,穿越频率为152rad/sec;

相位裕度PM=54deg,穿越频率为25.5rad/sec。

实验6 MATLAB_Simulink在控制系统校正中的应用

一、实验目的

1、掌握建立控制系统的数学模型及设计系统的串联校正装置;

2、了解校正前后系统性能的比较。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、某单位负反馈控制系统的开环传递函数G(s)k,设计一个串联的校s(s1)(s2)正装置,使校正后的系统静态速度误差系数10s,相角裕度45,增益裕量10dB。

步骤1:确定开环传递函数中的系数K。

系统的静态速度误差系数计算公式为

LimsG(s)lim= K*S =lim K = K

S→0 s→0

1s(s+1)(s+2)

s→0 (s+1)(s+2) 2

根据题目要求 ,校正后的系统静态误差系数最小为10s*-1,因此可求得K=20,故可求得系统的开环传递函数为G(s)= 20

S(s+1)(s+2) 。

步骤2:建立控制系统的数学模型

代码如下:

clc;

clear;

num_open = [0 20];

den_open = conv(conv([1 0],[1 1]),[1 2]);

sys_open = tf(num_open,den_open)

步骤3:分析系统的动态特性

代码如下:

[Gm, Pm, Wcg, Wcp] = margin(sys_open)

margin(sys_open);

运行结果为:

Gm =0.3000

Pm =-28.0814

Wcg = 1.4142

Wcp =2.4253

系统响应曲线如图1

图1

步骤4:设计系统的串联校正装置

首先设计滞后环节,假定系统增益穿越频率为1,取零极点之比为10,系统响应曲线如图2

图2

相应代码如下:

num_zhihou = [1 0.1];

den_zhihou = [1 0.01];

sys_zhihou = tf(num_zhihou, den_zhihou);

sys_new = sys_open * sys_zhihou

margin(sys_new);

再设计超前校正,系统响应曲线如图3

图3

不难看出此时闭环系统的增益裕量为13.3,相角裕量为52.5,增益穿越频率为1.37;各项参数均符合题设要求。

相应代码如下:

num_chaoqian = [1 0.5]; den_chaoqian = [1 5];

sys_chaoqian = tf(num_chaoqian,den_chaoqian);

sys_new = sys_new * sys_chaoqian;

margin(sys_new);

对比校正前后系统的频率响应如图4

图4

代码如下:

figure(1);

bode(sys_open);

hold on;

bode(sys_new);

gtext('УÕýǰµÄ'); gtext('УÕýºóµÄ'); gtext('УÕýǰµÄ'); gtext('УÕýºóµÄ');

grid on

综上所述,校正后的开环传递函数为

20 s^2 + 12s+1

----------------------------------

s^5+ 8.01 s^4+ 17.08 s^3 + 10.17 s^2+0.1s

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实

验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

实验7 MATLAB/Simulink在非线性系统中的应用

一、实验目的

1、掌握非线性系统阶跃响应的分析。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、给定如图所示的单位负反馈系统。在系统中分别引入不同的非线性环节(饱和、死区和磁滞),观察系统的阶跃响应,并且分析、比较不同的非线性环节对系统性能的影响。

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。

步骤1 利用MATLAB中的simulink工具箱,对题设控制系统进行建模,如下图1,没有任何非线性环节的系统,其阶跃响应曲线如下图2。

图1

图2

步骤2 在系统中加入饱和非线性环节,系统框图3所示,其中,饱和非线性环节的输出上限为0.1,输出下限为-0.1;阶跃信号幅值为1

图3

利用simulink进行仿真,得到的阶跃响应曲线如图4

图4

为了比较饱和非线性环节的输出上下限变化时系统阶跃响应的不同,可以利用simulink中的To Workspace模块,将多次仿真的结果记录到工作空间的不同数组中,并且绘制在同以一幅图像上,此时,系统框图如图5。

图5

设定饱和非线性环节输出上限为0.05,输出下限为-0.05,将仿真的结果记录到工作空间中的变量out1中;输出上限为0.1输出下限为-0.1时,仿真结果存放在out2中;输出上限为0.2,输出下限为-0.2时,仿真结果存放在out3中;输出上限为0.5,输出下限为-0.5时,仿真结果存放在out4中。

将4种情况下系统的阶跃响应曲线绘制在同一幅图像中,代码如下。

plot(tout1,out1);

hold on;

grid on;

gtext('0.05');

plot(tout2,out2);

gtext('0.1');

plot(tout3,out3);

gtext('0.2');

plot(tout4,out4);

gtext('0.5');

运行程序,结果如下图6:

图6

从图6中可以看出,当饱和非线性环节的输出范围较窄时,系统的阶跃响应速度较慢,上升时间长;同时,超调量较小,振荡不明显;随着输出范围的扩大,系统的响应速度加快,上升时间大大减少,同时伴有显著的振荡。

这是因为饱和环节会对信号起到限幅作用。不难想象,限制作用越强,系统的输出越

不容易超调,响应也会越慢,这从图6中夜可以看出这一趋势。

步骤3 在系统中引入死区非线性环节,系统框图如图7所示。其中,死区范围为[-0.1,0.1];

阶跃信号幅值为1 。

图7

利用simulink进行仿真,得到的阶跃响应曲线如图7所示。

同样,为了对比范围不同时系统的阶跃响应,采用Simulink 中的To Workspace模块,将仿真的结果保存在工作空间的数组里。绘制阶跃响应曲线的代码如下:

plot(tout1,out1);

hold on;

grid on;

gtext('0.2’);

plot(tout2,out2);

gtext('0.5’);

plot(tout3,out3);

gtext('1.0’);

plot(tout4,out4);

gtext('2.0’);

运行程序,结果如图8:

图8

图中曲线上标注的0.2、0.5、1.0、2.0表示死区范围,不难看出,随着死区范围的增加,系统开始响应阶跃输入信号的时刻也逐渐推迟。这是因为死区环节会将死区内的输入“忽略”,使得系统的响应变慢。

步骤4 尝试在系统中同时加入死区单元和饱和单元,系统框图如图9所示。

图9

利用simulinh进行仿真,得到的阶跃响应曲线如图10所示:

图10

步骤5 在系统中引入滞环非线性环节。结果如下:

实验8 MATLAB/Simulink在离散控制系统中的应用

一、实验目的

1、掌握

2、了解采样周期对离散系统稳定性的影响。

二、实验设备

电脑一台;MATLAB仿真软件一个

三、实验内容

1、建立题目中要求的数学模型,MATLAB代码如下。

clc;

clear;

Ts = 1;

num = [1,1];

den = [1,0,0];

sys_continue = tf(num,den)

sys_discrete = c2d(sys_continue,Ts,'zoh')

sys_k = 1;

sys_open = sys_k * sys_discrete

运行结果如下

Transfer function:

1.5 z - 0.5

-------------

z^2 - 2 z + 1

Sampling time: 1

2、绘制系统的根轨迹。

代码如下

figure(1);

rlocus(sys_discrete);

运行结果如图1所示。

图1

从图中可以读到交点出的开环增益为K=0;也就是说,使闭环系统稳定的K的范围是0

sys_k = 2;

figure(2);

margin(sys_k * sys_discrete);

figure(3);

[dnum,dden] = tfdata(sys_k * sys_discrete,'v')

dnyquist(dnum, dden, Ts)

grid on;

系统幅频特性曲线

Nyquist曲线

从图中可以看出,K=2时,系统处于临界稳定状态,Nyquist曲线恰好穿过(-1,0)点。可以确,系统稳定时,K的取值范围是(0,2)。

3、分析系统的阶跃响应。

给K 赋予不同的值,代码如下。

sys_k = 1;

figure(4);

sys_close = feedback(sys_k * sys_discrete,1);

[dnumc,ddenc] = tfdata(sys_close,'v');

dstep(dnumc,ddenc,25);

sys_k = 2;

figure(5);

sys_close = feedback(sys_k * sys_discrete,1);

[dnumc,ddenc] = tfdata(sys_close,'v');

dstep(dnumc,ddenc,25);

sys_k = 3;

figure(6);

sys_close = feedback(sys_k * sys_discrete,1);

[dnumc,ddenc] = tfdata(sys_close,'v');

dstep(dnumc,ddenc,25);

运行结果如图所示

4、分析采样周期对系统稳定性的影响。

取TS=0.5和TS=2,代码如下

sys_k = 2;

figure(7);

Ts = 0.5;

sys_discrete = c2d(sys_continue,Ts,'zoh')

sys_close = feedback(sys_k * sys_discrete,1);

[dnumc,ddenc] = tfdata(sys_close,'v');

dstep(dnumc,ddenc,25);

sys_k = 2;

figure(8);

Ts = 2;

sys_discrete = c2d(sys_continue,Ts,'zoh')

sys_close = feedback(sys_k * sys_discrete,1);

[dnumc,ddenc] = tfdata(sys_close,'v');

dstep(dnumc,ddenc,25);

结果如图所示

四、实验报告要求

实验报告撰写应包括实验名称、实验内容、实验要求、实验步骤、实验结果及分析和实验体会。

五、实验思考题

总结仿真模型构建及调试过程中的心得体会。


本文标签: 系统 阶跃 实验 响应 曲线