资源描述
MATLAB/Simulink和控制系统仿真试验汇报
姓名: 喻彬彬
学号: K
试验1、MATLAB/Simulink仿真基础及控制系统模型建立
一、试验目标
1、掌握MATLAB/Simulink仿真基础知识;
2、熟练应用MATLAB软件建立控制系统模型。
二、试验设备
电脑一台;MATLAB仿真软件一个
三、试验内容
1、熟悉MATLAB/Smulink仿真软件。
2、一个单位负反馈二阶系统,其开环传输函数为。用Simulink建立该控制系统模型,用示波器观察模型阶跃响应曲线,并将阶跃响应曲线导入到MATLAB工作空间中,在命令窗口绘制该模型阶跃响应曲线。
3、某控制系统传输函数为,其中。用Simulink建立该控制系统模型,用示波器观察模型阶跃响应曲线,并将阶跃响应曲线导入到MATLAB工作空间中,在命令窗口绘制该模型阶跃响应曲线。
4、一闭环系统结构图所表示,其中系统前向通道传输函数为,而且前向通道有一个[-0.2,0.5]限幅步骤,图中用N表示,反馈通道增益为1.5,系统为负反馈,阶跃输入经1.5倍增益作用到系统。用Simulink建立该控制系统模型,用示波器观察模型阶跃响应曲线,并将阶跃响应曲线导入到MATLAB工作空间中,在命令窗口绘制该模型阶跃响应曲线。
四、试验汇报要求
试验汇报撰写应包含试验名称、试验内容、试验要求、试验步骤、试验结果及分析和试验体会。
五、试验思索题
总结仿真模型构建及调试过程中心得体会。
题1、
(1) 利用SimulinkLibrary窗口中【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网络图所表示。其中,为输入变量,为输出变量。求解这个系统传输函数模型,零极点增益模型和状态空间模型(假设,,,)。
2、已知某双环调速电流环系统结构图图所表示。试采取Simulink动态结构图求其线性模型。
题1:
步骤1
从数学上求出系统传输函数。
依据电路基础定理,列出该电路微分方程,以下:
同时还有
整理以上方程,并在零初始条件下,取拉普拉斯变换,可得:
代入具体数值可得
步骤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、已知某二阶系统传输函数为,(1)将自然频率固定为,,分析改变时系统单位阶跃响应;(2)将阻尼比固定为,分析自然频率改变时系统阶跃响应(改变范围为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所表示
图1系统零极点分布图
步骤3 求取阶跃响应
计算系统阶跃响应:能够采取MATLAB编程实现,还能够利用simulink对系统进行建模,直接观察响应曲线。MATLAB程序代码以下:
num=[20];den=[1 4 20];
[y.t.x]=steo(num,den)
plot(x,y);
grid on;
程序运行结果图2所表示
图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所表示
图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所表示
图7固定阻尼系数,自然频率改变时系统阶跃响应曲线
试验4 MATLAB/Simulink在根轨迹分析法中应用
一、试验目标
1、掌握MATLAB/Simulink绘制根轨迹函数;
2、掌握MATLAB/Simulink绘制根轨迹方法。
二、试验设备
电脑一台;MATLAB仿真软件一个
三、试验内容
1、已知单位负反馈控制系统开环传输函数。(1)画出这个系统根轨迹;(2)确定使闭环系统稳定增益值;(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('¸ù¹ì¼£Í¼')
输出结果:
试验代码3:
[k,poles]=rlocfind(sys)
输出结果:
[k,poles]=rlocfind(sys)
使用rltool进行分析:
K=6
阶跃响应曲线:
四、试验汇报要求
试验汇报撰写应包含试验名称、试验内容、试验要求、试验步骤、试验结果及分析和试验体会。
五、试验思索题
总结仿真模型构建及调试过程中心得体会。
试验5 MATLAB/Simulink在频域分析法中应用
一、试验目标
1、掌握MATLAB绘制伯德图和乃奎斯特曲线;
2、熟练应用MATLAB分析稳定裕度。
二、试验设备
电脑一台;MATLAB仿真软件一个
三、试验内容
1、已知晶闸管-直流电机开环系统结构图图所表示。试用Simulink动态结构图进行频域分析并求频域性能指标。
四、试验汇报要求
试验汇报撰写应包含试验名称、试验内容、试验要求、试验步骤、试验结果及分析和试验体会。
五、试验思索题
总结仿真模型构建及调试过程中心得体会。
步骤1
在SIMULINK中建立该系统动态模型,以下图,并将模型存为“Samples_7_9.mal”。
步骤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、某单位负反馈控制系统开环传输函数,设计一个串联校正装置,使校正后系统静态速度误差系数,相角裕度,增益裕量。
步骤1:确定开环传输函数中系数K。
系统静态速度误差系数计算公式为
LimsG(s)lim= K*S =lim K = K
S→0 s→0 s(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<K<2。为了验证这一结论,能够绘制系统幅频特征曲线和Nyquist曲线,代码以下
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);
结果图所表示
四、试验汇报要求
试验汇报撰写应包含试验名称、试验内容、试验要求、试验步骤、试验结果及分析和试验体会。
五、试验思索题
总结仿真模型构建及调试过程中心得体会。
展开阅读全文