控制系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制系统仿真实验报告
姓名:大葱哥
学号:
班级:测控1202
2015.10.28
实验一经典的连续系统仿真建模方法
一实验目的
1.了解和掌握利用仿真技术对控制系统进行分析的原理和步骤。
2.掌握机理分析建模方法。
3.深入理解一阶常微分方程组数值积分解法的原理和程序结构,学习用Matlab 编写数值积分法仿真程序。
4.掌握和理解四阶Runge-Kutta 法,加深理解仿真步长与算法稳定性的关系。
二实验内容
1.编写四阶Runge_Kutta 公式的计算程序,对非线性模型(3)式进行仿真。
仿真程序:
主程序:
clc
clear all
u=zeros(2,1);
u(1)=0.5%稳态
%u(1)=0.55;%阀位增大%10
%u(1)=0.45;%阀位减小%10
u(2)=0.15;
h=zeros(1,2);
h(1,1)=1.5;
h(1,2)=1.4;
hStep = 10;
Hlevel = h;
nCounter = 25;
for t=0:hStep:(nCounter-1)*hStep
h = Z06_SystemSimulation_Lab01_Nonlinear_RK4(hStep,t,h,u);
Hlevel=[Hlevel;h];
end
figure(1)
plot([0:hStep:nCounter*hStep]',Hlevel)
grid
四阶龙格库塔算法:
function RK4_Result =
Z06_SystemSimulation_Lab01_Nonlinear_RK4(h,t0,x0,u0)
K1=Z06_SystemSimulation_Lab01_Linear_dxCompute(t0,x0,u0);
K2=Z06_SystemSimulation_Lab01_Linear_dxCompute(t0+h/2,x0+h*K1/2,u0); K3=Z06_SystemSimulation_Lab01_Linear_dxCompute(t0+h/2,x0+h*K2/2,u0); K4=Z06_SystemSimulation_Lab01_Linear_dxCompute(t0+h,x0+h*K3,u0);
RK4_Result = x0 + h*(K1+2*K2+2*K3+K4)/6;
(1)将阀位u 增大10%和减小10%,观察响应曲线的形状;
稳态仿真曲线:
增大10%:
减小10%:
(2)研究仿真步长对稳定性的影响,仿真步长取多大时RK4 算法变得不稳定?
仿真步长的选取范围可以通过理论计算获知,这里我们通过仿真得到当步长大于63时,曲线发散,系统不再稳定,发散曲线如下图:
(3)利用MATLAB 中的ode45()函数进行求解,比较与(1)中的仿真结果有何区别。
2. 编写四阶Runge_Kutta 公式的计算程序,对线性状态方程(18)式进行
仿真
仿真程序
clc
clear all
close all
u=zeros(2,1);
u(1)=0.0;%稳态
% u(1)=0.05;%阀位增大%10
% u(1)=-0.05;%阀位减小%10
u(2)=0;
h=zeros(1,2);
h(1,1)=0;
h(1,2)=0;
hStep = 10;
Hlevel = h;
nCounter = 25;
for t=0:hStep:(nCounter-1)*hStep
h = Z06_SystemSimulation_Lab01_Linear_RK4(hStep,t,h,u);
Hlevel=[Hlevel;h];
end
Hlevel(:,1) = Hlevel(:,1)+1.5;
Hlevel(:,2) = Hlevel(:,2)+1.4;
figure(3)
plot([0:hStep:nCounter*hStep]',Hlevel)
grid
hold on
(1)将阀位增大10%和减小10%,观察响应曲线的形状;
稳态仿真曲线:
阀位增大%10:
阀位减小%10:
(2)研究仿真步长对稳定性的影响,仿真步长取多大时RK4 算法变得不稳定?
当步长大于62时,算法变得不再稳定
(3)阀位增大10%和减小10%,利用MATLAB 中的ode45()函数进行求解阶跃响应,比较与(1)中的仿真结果有何区别。
三思考题
1.讨论仿真步长对稳定性和仿真精度的影响。
仿真步长越长,系统越倾向于不稳定,仿真步长越短,系统越稳定,但是需要的仿真时间越长。
2.你是怎样实现阀位增大和减小10%的?对于非线性模型和线性模型方法一样吗?
通过改变u(1)的初值可以实现对阀位的增大和减小,由于线性模型法是对变量的变化量进行计算的,而非线性模型法是直接对变量进行计算,所以两种方法实现对阀位的增大和减小方面存在一些区别,不完全一致。
四实验总结
通过本次实验我学会了Matlab的基本使用方法,对该软件有了一定程度的认识,同时对仿真步长对系统的稳定性和仿真精度的关系有了一定的理解,对一阶常微分方程组数值积分解法的原理和程序结构有了进一步的掌握,深入了解了Runge-Kutta法,对MATLAB软件的仿真有了一定程度的认识,为以后的学习奠定了基础。