实验一基于Matlab/Simulink的控制系统仿真研究
一、实验目的
1)学习使用Matlab命令软件对控制系统进行时域特性仿真研究的基本方法。
2)学习使用Simulink工具箱对控制系统进行时域特性仿真研究的基本方法。
3)加深对各典型环节的理解。
4)研究二阶系统的特征参数,阻尼比和自然频率对系统动态性能的影响。
二、实验原理
1. 基于Matlab的时域特性分析
已知系统的闭环传递函数
试求系统的单位脉冲、单位阶跃、单位速度、单位加速度响应。
% 输入系统传递函数模型
num=[2 20 50];
den=[1 15 84 223 309 240 100];
t=0:0.1:20; % 生成时间向量
% 求系统的单位脉冲响应
subplot(2, 2, 1); % 设定子图形显示位置
impulse(num, den, t); % 求单位脉冲响应
ylabel('y(t)'); % 显示纵轴名称
title('单位脉冲响应'); % 显示图形名称
% 求系统的单位阶跃响应
subplot(2, 2, 2); % 设定子图形显示位置
step(num, den, t); % 求单位阶跃响应
ylabel('y(t)'); % 显示纵轴名称
title('单位阶跃响应'); % 显示图形名称
% 求系统的单位速度响应
subplot(2, 2, 3); % 设定子图形显示位置
u1=t; % 单位速度输入信号
plot(t, u1); % 绘制单位速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u1, t); % 求单位速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(10, 12, 't'); % 显示单位速度函数表达式
title('单位速度响应'); % 显示图形名称
% 求系统的单位加速度响应
subplot(2, 2, 4); % 设定子图形显示位置
u2=t.*t/2; % 单位加速度输入信号
plot(t, u2); % 绘制单位加速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u2, t); % 求单位加速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(11, 100, '1/2*t^2'); % 显示单位加速度函数表达式
title('单位加速度响应'); % 显示图形名称
2. 基于Simulink的时域特性分析
按图建立系统的Simulink模型,对不同的输入信号进行仿真,改变传递函数,观察仿真结果。
图1 控制系统Simulink仿真图
三、实验内容
1) 建立开环传递函数为的单位反馈系统控制模型,试用matlab命令求闭环系统的单位脉冲、单位阶跃、单位速度、单位加速度响应, 观察仿真结果,记录响应曲线。
2) 按图1建立系统的Simulink模型,分别令,改变输入信号、传递函数,观察仿真结果,记录响应曲线。
3) 试用Simulink对进行阶跃响应仿真研究,首先令,从小到大改变的值;其次令,从小到大改变的值,观察仿真结果,记录响应曲线。
四、实验步骤
1、首先打开Matlab软件,熟悉Matlab软件的工作界面及其编辑方法。
2、按图1建立系统的Simulink模型,对不同的输入信号进行仿真,改变传递函数,分别观察单位脉冲、单位阶跃、单位速度、单位加速度响应仿真结果。
3、试用Simulink对进行阶跃响应仿真研究,首先令,从小到大改变的值,分别取0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8;其次令=1,从小到大改变的值,分别取1、2、3、5、10、20、50、100,观察仿真结果,记录响应曲线。
图2 传递函数为 的系统输入响应曲线图
五、实验仿真图像
图3 控制系统Simulink模型仿真图
图4 传递函数为的单位脉冲响应曲线图
图5 传递函数为的单位阶跃响应曲线图
图6 系统 为1时的Simulink模型仿真图
图7 系统 为1时的响应曲线图
通常,工程实际中往往习惯把二阶系统设计成欠阻尼工作状态。此时,系统调节灵敏,响应快,且平稳性好。而过阻尼和临界阻尼系统的响应过程,虽然平稳性好,但响应过程缓慢。所以,采用欠阻尼瞬态响应指标来评价二阶系统的响应特性,具有较大实际意义。从我们可以看出它们的时域性能指标。欠阻尼状态下,改变的值,其输出曲线也会相应地改变,系统为衰减振荡过程,曲线达到稳定状态所需要的时间也不同,通过比较可以找出最合适的值。由图可知,在自然频率不变的情况下,阻尼比越小,上升时间越短,调节时间越长,超调量越大。
图8 为1时系统单位响应曲线图
图9 为1时控制系统的Simulink模型仿真图
图10 固定为1时控制系统的响应曲线图
图11 为1时控制系统的单位响应曲线
在固定为1的时候,改变的值,其输出曲线也不同,通过观察和比较可发现的最佳值。由图可知,在阻尼系数不变的情况下,自然频率越小,上升时间越大,调节时间越长,而与超调量无关。
六、实验总结与结论
通过本次实验,使我了解到了Matlab命令软件的使用方法,掌握了一些基本使用技巧,加深了对各种典型环节的理解,培养了自己的动手能力。Matlab和Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,利用Simulink功能模块可以快速的建立控制系统的模型,进行仿真和调试。
基于Matlab/Simulink 环境的仿真分析方法,通过Simulink工具箱所提供的基本模块,不需任何硬件,在单位阶跃信号作用,利用仿真实例很好地实现了对积分、惯性+积分+比例、振荡环节控制系统进行仿真研究,直接观察和分析积分、惯性+积分+比例、振荡环节控制系统输出性能的变化,验证了积分、惯性+积分+比例、振荡环节控制系统相关理论的正确性,在积分、惯性+积分+比例、振荡环节控制系统实验教学和科研上有很大实用价值,充分体现了Matlab/Simulink仿真直观和方便的特点。通过改变的值,加深了对二阶系统的单位响应的理解,清楚地学习到了当系统在欠阻尼、无阻尼、临界阻尼、过阻尼等状态下在响应曲线。
对于二阶振荡系统,一般工作在欠阻尼状态下,所以我们主要研究系统在0<<1状态下的响应曲线,观察和比较它们在曲线,可知道其响应曲线是一个衰减的振荡过程。在一定的值下,欠阻尼系统比临界阻尼系统更快地达到稳态值,与值在一定范围内的欠阻尼系统相比,过阻尼系统反应迟钝,动作很缓慢。当我们保持不变的情况下,阻尼比越小,上升时间越短,调节时间越长,超调量越大;当我们保持不变的情况下,自然频率越小,上升时间越大,调节时间越长,而与超调量无关。
总之,通过这次实验我还是学到蛮多东西的,希望以后能够有更多的机会做这样的实验,加强自己在各方面的能力。
七、附录
(一)传递函数为的命令
% 输入系统传递函数模型
num=[25];
den=[1 4];
t=0:0.1:20; % 生成时间向量
% 求系统的单位脉冲响应
subplot(2, 2, 1); % 设定子图形显示位置
impulse(num, den, t); % 求单位脉冲响应
ylabel('y(t)'); % 显示纵轴名称
title('单位脉冲响应'); % 显示图形名称
% 求系统的单位阶跃响应
subplot(2, 2, 2); % 设定子图形显示位置
step(num, den, t); % 求单位阶跃响应
ylabel('y(t)'); % 显示纵轴名称
title('单位阶跃响应'); % 显示图形名称
% 求系统的单位速度响应
subplot(2, 2, 3); % 设定子图形显示位置
u1=t; % 单位速度输入信号
plot(t, u1); % 绘制单位速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u1, t); % 求单位速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(10, 12, 't'); % 显示单位速度函数表达式
title('单位速度响应'); % 显示图形名称
% 求系统的单位加速度响应
subplot(2, 2, 4); % 设定子图形显示位置
u2=t.*t/2; % 单位加速度输入信号
plot(t, u2); % 绘制单位加速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u2, t); % 求单位加速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(11, 100, '1/2*t^2'); % 显示单位加速度函数表达式
title('单位加速度响应'); % 显示图形名称
(二)固定为1时的命令
% 输入系统传递函数模型
num=[1];
den=[1 0.2/0.4/0.6/0.8/1/1.2/1.4/1.6 1 ];
t=0:0.1:20; % 生成时间向量
% 求系统的单位脉冲响应
subplot(2, 2, 1); % 设定子图形显示位置
impulse(num, den, t); % 求单位脉冲响应
ylabel('y(t)'); % 显示纵轴名称
title('单位脉冲响应'); % 显示图形名称
% 求系统的单位阶跃响应
subplot(2, 2, 2); % 设定子图形显示位置
step(num, den, t); % 求单位阶跃响应
ylabel('y(t)'); % 显示纵轴名称
title('单位阶跃响应'); % 显示图形名称
% 求系统的单位速度响应
subplot(2, 2, 3); % 设定子图形显示位置
u1=t; % 单位速度输入信号
plot(t, u1); % 绘制单位速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u1, t); % 求单位速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(10, 12, 't'); % 显示单位速度函数表达式
title('单位速度响应'); % 显示图形名称
% 求系统的单位加速度响应
subplot(2, 2, 4); % 设定子图形显示位置
u2=t.*t/2; % 单位加速度输入信号
plot(t, u2); % 绘制单位加速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u2, t); % 求单位加速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(11, 100, '1/2*t^2'); % 显示单位加速度函数表达式
title('单位加速度响应'); % 显示图形名称
(三)固定为1时的命令
num=[1/4/9/25/100/400/2500/10000];
den=[1 2/4/6/10/20/40/100/200 1/4/9/25/100/400/2500/10000];
t=0:0.1:10; % 生成时间向量
% 求系统的单位脉冲响应
subplot(2, 2, 1); % 设定子图形显示位置
impulse(num, den, t); % 求单位脉冲响应
ylabel('y(t)'); % 显示纵轴名称
title('单位脉冲响应'); % 显示图形名称
% 求系统的单位阶跃响应
subplot(2, 2, 2); % 设定子图形显示位置
step(num, den, t); % 求单位阶跃响应
ylabel('y(t)'); % 显示纵轴名称
title('单位阶跃响应'); % 显示图形名称
% 求系统的单位速度响应
subplot(2, 2, 3); % 设定子图形显示位置
u1=t; % 单位速度输入信号
plot(t, u1); % 绘制单位速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u1, t); % 求单位速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(10, 12, 't'); % 显示单位速度函数表达式
title('单位速度响应'); % 显示图形名称
% 求系统的单位加速度响应
subplot(2, 2, 4); % 设定子图形显示位置
u2=t.*t/2; % 单位加速度输入信号
plot(t, u2); % 绘制单位加速度输入信号
hold on; % 图形保持,在同图中绘制响应曲线
lsim(num, den, u2, t); % 求单位加速度响应
ylabel('x(t), y(t)'); % 显示纵轴名称
text(11, 100, '1/2*t^2'); % 显示单位加速度函数表达式
title('单位加速度响应'); % 显示图形名称