东南大学自动化学院
实 验 报 告
课程名称: 计算机控制技术基础
第 四 次实验
实验名称: 具有纯滞后系统的大林控制 院 (系): 自动化学院 专 业: 自动化 姓 名: 郭劲廷 学 号: 08011331 实 验 室: 常州楼419 实验组别: 同组人员: 实验时间:2014 年 4 月 28 日 评定成绩: 审阅教师:
实验五 具有纯滞后系统的大林控制
一、实验目的
1.了解大林控制算法的基本原理;
2.掌握用于具有纯滞后对象的大林控制算法及其在控制系统中的应用。
二、实验设备
1.THBDC-1型 控制理论·计算机控制技术实验平台 2.PCI-1711数据采集卡一块
3.PC机1台(安装软件“VC++”及“THJK_Server”)
三、实验原理
在生产过程中,大多数工业对象具有较大的纯滞后时间,对象的纯滞后时间?对控制系统的控制性能极为不利,它使系统的稳定性降低,过渡过程特性变坏。当对象的纯滞后时间
?与对象的惯性时间常数T1之比,即?/T1?0.5时,采用常规的比例积分微分(PID)控制,
很难获得良好的控制性能。长期以来,人们对纯滞后对象的控制作了大量的研究,比较有代表性的方法有大林算法和纯滞后补偿(Smith预估)控制。
本实验以大林算法为依据进行研究,大林算法的被控对象是带纯滞后的一阶或二阶惯性环节。即
Ke??s G(s)?T1s?1Ke??s或 G(s)?
(T1s?1)(T2s?1)本实验被控对象为带纯滞后的一阶惯性环节。
式中:?为纯滞后时间,为方便起见假设为采样周期T的整数倍
??NT
大林算法的主要设计目标是系统在单位阶跃输入作用下,整个闭环系统的传递函数相当于一个延迟环节和一个惯性环节相串联。即
e??s (5-1) H(s)?T0s?1要求整个闭环系统的纯滞后时间等于被控对象的纯滞后时间。 与H(s)相对应的闭环系统脉冲传递函数为
1?e?sTe?NTsH(z)?Z[?]
sT0s?1
?z?N(1?z?1)Z[1]
s(T0s?1)?z?N(1?z)?1(1?e?TT0)z?1?TT0?z?1)(1?e?TT0?)z?(N?1)TT0 (5-2)
(1?z?1)(1?e
1?ez?1
将上式代入式D(z)?1H(z)?中,得 G(z)1?H(z)D(z)?当对象为一阶惯性环节加纯滞后时
(1?eG(z)[1?e?TT0?TT0)z?(N?1)?TT0 (5-3)
z?1?(1?e)z?(N?1)]1?e?sTKe?NTsG(z)?Z[?]
sT1s?1?Kz?N(1?z?1)Z[1]
s(T1s?1)?Kz?N(1?z)?1(1?e?TT1)z?1?TT1
(1?z?1)(1?ez?1)?Kz?(N?1)(1?e1?e??TT1)TT1 (5-4)
z?1TT0?TT1将式(5-4)代入式(5-3)得一阶惯性环节的控制器的D(z)为
D(z)?K(1?e由上式,控制算法为
T?T0T?T0(1?e?TT1?)(1?e?z?1)?TT0)[1?eTT0
z?1?(1?eTT0?TT1)z?(N?1)]TT0TT1u(k)?e
u(k?1)?(1?e)u(k?N?1)?1?e?e(k)?)(1?e?)e??K(1?eK(1?eTT1e(k?1)
)
四、实验步骤
1、仔细阅读“PCI-1711数据采集卡驱动函数说明.doc”和“THJK-Server软件使用说明.doc”文档,掌握PCI-1711数据采集卡的数据输入输出方法和THJK-Server软件(及相关函数)的使用方法。
2、对象的传递函数为:
Ke??s G0(s)?, ??NT
T1s?1上式中,滞后环节e??s由上位机软件模拟(函数ADinputDelay实现),?为滞后时间,这里取??NT,T为采样周期。对象的其它部分由如下电路来模拟:
图5-1 模拟对象电路
3、系统接线图如图5-2所示:
图5-2 系统接线图
按照上图接线。
4、根据此被控对象设计大林控制算法并编程序实现。
5、打开大林算法实验文件夹下.dsw工程文件,源程序中缺少大林控制器算法程序,请同学用设计好的控制器算法编写程序(选取T0?0.1s,N=1~5)。
6、源程序编译通过后,先启动“THJK_Server”波形显示软件,再执行程序代码,在显示界面出现的曲线并稳定后(初始化后),把+5V电源打到“开”状态,观测并记录系统的响
应曲线。在实验结束后,在键盘上先按下“e”,再按下“Enter(回车键)”键,程序退出。 7、在纯滞后时间较大的情况下(可取N=5~8),试用数字PID算法来控制(效果较差),观察输出曲线,并与采用大林控制算法控制效果相比较并分析。
8、选取T0?0.01s,N=1时,将看到控制器输出存在振铃现象,采用计算机控制技术教材P99的振铃消除方法来消除振铃现象。
五、实验报告要求
1、编程实现大林控制算法(选取T0?0.1s,可取N=1~5)。
ei=sv-fVoltage;
x1=exp(-Ts/T0); x2=exp(-Ts/T1); a0=(1-x1)/(k*(1-x2)); a1=x2*(1-x1)/(k*(1-x2)); b1=exp(-Ts/T0); b2=1-exp(-Ts/T0);
output[0]=b1*output[1]+b2*output[N+1]+a0*ei-a1*eix; eix=ei;
for(int j=N;j>=0;j--)
{output[j+1]=output[j]; }
2、编程实现采用数字PID来控制的算法(可取N=5~8,控制效果较差)。 //PID 算法函数:pid[0]=P;pid[1]=I;pid[2]=D double PID(double ei, double *pid,double Ts) { static double ex=0,ey=0; static double q0=0; static double q1=0; static double q2=0; static double op=0; q0=pid[0]*(ei-ex); //比例项 if (pid[1]==0) q1=0; else q1=pid[0]*Ts*ei/pid[1] ; //当前积分项 q2=pid[0]*pid[2]*(ei-2*ex+ey)/Ts; //微分项 ey=ex; ex=ei;
op=op+q0+q1+q2; return op; }