数字PID的仿真实验例子
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用增量式PID,采用脚本编程实现对上面对象
的控制,并整定PID参数
被控对象为
400 G0 (s) s2 50s
采用零阶保持器离散化,采样时间取0.001s,离 散化得:
G0 (z)
ZOH
400 s2 50s
1 eTs s
400 s2 50s
G0 (z)
(1
z 1)
400 s(s2 50s)
结果如P123:G(z):
仿真实例1:G(s)
s2
10 2s
1
利用simulink中的比例、积分、微分,自 己搭建连续PID控制器,实现对上述对象的 控制,修改PID参数观察其阶跃响应曲线变 化,掌握PID各个部分对系统性能的影响。
仿真实例2:G(s) e80s
60s 1
利用simulink中的PID控制器实现对上述 对象的控制,修改PID参数观察其阶跃响应 曲线变化。
(1)先调 :让系统闭环,使积分和微分不起作 用( ,K p ),观察系统的响应,若反映 快、超调Ti 小 ,静Td 差 0满足要求,则就用纯比例 控制器。
(2)调 T:i 若静差太大,则加入 ,Ti 且同时使 略K p 下降(如降至原来的80%,因加入积分会使
系统稳定性下降,故减小 到满足静差要求。
0.0001968z1U (z) 0.0001936z2U (z) Y (z) 1.9512z1Y (z) 0.9512z2Y (z)
0.0001968u(k 1) 0.0001936u(k 2) y(k) 1.9512 y(k 1) 0.9512 y(k 2)
y(k) 1.9512 y(k 1) 0.9512 y(k 2) 0.0001968u(k 1) 0.0001936u(k 2)
if u(k)>=110 u(k)=110; end
if u(k)<=-110 u(k)=-110; end
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_2=error_1; error_1=error(k); end
rin(t) 1.0sign(sin(0.0005t)) 0.05sin(0.03t)
对象在微分先行PID作用和标准PID控制器作用下输 入输出见仿真程序D_advance.m
通过结构图的仿真见advanceD.mal
举例2:设被控对象为
G0 (s)
s2
54 18s
1
输入信号是脉宽20s、周期50s的脉冲信号。假
设常规PID控制器为:
D(s) 0.51 1 2s 3.5s
采用微分先行PID控制器,并设其中的r 0.5
系统采用两种控制器的原理图如下:
系统采用两种控制器的输出响应波形如下:
四、 试凑法
试凑法试一种凭借经验整定参数的方法, 让系统闭环,改变给定值以给系统施加干扰 信号,一边按 K p Ti 顺序T调d 节,一边观察 过渡过程,直到满意为止。其过程如下:
仿真中对象输出端加幅值为0.01的随机信号.输 入信号为阶跃信号.对象在不完全微分PID和 标 准 PID 作 用 下 的 输 出 响 应 分 别 见 仿 真 程 序 D_partial.m和partialD.mdl
二、微分先行 e80s
仿真举例:设被控对象为 G0 (s) 6s 1
输入信号为带有高频干扰的方波信号:
K)p ,
T由i 大到小,直
(使3)调稍KT微p:d若提系升统一动点态,特由性小不到好大,,则直加到入动,T态d同满时 意。
工程实际中,以上几步反复操作,直到满意 为止。常见被调量的PID调节器参数选择范围 如下表:
被调量 流量
特点 对象时间常数并有噪声
Kp
T(i m)
(m)
Td
1~2.5
0.1~1
温度
多容系统,有较大滞后
1.6~5
3~10 0.5~3
压力
多容系统,滞后不大
1.4~3.5 0.4~3
液位
允许有静差,
1.25~5
算法:
当u(k) 00H时, 取u(k )=00H
当u(k ) FFH时, 取u(k )=FFH
仿真实例:
G(s)
s3
523500 87.35s2 10470s
二、不完全微分 仿真实验,采用图(b)结构的不完全微分,对象为
G(s)
e 80 s 60s+1
Df
(s)
1 180s
1 ,Ts
20ms
(1
z 1)
400 s2 (s 50)
G0 ( z)
(1
z 1 )
Z
8 s 2
0.16 s
0.16 s 50
z
1 z
8Tz ( z 1)2
0.16 z z 1
0.16 z z e 50T
G(z)
z
z
1
(
8Tz z 1)
2
0.16z z 1
0.16z z e50T
elseif abs(error(k))>=10&abs(error(k))<=20
beta=0.9;
else
beta=1.0;
end
elseif M==2
beta=1.0;
kp=0.80; ki=0.005;
kd=3.0; u(k)=kp*error(k)+kd*(error(k)-
error_1)/ts+beta*ki*ei;
对F(s)部分分式展开:F (s)
2s3 9s 1 s3 s2 4s
4
b=[2 0 9 1];
a=[1 1 4 ຫໍສະໝຸດ Baidu];
[r,p,k]=residue(b,a)
展开后得:
F (s) 2 2 0.25 j 0.25 j s 1 s 2 j s 2 j
求f(t)=1-e-at的Z变换:
x=sym(‘1-exp(-a*t)');
X=ztrans(x)
求F(z)的反变换:
F(z)
z3
z2 4z2
5z
2
X=sym('z^2/(z^3-4*z^2+5*z-2)'); x=iztrans(X)
对
G0 (s)
1用0 零阶保持器,在采样周
s(s 1)
期Ts=1s下离散化求G(z)
sys=tf(10,[1 1 0]); dsys=c2d(sys,1,‘zoh’) [z,p,k]=tf2zp(num,den)
仿真实例3:设被控对象为G0 (s)
s2
54 18s
1
输入信号是脉宽20s、周期50s的脉冲信号。假
设常规PID控制器为:
D(s) 0.51 1 2s 3.5s
采用微分先行PID控制器,并设其中的r 0.5
系统采用两种控制器的原理图如下:
仿真实例4:设被控对象为
400 G0 (s) s2 50s
y_1=0;y_2=0;y_3=0; error_1=0;error_2=0;
ei=0; for k=1:1:200 time(k)=k*ts; yout(k)=-den(2)*y_1+num(2)*u_5;
%I separation
rin(k)=40;
error(k)=rin(k)-yout(k);
背景:PID控制器的输出由于积分作用不断累 加而加大,从而导致执行机构达到极限位置(如 阀门全开),若控制器输出继续增大,阀门开度不 可能再增大,此时就称计算机输出超出了正常 运行范围而进入了饱和区.系统进入饱和后, 饱和越深,退饱和时间越长,系统超调就越大。
措施:对输出进行限幅,同时切除积分作用。
figure(1); plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout');
figure(2); plot(time,u,'r'); xlabel('time(s)');ylabel('u');
2、抗积分饱和法
0.0001968z 1 0.0001936z2 11.9512z 1 0.9512z 2
G(z)
Y (z) U (z)
0.0001968z1 0.0001936z2 11.9512z1 0.9512z2
U (z)(0.0001968z1 0.0001936z2 ) Y (z)(11.9512z1 0.9512z2 )
e0.050.9512
0.008
z
0.9512
20( z
1)( z
0.9512)
20( z
1) 2
(z 1)(z 0.9512)
0.008(z 0.9512 0.9754z 0.9754) z2 1.9512z 0.9512
0.0001968z 0.0001936 z2 1.9512z 0.9512
ei=ei+error(k)*ts;
M=1;
if M==1
%Using integration
separation
if abs(error(k))>=30&abs(error(k))<=40
beta=0.3;
elseif abs(error(k))>=20&abs(error(k))<=30
beta=0.6;
y(k) den(2) y(k 1) den(3) y(k 2) num(2)u(k 1) num(3)u(k 2)
脚本:
clear all; close all;
ts=20; sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh'); [num,den]=tfdata(dsys,'v'); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;