⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 declare.pas

📁 《SESyetem节能模拟系统(版本:1.01a Final)》为自由软件,对热风炉进行 热平衡计算、传热模拟、燃烧优化、操作优化等设计。 本软件用Dephi6.0编写
💻 PAS
📖 第 1 页 / 共 5 页
字号:
           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 + -