📄 declare.pas
字号:
begin
Messagebox(0,'要求热风温度太高了,输入的热风温度至少应低于理论燃烧温度80℃!','注意',MB_ICONEXCLAMATION);
exit;
end;
ui0:=OperationImproveElement.WindCoefficient[1];//!!!
uj0:=OperationImproveElement.WindCoefficient[2];//!!!
uc0:=OperationImproveElement.WindCoefficient[3];//!!!
Ttemp:=ui0+uj0+uc0;
if (ui0>1)or(ui0<0)or(uj0>1)or(uj0<0)or(uc0>1)or(uc0<0)or(Ttemp<>1) then
begin
Messagebox(0,'初始无因次风量系数输入有误,请重输','注意',MB_OK);
exit;
end;
//传热过程
k:=0;
for j:=1 to (MaxTime) do //j表示时间
begin
for i:=1 to (MaxPosition) do //i表示位置
begin
tsolid[i,1]:=800; //tsolid蓄热体入口温度分布
tsolid[MaxPosition-i+1,MaxTime]:=800; //tsolid[M-i-1,N-1] 表示蓄热体末时刻时的温度
Tgas[1,j]:=xt; //Tgas烟气温度分布,xt表示理论燃烧温度
Tair[1,j]:= SESystemElement.q4_inheat[1];//冷风平均温度
end;
end;
tyanj:=Tgas[1,2];
Te1:=100;Te2:=0; cha:=3; Qx1:=300; Qr:=1000; Q:=1;
hunw:=1050;
while (abs(Te1-Te2)>cha) or (abs((Qx1-Q)/Qx1)>0.05)
or (abs((Q-Qr)/Q)>0.03) or (tyanj>pyan)or(hunw/0.86>dw) do
begin
if (tr>=1) and (tr<=3.5) then Btr:=False else Btr:=True;
if (tf>=1) and (tf<=3.5) then Btf:=False else Btf:=True;
if Btr or Btf then
begin
MessageBox(0,'燃烧期或送风期越界,请重新输入初始的燃烧期和送风期,要求燃烧期和送风期都在1~3.5小时内','紧急通知',MB_ICONSTOP);
Exit;
end;
//送风期热风实际带走的热Q 送风期要求设定的热 Qr
if (abs(Te1-Te2)<2*cha) and (abs(Te1-Te2)>=0) then
begin
if((Qr-Q)/Q)>0.02 then
begin
tf:=tf+0.005;tr:=tr+0.02
end
else if ((Q-Qr)/Q)>0.02 then
begin
tf:=tf+0.005;tr:=tr-0.01
end
end;
//燃烧期热量法纪算的蓄热体系热量Qx1 送风期热风实际带走的热Q
if (abs(Te1-Te2)<2*cha) and (abs(Te1-Te2)>=0) then
begin
if(((Qx1-Q)/Qx1)>0.05) then
begin
tr:=tr-0.01;tf:=tf+0.01
end
else if(((Q-Qx1)/Qx1)>0.05) then
begin
tr:=tr+0.01;tf:=tf-0.01
end
end;
OperationImproveElement.Result_OperationImprove[8]:=int(100*Tr)/100; //燃烧期
OperationImproveElement.Result_OperationImprove[9]:=int(100*Tf)/100; //送风期
SESystemElement.q1_inheat[3]:=OperationImproveElement.Result_OperationImprove[8];
SESystemElement.q1_inheat[4]:=OperationImproveElement.Result_OperationImprove[9];
Qm:=0; Qy:=0;
dot:=tr/(MaxTime-1); //时间步长
Te2:=Te1;
for i:=1 to MaxPosition do //燃烧期
begin
tsolid[i,1]:=tsolid[MaxPosition-i+1,MaxTime]; //换炉,蓄热室温度交换
end;
Dw0:=1.3;
Dw0:=0;
for i:=1 to MaxPosition-1 do //燃烧期
begin
bRanShao:=TRUE;
EquationCoefficient(Tgas[i,1],i*36/MaxPosition, tsolid[i,1],1);
A10:=AnalogElement.CommonCoefficient[1];
A20:=AnalogElement.CommonCoefficient[2];
B10:=AnalogElement.CommonCoefficient[3];
B20:=AnalogElement.CommonCoefficient[4];
Dw0:=AnalogElement.CommonCoefficient[5]; //
Tgas[i+1,1]:=A10*Tgas[i,1]+A20*(tsolid[i+1,1]+ tsolid[i,1])-Dw0;
tsolid[1,1]:=B10*tsolid[1,1]+B20*(Tgas[1,1]+Tgas[1,1]);
end;
//燃烧期
for j:=1 to (MaxTime-1) do
begin
for i:=1 to (MaxPosition) do
begin
bRanShao:=TRUE;
EquationCoefficient(Tgas[i,j],i*36/MaxPosition, tsolid[i,j],1);
A10:=AnalogElement.CommonCoefficient[1];
A20:=AnalogElement.CommonCoefficient[2];
Dw0:=AnalogElement.CommonCoefficient[5]; //
K10:=AnalogElement.CommonCoefficient[11];
K20:=AnalogElement.CommonCoefficient[12];
K30:=AnalogElement.CommonCoefficient[13];
K40:=AnalogElement.CommonCoefficient[14];
if i=1 then tsolid[i,j+1]:=B10*tsolid[i,j]+B20*(Tgas[i,j+1]+Tgas[i,j])
else
begin
tsolid[i,j+1]:=K10*tsolid[i,j]+K20*Tgas[i,j]+K30*tsolid[i-1,j+1]+K40*Tgas[i-1,j+1];
Tgas[i,j+1]:=A10*Tgas[i-1,j+1]+A20*(tsolid[i,j+1]+ tsolid[i-1,j+1])-Dw0;
end;
end; //燃烧期i循环结束
//烟气带走的热量 单位:KJ
Qy:=Qy+B*Vy*Cpyanj(20,Tgas[MaxPosition,j])*(Tgas[MaxPosition,j]-20)*dot;
if (tyanj-pyan>10) then bl:=1 else bl:=0;
if (abs(Te1-Te2)<2*cha) and (abs(Te1-Te2)>=0) and (bl=1) and (k>3) then
begin
B:=B-5; tr:=tr-0.001; tf:=tf+0.001; //k>3为了保证abs(Te1-Te2)>=0
OperationImproveElement.Result_OperationImprove[1]:=int(100*B)/100;
end;
OperationImproveElement.Result_OperationImprove[11]:=int(100*Tgas[MaxPosition,j])/100;
end; //燃烧期j循环结束
//计算燃烧期
tyanj:=0;
for j:=1 to (MaxTime-1) do
begin
tyanj:=tyanj+Tgas[MaxPosition,j];
end;
tyanj:=tyanj/(MaxTime-1); //平均烟气温度
Qm:=B*Qz*tr; //煤气放热量 单位:KJ
Qx1:=Qm-Qy; //热平衡法中的蓄热体热量 单位:KJ
OperationImproveElement.Result_OperationImprove[8]:=int(100*Tr)/100; //燃烧期
OperationImproveElement.Result_OperationImprove[9]:=int(100*Tf)/100; //送风期
SESystemElement.q1_inheat[3]:=OperationImproveElement.Result_OperationImprove[8];
SESystemElement.q1_inheat[4]:=OperationImproveElement.Result_OperationImprove[9];
//计算燃烧期
//送风期
for i:=1 to MaxPosition do
begin
tsolid[i,1]:=tsolid[MaxPosition-i+1,MaxTime]; //换炉,蓄热室温度交换
end;
dot:=tf/(MaxTime-1); //时间步长
Qr:=0; Q:=0;
Dw0:=0.3;
for j:=1 to (MaxTime-1) do //时间
begin
ui:=FUT1(ui0,j*Tf/(MaxTime-1));//
uj:=FUT1(uj0,j*Tf/(MaxTime-1));
for i:=1 to (MaxPosition) do //位置
begin
bRanShao:=FALSE;
EquationCoefficient(Tair[i,j],i*36/MaxPosition, tsolid[i,j],ui);
A10:=AnalogElement.CommonCoefficient[1];
A20:=AnalogElement.CommonCoefficient[2];
B10:=AnalogElement.CommonCoefficient[3];
B20:=AnalogElement.CommonCoefficient[4];
Dw0:=AnalogElement.CommonCoefficient[5]; //
K10:=AnalogElement.CommonCoefficient[11];
K20:=AnalogElement.CommonCoefficient[12];
K30:=AnalogElement.CommonCoefficient[13];
K40:=AnalogElement.CommonCoefficient[14];
if i<MaxPosition then Tair[i+1,1]:=A10*Tair[i,1]+A20*(tsolid[i+1,1]+ tsolid[i,1])-Dw0;
tsolid[1,1]:=B10*tsolid[1,1]+B20*(Tair[1,1]+Tair[1,1]);
if (i=1) then tsolid[i,j+1]:=B10*tsolid[i,j]+B20*(Tair[i,j+1]+Tair[i,j])
else
begin
tsolid[i,j+1]:=K10*tsolid[i,j]+K20*Tair[i,j]+K30*tsolid[i-1,j+1]+K40*Tair[i-1,j+1];
Tair[i,j+1]:=A10*Tair[i-1,j+1]+A20*(tsolid[i,j+1]+ tsolid[i-1,j+1])-Dw0;
end;
end; //送风期i的循环结束
//计算送风期
time:=Trunc((MaxTime-1)/2+j);
if time>=MaxTime-1 then time:=time-(MaxTime-1) else time:=time;
hunw1:=catg(ui,uj,tair[MaxPosition,j],tair[MaxPosition,time]);//计算交错并联送风温度
hunw2:=catg(ui0+uj0,uc0,hunw1,t1); //冷风温度t1
hunw:=hunw2;
Q:=Q+L*Cpairj(t1,hunw)*(hunw-t1)*dot; //单位:KJ
OperationImproveElement.Result_OperationImprove[10]:=int(100*hunw)/100;
end; //送风期j循环结束
Qr:=Qf*tf; //要求热风带走的热量 单位:KJ
OperationImproveElement.Result_OperationImprove[9]:=int(100*Tf)/100; //送风期
Te1:=0;
for i:=1 to MaxPosition do
begin
Te1:=tsolid[MaxPosition-i+1,MaxTime]+Te1;
end;
Te1:=Te1/MaxPosition;
k:=k+1;
end; //while循环结束
end; //procedure TFMoni.Timec结束
Function FUT1(Y0:Real;TJ:Real):Real; //通过热风炉的无因次风量的计算公式
var HT,Tf:Real;
begin
Tf:=SESystemElement.q1_inheat[4]; //Tf表示送风期时间
HT:=Tf/2.0; //Y0表示送风初始时刻的无因次风量
if TJ>=HT then Result:=2.0-3.0*Y0-(1-2*Y0)*TJ/HT else Result:=(1-2*Y0)*TJ/HT+Y0;
end;
Function CATG(Ui:real;Uj:real;TI:real;TU:Real):Real; //计算混风温度
var TK,TH,TM,HII,HIU,HIM,YA,YB,xs:Real;
begin
ptog;
TK:=TI+273.15;
HII:=HI(ag[1],bg[1],cg[1],dg[1],298,TK);
TK:=TU+273.15;
HIU:=HI(ag[1],bg[1],cg[1],dg[1],298,TK);
xs:=ui+uj;
HIM:=HII*ui/xs+HIU*uj/xs;
TK:=1200;
TH:=100;
TM:=0;
while ABS(TH-TM)>0.1 do //计算混风温度
begin
YA:=HI(ag[1],bg[1],cg[1],dg[1],298,TK)-HIM;
YB:=Cpair(TK); //计算空气比热
TH:=TK-YA/YB;
TM:=TK; //保留以前的TK
TK:=TH;
end;
Result:=TH-273.15;
end;
procedure ptog; //计算烟气比热容公式参数
var i:integer;
begin
ag[1]:=A11[5];
bg[1]:=B11[5];
cg[1]:=C11[5];
dg[1]:=D11[5];
ag[2]:=0.0;
bg[2]:=0.0;
cg[2]:=0.0;
dg[2]:=0.0;
xg[1]:= SESystemElement.co2_fume[2]/100;
xg[2]:= SESystemElement.h2o_fume/100;
xg[3]:= SESystemElement.o2_fume[2]/100;
xg[4]:= SESystemElement.n2_fume[2]/100;
for i:=1 to 4 do
begin
ag[2]:=xg[i]*A11[i]+ag[2];
bg[2]:=xg[i]*B11[i]+bg[2];
cg[2]:=xg[i]*C11[i]+cg[2];
dg[2]:=xg[i]*D11[i]+dg[2];
end;
end;
//焓的计算公式
Function HI(A:Real;B:Real;C:Real;D:Real;T1:Real;T2:Real):Real;
begin
Result:=A*(T2-T1)+B*1.0e-3*(T2*T2-T1*T1)/2.0-C*1.0e5*(1/T2-1/T1)+D*1.0e-6*(T2*T2*T2-T1*T1*T1)/3.0;
end;
Function HICO2(T1:Real;T2:Real):Real;
begin
Result:=HI(44.15,9.04,-8.54,0,T1,T2);
end;
Function HIH2O(T1:Real;T2:Real):Real;
begin
Result:=HI(30.01,10.7,0.33,0,T1,T2);
end;
Function HIO2(T1:Real;T2:Real):Real;
begin
Result:=HI(29.96,4.19,-1.67,0,T1,T2);
end;
Function HIN2(T1:Real;T2:Real):Real;
begin
Result:=HI(27.87,4.27,0,0,T1,T2);
end;
Function HIair(T1:Real;T2:Real):Real;
begin
Result:=HI(28.295,4.2511,-0.352,0,T1,T2);
end;
procedure OperateImProve;
var t1,t2,Q,Qs,L:Real;
m,n:integer;
ty,te,tm,tk,fm,B,a:Real;
tr,tf,yan,nv:real;
t,liu,Qc,Qdws0:Real;
begin
t2:=OperationImproveElement.Result_OperationImprove[10];//混风后的热风温度
t1:=SESystemElement.q4_inheat[1]; //鼓风温度
L:=OperationImproveElement.Result_OperationImprove[2]; //热风流量 单位 m^3/h
Q:=L*(t2-t1)*Cpairj(t1,t2); //热风带走的热量
OperationImproveElement.Result_OperationImprove[5]:=SESystemElement.process_heatcompute[7]; //煤气热值
Qdws0:=OperationImproveElement.Result_OperationImprove[5]; //煤气热值 单位 KJ/m^3
a:=SESystemElement.process_heatcompute[2]; //空气消耗系数
tm:=SESystemElement.tm_coal; //煤气温度
te:=SESystemElement.q2_inheat[1]; //环境温度
tk:=SESystemElement.q3_inheat[1]; //助燃空气温度
tf:=OperationImproveElement.Result_OperationImprove[9]; //送风期
tr:=OperationImproveElement.Result_OperationImprove[10]; //燃烧期
B:=OperationImproveElement.Result_OperationImprove[1]; //煤气量
OperationImproveElement.Result_OperationImprove[3]:=int(a*SESystemElement.process_heatcompute[10]*B*100)/100; //空气量
OperationImproveElement.Result_OperationImprove[6]:=int(100*(a*SESystemElement.process_heatcompute[10]*B/B))/100; //空气煤气比
yan:=B*SESystemElement.process_heatcompute[5]; //烟气量
OperationImproveElement.Result_OperationImprove[4]:=int(yan*100)/100; //烟气量
Qs:=Qdws0+Cpmeij(te,tm)*(tm-te)+a*SESystemElement.process_heatcompute[10]*Cpairj(te,tk)*(tk-te);
t:=tf/tr;
liu:=L/B;
Qc:=(Cpairj(t1,t2)*(t2-t1))/Qs;
nv:=100*t*liu*Qc; //热效率
OperationImproveElement.Result_OperationImprove[7]:=int(100*nv)/100;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -