PID控制算法仿真综合实验.docx
- 文档编号:153437
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:24
- 大小:196.08KB
PID控制算法仿真综合实验.docx
《PID控制算法仿真综合实验.docx》由会员分享,可在线阅读,更多相关《PID控制算法仿真综合实验.docx(24页珍藏版)》请在冰点文库上搜索。
PID控制算法仿真综合实验
1、阐述PID控制输出仿真的实验原理(设控制系统的传递函数MatlaB表达式:
sys=tf(400,[1,50,0]))
Δy=kp*e(k)+kI∑e(i)+kd[e(k)-e(k-1)]
2、绘制不同的PID控制系统参数对阶跃响应性能指标的影响曲线。
(a)分析满足ki=0,kd=0时,不同kp影响曲线,至少分析四组(从0.5-8.0值范围变化),绘制同一曲线上,并分析说明比较比例控制的影响规律。
源程序代码:
clearall
closeall
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=0.6
ki=0
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'g',time,yout,'r','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2.5
ki=0
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'g',time,yout,'r','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=4.2
ki=0
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'g',time,yout,'r','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=7.8
ki=0
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'g',time,yout,'r','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
图像:
ki=0,kd=0
Kp:
红色kp=0.6,绿色kp=2.5,蓝色kp=4.2,品红kp=7.8
(b)分析满足kp=2,kd=0时,不同ki影响曲线,至少分析四组(从0.01-0.1值范围变化),绘制同一曲线上,并分析说明比较积分控制的影响规律。
源程序代码:
clearall
closeall
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2.0
ki=0.02
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'r','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2
ki=0.05
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'g','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2
ki=0.07
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'b','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2
ki=0.09
kd=0
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'m','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
图像:
kp=2,kd=0
Ki:
红色ki=0.6,绿色ki=2.5,蓝色ki=4.2,品红ki=7.8
(c)分析满足kp=2,ki=0.02时,不同kd影响曲线,至少分析四组(从0.5-5.0值范围变化),绘制同一曲线上,并分析说明比较微分控制的影响规律。
源程序代码:
clearall
closeall
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2.0
ki=0.02
kd=1.2
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'r','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2
ki=0.02
kd=2.8
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'g','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2
ki=0.02
kd=3.6
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'b','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
ts=0.001
sys=tf(400,[1,50,0])
dsys=c2d(sys,ts,'z')
[num,den]=tfdata(dsys,'v')
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
error_2=0
fork=1:
1:
1000
time(k)=k*ts
rin(k)=1.0
kp=2
ki=0.02
kd=4.7
du(k)=kp*x
(1)+kd*x
(2)+ki*x(3)
u(k)=u_1+du(k)
ifu(k)>=10
u(k)=10
end
ifu(k)<=-10
u(k)=-10
end
yout(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2
error=rin(k)-yout(k)
u_3=u_2
u_2=u_1
u_1=u(k)
y_3=y_2
y_2=y_1
y_1=yout(k)
x
(1)=error-error_1
x
(2)=error-2*error_1+error_2
x(3)=error
error_2=error_1
error_1=error
end
holdon
plot(time,rin,'k',time,yout,'m','linewidth',2)
xlabel('time(s)')
ylabel('rin,yout')
图像:
kp=2,ki=0.02
Kd:
红色kp=1.2,绿色kd=2.8,蓝色kd=3.6,品红kd=4.7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PID 控制 算法 仿真 综合 实验