控制系统仿真

  • 格式:docx
  • 大小:854.86 KB
  • 文档页数:18

控制系统仿真

实验报告

姓名:大葱哥

学号:

班级:测控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软件的仿真有了一定程度的认识,为以后的学习奠定了基础。

实验二 面向结构图的仿真

第一部分 线性系统仿真

一 实验目的

1. 掌握理解控制系统闭环仿真技术。

2. 掌握理解面向结构图的离散相似法的原理和程序结构。

3.掌握 MATLAB 中 C2D 函数的用法,掌握双线性变换的原理。

二 实验内容

1.编写仿真程序,实现无扰动时给定值阶跃仿真实验

仿真程序:

%面向结构图的离散相似法,线性模型

clc

clear all

%%%%%%%%%%%%%%%%%%%%%定义参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

A=2; %水箱横截面积

ku=0.1/0.5; %阀门流量系数

H10=1.5; %水箱1的平衡高度

H20=1.4; %水箱2的平衡高度

alpha12 = 0.25/sqrt(H10); %水箱1流向水箱2流量系数

alpha2 = 0.25/sqrt(H20); %水箱2流出水流量系数

R12=2*sqrt(H10)/alpha12; %线性化数学模型中的参数

R2=2*sqrt(H20)/alpha2; %线性化数学模型中的参数

H1SpanLo=0; %水箱1量程下限

H2SpanLo=0; %水箱2量程下限

H1SpanHi=2.52; %水箱1量程上限

H2SpanHi=2.52; %水箱2量程上限

Kp=1.78; %PI控制器比例系数 Ti=85; %PI控制器积分时间常数

R12*A

R12

Kc=Kp/Ti; %式(4)中参数

bc=Ti; %式(4)中参数

Kd = 1/A; %式(5)中参数

ad = 1/(A*R12); %式(5)中参数

a1 = 1/(A*R12); %式(6)中参数

K1 = ku/A; %式(6)中参数

a2 = 1/(A*R2); %式(7)中参数

K2 = 1/(A*R12); %式(7)中参数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%定义初值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

uc(1)=0; %Gc环节(8)的输入初值

xc(1)=0; %Gc环节(8)的状态初值

yc(1)=0; %Gc环节(8)的输出初值

ud(1)=0; %Gd环节(9)的输入初值

xd(1)=0; %Gd环节(9)的状态初值

yd(1)=0; %Gd环节(9)的输出初值

u1(1)=0; %G1环节(10)的输入初值

x1(1)=0; %G1环节(10)的状态初值

y1(1)=0; %G1环节(10)的输出初值

u2(1)=0; %G2环节(11)的输入初值

x2(1)=0; %G2环节(11)的状态初值

y2(1)=0; %G2环节(11)的输出初值

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

nCounter = 70; %迭代次数

T=10; %步长

k=1;

deltaQd=0; %扰动量

H20_percent=(H20-H2SpanLo)/(H2SpanHi-H2SpanLo)*100; %稳态工作点的液位百分比

H2=80; %给定液位百分比

tend = nCounter*T;

for t=T:T:tend