当前位置:文档之家› 学生--PID控制MATLAB仿真实验

学生--PID控制MATLAB仿真实验


图 1-2 连续系统 PID 的 Simulink 仿真程序 连续系统的模拟 PID 控制正弦响应结果如图 1-3 所示。
图 1-3 连续系统的模拟
PID 控制正弦响应 m 文件作图。
仿真方法二 :在仿真一的基础上,将仿真结果输出到工作空间中,并利用
仿真程序: ex1_2.mdl ,程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中
统的阶跃信号、正弦信号和方波信号的位置响应,设计离散 时是阶跃跟踪, S=2 时为方波跟踪, 求出 G(s) 对应的离散形式 S=3 时为正弦跟踪。
G ( z)
Y ( z) U ( z) 1) 1)
,其中 Y(z) 和 U(z) 是关于 z 的多项式,则可以得到其对应的
差分表达式
yout (k )
den( 2) y ( k num( 2)u ( k
%根据差分方程计算系统当前输出
y(k)
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3; error(k)=rin(k)-yout(k); %当前误差
%更新 u(k-1)
、 u(k-2)
、 u(k-3)
u(k)
k p e( k )
T TI
k
k
e( j )
j 0
TD T kd
(e( k )
e( k e( k 1)
1))
k p e( k )
ki
j 0
e( j )T
e( k )
T
PID 控制器的输入) , u 为控制信号(即控制器的输出) 。
式中,
ki
kp TI
, kd
k pT D , e 为误差信号(即
den( 3) y( k num( 3) u (k
2) 2)
den( 4) y( k num (4 )u ( k
3) 3)
仿真程序: ex5.m
%PID Controller clear all ;
5
close
all
;
ts=0.001;
%采样周期 % 被控对象连续传递函数
sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts, [num,den]=tfdata(dsys, 'z'
); %转换成离散 z 传递函数的形式 'v' ); %提取 z 传递函数中的分子和分母多项式系数
u_1=0.0;u_2=0.0;u_3=0.0; y_1=0.0;y_2=0.0;y_3=0.0; x=[0,0,0]'; error_1=0;
%u(k-1) %y(k-1)
、 u(k-2) 、 y(k-2)
S=input(
for
k=1:1:1500 %各采样时刻
time(k)=k*ts;
if
S==1
%阶跃输入时 % 各项 PID 系数 % 阶跃信号输入
kp=0.50;ki=0.001;kd=0.001; rin(k)=1;0;ki=0.001;kd=0.001; rin(k)=sign(sin(2*2*pi*k*ts)); elseif S==3
图 1-5 Simulink 子系统
2
实验二 数字 PID 控制 计算机控制是一种采样控制, 一、位置式 PID 控制算法 按模拟 PID 控制算法,以一系列的采样时刻点 以一阶后向差分近似代替微分,可得离散 kT 代表连续时间 t ,以矩形法数值积分近似代替积分, PID 位置式表达式: 它只能根据采样时刻的偏差值计算控制量。 PID 控制中,使用的是数字 因此连续 PID 控制算法不能 PID 控制器。 直接使用,需要采用离散化方法。在计算机
); %输入输出信号图 );
'time(s)'
); % 误差图
Ex4 被控对象是一个三阶传递函数
523500 s 87 .35s
2
,采用 Simulink 与 m 文件相结合的形式,
10470 s
m 文件实现。输入信号为
利用 ODE45 方法求解连续对象方程,主程序由 一个采样周期 1ms 的正弦信号。采用
、 y(k-1)
、 y(k-2)
、 y(k-3)
u_3=u_2;u_2=u_1;u_1=u(k);
6
y_3=y_2;y_2=y_1;y_1=yout(k);
x(1)=error(k); x(2)=(error(k)-error_1)/ts; x(3)=x(3)+error(k)*ts; error_1=error(k); end
1
A
0 0
close
1 25
all
,B
0 133
,C
1 0 ,D
0 ,如图 1-4 所示。
m 文件作图程序: ex1_2plot.m
;
plot(t,rin, xlabel( ylabel(
'k' 'time(s)' 'r,y' );
,t,yout, );
'k'
);
二、线性时变系统的 Ex2 设被控对象为
和 e(k-1)
figure(1); plot(time,rin, xlabel( figure(2); plot(time,rin-yout, xlabel( 'time(s)' 'r' ),ylabel( ); 'error'
3
'r'
,time,yout, ),ylabel(
'b' 'rin,yout'
Simulink 模块实现,控制器由
PID 方法设计控制器,其中
kp
1. 5, ki
2, k d
0.05 。
误差初始化由时钟功能实现,从而在
m 文件中实现了误差的积分和微分。
4
控制主程序: ex4.mdl
图 2-1 Simulink 仿真程序 控制子程序: ex4f.m
function persistent [u]=ex4f(u1,u2) errori error_1 %u1 为 Clock , u2 为图 2-1 中 Sum 模块输出的误差信号 e 的采样值
在仿真过程中,可根据实际情况,对控制器的输出进行限幅。 二、连续系统的数字 连续系统的数字 PID 控制仿真 DSP PID 控制可实现 D/A 及 A/D 的功能,符合数字实时控制的真实情况,计算机及
的实时 PID 控制都属于这种情况。 Ex3 设被控对象为一个电机模型传递函数
G ( s)
1 Js
%各项 PID 系数 %方波信号输入
kp=1.5;ki=1.0;kd=0.01; rin(k)=0.5*sin(2*2*pi*k*ts); end u(k)=kp*x(1)+kd*x(2)+ki*x(3);
%各项 PID 系数 % 正弦信号输入
%PID 控制信号输出 u(k)
%控制信号输出限幅 if u(k)>=10 u(k)=10; end if u(k)<=-10 u(k)=-10; end
tt 时刻对应的 y ,第二列为 tt 时刻对应的 y 导数
xk = xx(end,:); yout(k)=xk(1);
% A/D ,提取 xx 中最后一行的值,即当前 %xk(1) 即为当前系统输出采样值 y(k)
y 和 y 导数
e(k)=rin(k)-yout(k); de(k)=(e(k)-e_1)/ts;
计算机控制技术实验指导书 ( MATLAB 版)
机 电 学 院 杨蜀秦 编
2012-11-19
实验一 连续系统的模拟 一、基本的 PID 控制 在模拟控制系统中, 控制器最常用的控制规律是
比例 r(t) e(t) 微分 积分 + +
PID 仿真 1-1 所示。
PID 控制。模拟 PID 控制系统原理框图如图
控制主程序 ex3.m
clear close all all ; ;
ts=0.001; xk=zeros(2,1); e_1=0;
%采样周期 % 被控对象经 A/D 转换器的输出信号 初值 y 的初值 %误差 e(k-1)
3
u_1=0;
%控制信号 u(k-1)
初值
for
k=1:1:2000
%k为采样步数 %time 中存放着各采样时刻
2
Bs
,式中
J=0.0067,B=0.1 。输入信号为
0 .5 sin( 2 t ) ,采用 PD 控制,其中 k p Y ( s) U ( s) Js
2
20, kd
0.5 。采用 ODE45 方法求解连续被控对象方程。
d y dt
2 2
因 为
G ( s)
1 Bs
, 所

J
B
dy dt
u , 另
y1
y, y2
y , 则
y2
function u=para;
y y 1 2 ,因此连续对象微分方程函数 ( B / J (1 ) / yJ ) * u 2
dy = ex3f(t,y,flag,para)
ex3f.m 如下
J=0.0067;B=0.1;
dy=zeros(2,1); dy(1) = y(2); dy(2) = -(B/J)*y(2) + (1/J)*u;
if
u1==0 errori=0 error_1=0
% 当 Clock=0
相关主题