计算机控制技术课程设计
课程名称 计算机控制技术 学 院 自动化学院 专业班级 学 号 姓 名
一、题目和要求
已知计算机控制系统结构图如图1所示,其中r(t)是系统的参考输入,e(t)是系统偏差,u(t)是系统的控制量,G0(s)是系统被控对象的传递函数,D(z)是待设计控制器的脉冲传递函数。
r(t)e(t)TE(z)D(z)U(z)T1eTssG0(s)y(t)图1 计算机控制系统结构图 现假设系统采样周期T=0.5s,系统被控对象的传递函数为:
G0(s)2es
s(s2)请针对上述被控对象,完成如下任务:
(一)、试分别采用不同的数字控制算法设计数字控制器D(z),使得输出跟踪不同的参考输入;在设计任务中要求采用如下四种数字控制算法:数字PID控制算法、最少拍有纹波控制算法、最少拍无纹波控制算法和大林控制算法;设计每种算法时需要跟踪两种典型的参考输入,即:单位阶跃输入和单位速度输入;
(二)、针对每一种情况,编写计算机程序或者使用仿真软件作出相应的
e(k),u(k)和y(k)的曲线,通过改变不同算法的控制参数观察控制效果的变化分析相应算法控制算法对系统控制性能的影响;
(三)、比较分析各种不同控制算法间的控制效果差异; (四)、撰写心得和体会。
二、数字PID控制算法
1、单位阶跃输入 (1)、搭建sumilink
(2)、双击PID控制器
(3)、点击TUNE,让系统自动调整参数
(4)、调整得到满意参数 (5)、编程模拟 s=tf('s');
Gs=200/(s*(s+40)); Ts=0.01;
Gz=c2d(Gs,Ts,'zoh');
[num,den]=tfdata(Gz,'v'); step=1000; Kp=0.4411; Ki=0.0019; Kd=0.4694;
e=zeros(1,step); y=zeros(1,step); time=zeros(1,step); r=zeros(1,step);
delta_u=zeros(1,step); u=zeros(1,step); for k=1:step
r(k)=1;
time(k)=k*Ts; end
for k=3:step y(k)=y(k-1); e(k)=r(k)-y(k);
delta_u(k)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2)); u(k)=delta_u(k)+u(k-1);
y(k)=-den(2)*y(k-1)-den(3)*y(k-2)+num(2)*u(k-1)+num(3)*u(k-2); end
plot(time,r,time,y)
仿真图如下示:
y(k)
u(k)
e(k)
2、单位速度输入 方法同单位阶跃输入 仿真图:
y(k)
u(k)
e(k)
编程模拟:
s=tf('s');
Gs=200/(s*(s+40)); Ts=0.01;
Gz=c2d(Gs,Ts,'zoh');
[num,den]=tfdata(Gz,'v'); step=1000; Kp=0.9539; Ki=0.0016; Kd=0.36;
e=zeros(1,step); y=zeros(1,step); time=zeros(1,step); r=zeros(1,step);
delta_u=zeros(1,step); u=zeros(1,step); for k=1:step
r(k)=k;
time(k)=k*Ts; end
for k=3:step y(k)=y(k-1); e(k)=r(k)-y(k);
delta_u(k)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2)); u(k)=delta_u(k)+u(k-1);
y(k)=-den(2)*y(k-1)-den(3)*y(k-2)+num(2)*u(k-1)+num(3)*u(k-2); end
plot(time,r,time,y)
三、最少拍有纹波控制算法
Ts1e2sG(s)e广义传递函数:
ss(s2) 110.184z(10.717z)2G(z)zZ变换:
(1z1)(10.368z1)
1、单位阶跃输入
d=2 u=0 v=1 j=1 q=1 m=u+d=2 n=v-j+q=1
e(z)(1z1)(1f11z1f12z2)
1(f111)z(f12f11)zf12z1
123
(z)zf21z2对比可得:f11=1 f12=1 f21=1 故控制器的脉冲传递函数D(z)为:
z1D(z)0.184z1(10.717)12
(1zz)11(1z)(10.368z)z30.368z2 0.184z30.316z20.316z0.132
仿真图如下图示。 2、单位速度输入
d=2 u=0 v=1 j=1 q=2 m=u+d=2 n=v-j+q=2
e(z)(1z)(1f11zf12z)
12121(f112)z1(f122f111)z2(f112f12)z3f12z4(z)z(f21zf22z)
对比可得:f11=2 f12=3 f21=4 f22=-3 故控制器的脉冲传递函数D(z)为:
2124z13z2D(z)0.184z1(10.717)112
(1z)(12z3z)11(1z)(10.368z)4z44.472z31.104z2 0.184z40.316z30.316z20.42z0.396
仿真图如下图示。
y(k)
u(k)
图2
e(k)
y(k)
u(k)
e(k)
四、最少拍无纹波控制算法
传递函数同有纹波控制算法 1、单位阶跃输入
d=2 u=0 v=1 j=1 q=1 m=w+d=3 n=v-j+q=1
e(z)(1z1)(1f11z1f12z2f13z3)
1(f111)z(f21f11)z(f13f12)zf13z1234
(z)z2(10.717z1)f21z1
f21z0.717f21z34
对比可得 f11=1 f12=1 f13=0.417 f21=0.582 故控制器的脉冲传递函数D(z)为:
(1z1)(10.368z1)0.582z3(10.717z1)D(z)0.184z3(10.717z1)10.582z3(10.717z1)
0.582z40.796z30.214z2
0.184z40.107z0.077仿真图如下图示
y(k)
u(k)
e(k)
2、单位速度输入
d=2 u=0 v=1 j=1 q=2 m=w+d=3 n=v-j+q=2
e(z)(1z)(1f11zf12zf13z)
121231(f112)z(f122f111)z32111245
(f132f12f11)z(f122f13)zf13z(z)z(10.717z)(f21zf22z)
21(z)1f21z(f220.717f21z)0.717f22z对比可得 f11=2 f12=3 f13=1.427 f21=2.573 f22=-1.991 故控制器的脉冲传递函数D(z)为:
345(1z1)(10.368z1)z2(10.717z1)(2.573z11.991z2)D(z)0.184z3(10.717z1)1z2(10.717z1)(2.573z11.991z2)2.573z55.511z43.671z30.733z20.184z50.473z20.027z0.263仿真图如下图示:
y(k)
u(k)
e(k)
五、大林控制算法
1N2
T0.5(z)z2(1e0.520.52)z1z11e0.251(1e)zz21e0.25z1
1(z)D(z)G(z)1(z)
0.221z40.302z30.081z2
0.184z40.011z30.103z20.041z0.029
单位阶跃输入仿真图如图示
y(k)
u(k)
e(k)
单位速度输入仿真图如图示
y(k)
u(k)
e(k)
五、不同控制算法的比较
PID控制算法较容易得到对应的参数,但超调量大,稳定时间长,控制效果一般,适合对控制要求较低的场合。
最少拍有纹波算法响应时间大大减短,但同样也存在超调和轻微的振荡,控制效果好。
最少拍无纹波算法响应时间和有纹波算法相差不大,也不存在超调,但在调节的过程中存在振荡,会增加被控对象的机械磨损。
大林算法解决了调节过程的振荡问题,但调节时间较最少拍的大,且在单位速度输入时会有稳态误差。
六、心得和体会
刚刚拿到设计任务书的时候,我本来以为任务很快就能完成,但事实证明我错了。一开始的数字PID算法的设计还比较简单,所以进行地也比较顺利。但之后的最少拍算法由于计算较多,加之式子复杂难算,算错的次数很多,每次错了都要花很多时间去寻找算错的地方,是整个课程设计费时最多的环节。最后设计大林控制算法的时候,仿真出来的结果是错误的,但反复检查计算过程都没发现错误,最后找到问题的所在,原来是零阶保持器的采样时间没调好,找到问题就好解决了,之后也顺利得到较理想的曲线。在整个课程设计中,说实在的,我是照着老师上课时的PPT在做的,很多内容都没掌握好,期末考试也临近了,正好可以籍着这个机会将课程所学的东西好好复习一下,准备迎接考试。