122.5048dTgeredt?Tbox?1.4669Tgere?0.4669Tair(8)
将第79和80组数据带入上面的方程式,绝对误差分别为0.5624,0.3112和0.602,0.331,在接受范围内,验证了方程式的正确性。
图7环境温度实际测量与三次采样
根据式(7)和(8)反复迭代计算恒温箱与箱顶隔热层的温度,计算前80min的数据,可以得到恒温箱体与箱顶隔热层温度变化曲线,如图8和图9所示。
图8前80min恒温箱温度拟合曲线
图9前80min箱顶隔热层温度拟合曲线
由图可知,由建模得到的恒温箱体与箱顶隔热层温度变化,与温度实际测量曲线拟合得很好。
再根据模型2、3、4讨论的情况采用比较恒温箱、箱顶隔热层温度与临界温度的高低,再选择模型,具体程序见附录。由此可以得到恒温箱体和箱顶隔热层温度的变化曲线。仿真结果见图10和图11。
图10恒温箱与箱顶隔热层温度变化曲线
图11恒温箱温度变化曲线
由建模结果可知,箱顶隔热层始终低于68华氏度,箱顶隔热层与环境温度变化趋势相近。恒温箱体在刚开始持续受热,约在260分钟加热到68华氏度,然后在67.8华氏度与68.2华氏度附近来回震荡。对比图10和图11可知,随着环境温度的升高,恒温箱体温度震荡频率降低。环境温度决定了恒温箱温度的震荡频率,即热源开关的频率。
恒温箱箱体温度趋近于稳定后(300分钟~1440分钟),加热时间Theat约为317分钟,不加热时间约为814分钟,加热时间与不加热时间比值为317/814=0.4017。
恒温箱箱体温度趋近于稳定后(300分钟~1440分钟),最高温度68.4457华氏度,最低温度67.6212华氏度。
模型的改进恒温箱温度控制算法设计
建模前提是热源提供的速率一致,可以采用PID控制调节热源的加热速率。使恒温箱加热频率降低,响应速率变快。PID 控制算法简单、鲁棒性能好、可靠性高,被广泛应用于工业过程并取得了良好的控制效果。下图是PID 控制的原理框图。
将给定值r?t?与实际输出值c?t?相减,得到控制偏差:
e?t??r?t??c?t?
将偏差经过比例、积分、微分作用后线性相加,得到PID控制器输出的控制量,输入到被控对象进行控制:
?1u?t??Kp?e?t??TI?其传递函数形式为:
?t0e?t?dt?TDde?t??? dt???1Gc?s??Kp?1??Tps?
?TIs?式中,Kp是比例系数,TI是积分时间常数,TD是微分时间常数。
比例环节:即时成比例地反应控制系统的偏差信号e?t?,偏差一旦产生,控制器立即动作以减小误差。比例作用大,可以加快调节,减少误差。(比例也不能过大,过大
的比例会使系统的稳定性下降,甚至造成系统的不稳定。)
积分环节:主要作用是消除静差,提高系统的控制精度。积分作用的强弱取决于积分时间常数TI,其值越大,积分作用越弱;反之越强,引入积分调节可使系统稳定性下降,动态响应变慢。
微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前引入一个修正信号,从而减小系统的超调,加快系统的过渡过程,减小调节时间。但微分作用对噪声干扰有放大作用。
参考文献
[1] 李嘉林. 基于TEC制冷加热管制热的恒温箱设计[D].复旦大学,2012.
[2] 陈国初,张琳,郝宁眉等. 恒温恒液位系统的动态机理建模与仿真[J].青岛大学学报
(工程技术版),2003,18(2):46-50.
[3] 叶庆银,刘斌,臧润清等.小型恒温箱恒温性能的理论及实验研究[J].制冷与空
调,2007,7(4):48-50,81.DOI:10.3969/j.issn.1009-8402.2007.04.012. [4] 傅秦生. 热工基础与应用[M].北京:机械工业出版社,2007. [5] 李乃成,梅立泉. 数值分析[M].北京:科学出版社,2011.
附录
三次样条插值代码:
[hwx,grc]=textread('hwxwd.txt','%f%f','headerlines',1) wmwd=textread('wmwd.txt','%f') figure
plot(t1,wmwd) T_interp=0:1:1440;
wmwd1=interp1(t1,wmwd,T_interp,'linear'); wmwd2=interp1(t1,wmwd,T_interp,'spline');
plot(t1(1:7),wmwd(1:7),'o',T_interp(1:90),wmwd1(1:90),'r+',T_interp(1:90),wmwd2(1:90),'g*')
温度曲线拟合代码: 调用函数: Tair=wmwd2;
wdqx(0,1000,34.6256,34.6256,Tair,1,1000) 龙格库塔法数值积分函数:
function [ hwxwd,grcwd ] = wdqx( x0,xn,Tbox0,Tgere0,Tair,h,n ) %定义初值
%h:步长;n:节点个数 x=x0:h:xn;
y(1,1)=Tbox0;%赋恒温箱、隔热层温度初值 y(2,1)=Tgere0; i=1;
whilei<=n
while (i<=n)&&(y(1,i)<68.2)
K1(:,1)=[h*func1(y(1,i),y(2,i),Tair(i)),h*func3(y(1,i),y(2,i),Tair(i))]';
K2(:,1)=[h*func1(y(1,i)+K1(1,1)/2,y(2,i)+K1(2,1)/2,Tair(i)),h*func3(y(1,i)+K1(1,1)/2,y(2,i)+K1(2,1)/2,Ta