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

📄 cooler.cpp

📁 用vc++实现的水泥生产设备-篦冷机的仿真模型
💻 CPP
字号:
// cooler.cpp: implementation of the cooler class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "simulinkcool.h"
#include "cooler.h"
#include "varDef.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

#include <iostream.h>


cooler::cooler()
{

     mycoolerd.piag01 = 4683;
     mycoolerd.pcag02 = 3754;
     mycoolerd.piag03 = 2578;
     mycoolerd.piag04 = 1785;
     mycoolerd.pcag05 = 1433;
     mycoolerd.piag06 = 1280;

	 Pg07 = 9671;
	 Pg08 = 7335;
	 Pg09 = 4695;
	 Pg10 = 3980;
	 Pg11 = 2500;
	 Pg12 = 2080;
     mycoolerd.pcag13 = -61;
     Pg14 = -5000;
     mycoolerd.pig14 = 0;
     w = 0.0289;
	 Tk = 20;
	 Tl = 1400;
	 mycoolerd.ftt231= 0;
     
     mycoolerd.trag01 = 25;
     mycoolerd.tiag02 = 25;
	 mycoolern.Tg2=25;mycoolern.Tg3=25;mycoolern.Tg4=25;mycoolern.Tg5=25;Tg6=25;
     Cq=1006;
     M1=0;M2=0;M3=0;M4=0;M5=0;M6=0;
     s1=11.33;s2=15.8666;s3=11.33;s4=9.06;s5=7.93;s6=6.8;
     mycoolern.Ts1=30;mycoolern.Ts2=30;mycoolern.Ts3=30;mycoolern.Ts4=30;mycoolern.Ts5=30;mycoolern.Ts6=30;
     Tq1=25;Tq2=25;Tq3=25;Tq4=25;Tq5=25;Tq6=25;
	 mycoolern.sh1 = 0;mycoolern.sh2 =0;mycoolern.sh3 =0;mycoolern.sh4=0;mycoolern.sh5=0;mycoolern.sh6=0;
	 Tld1=0;Tld2=0;Tld3=0;Tld4=0;Tld5=0;Tld6=0;
	 t1 = 294;t2=0;t3=0;t4=0;t5=0;t6=0;
	 xishu = 0.2;
	 mycoolern.isf =0.5;
	 P1 = -61;
	 mycoolern.Pg2 = -61.1378;
	 mycoolern.Pg3 = -216;
	 mycoolern.Pg4 = -276;
	 mycoolern.Pg5 = -336;
	 P6 = -396;
	 B = -137;
	 mycoolerd.fpt211 = -370;
	 mycoolerd.g32 = 4.6;
	 mycoolerd.g33 = 7.5;
	 alfa = 4;
     gufa = 1;
     qifa = 0.1;
	 qiliang = 34.529;
     bili2 = 0.2163;
	 bili3 = 0.3556;
	 ybili = 0.447;
	 dm1 = 0;dm2 =0;dm3=0;dm4=dm5=dm6=0;
	 um1 = um2 =um3 = um4 = um5 = um6=0;
	 temperature = new double[25];
	 roompress = new double[25];
	 press = new double[25];
	 mycoolerd.zikg04 = mycoolerd.zikg06 = mycoolerd.zikg07 = mycoolerd.zikg08 = mycoolerd.zikg09= mycoolerd.zikg10=1;
}
cooler::~cooler()
{
	delete []temperature;
	delete []roompress;
	delete []press;
}
cooler::cooler(cooler* &pcooler)
{

     mycoolerd.piag01 = 0;
     mycoolerd.pcag02 = 0;
     mycoolerd.piag03 = 0;
     mycoolerd.piag04 = 0;
     mycoolerd.pcag05 = 0;
     mycoolerd.piag06 = 0;

	 Pg07 = 9671;
	 Pg08 = 7335;
	 Pg09 = 4695;
	 Pg10 = 3980;
	 Pg11 = 2500;
	 Pg12 = 2080;
     mycoolerd.pcag13 = -50;
     Pg14 = -596;
     mycoolerd.pig14 = 0;
     weight = 0.0289;
	 Tk = 20;
	 Tl = 1347;
	 C = 0.2;
	 D = 0.3;
	 mycoolerd.ftt231= 0;
     mycoolerd.trag01 = 25;
     mycoolerd.tiag02 = 25;
	 B = -137;
	 mycoolerd.fpt211 = -370;
	 P1 = -61;
	 mycoolern.Pg2 = 249;
	 mycoolern.Pg3 = -216;
	 mycoolern.Pg4 = -276;
	 mycoolern.Pg5 = -336;
	 P6 = -396;
	 alfa =1.5;
	 mycoolern.Tg2=25;mycoolern.Tg3=25;mycoolern.Tg4=25;mycoolern.Tg5=25;
     Cq=1.006;Cg=0.8;
     M1=0;M2=0;M3=0;M4=0;M5=0;M6=0;
     s1=14.98;s2=9.99;s3=9.99;s4=9.99;s5=8.74;s6=7.49;
     mycoolern.Ts1=85;mycoolern.Ts2=85;mycoolern.Ts3=85;mycoolern.Ts4=85;mycoolern.Ts5=85;mycoolern.Ts6=85;
     Tq1=25;Tq2=25;Tq3=25;Tq4=25;Tq5=25;Tq6=25;
	 mycoolern.sh1 = 0.6;mycoolern.sh2 =0;mycoolern.sh3 =0;mycoolern.sh4=0;mycoolern.sh5=0;mycoolern.sh6=0;
	 t1 = 294;t2=0;t3=0;t4=0;t5=0;t6=0;
	 mycoolern.isf =0.5;
	 mycoolerd.g32 = 4.7;
	 mycoolerd.g33 = 7.5;
	 dm1 = 0;dm2 =0;dm3=0;
	 temperature = new double[15];
	 roompress = new double[15];
	 press = new double[15];
	 temperature = pcooler->temperature;
	 roompress = pcooler->roompress;
	 press = pcooler->press;
}
void cooler::roompresscompute(double* & Press,double* &windcount,double* &windcount2)

{
         
	 int i=0;
          
     double Fg03 =  0.1849*mycoolerd.zikg04*sqrt(Pg07-mycoolerd.piag01);
	
	 if(mycoolern.sh1<0.4)
		 F1c = Fg03;
     else
         F1c = 0.1115/mycoolern.sh1*sqrt(mycoolerd.piag01-mycoolerd.pcag13);
     dm1 = Fg03-F1c;
  
     mycoolerd.piag01 += dm1/s1;
   
     windcount[i] = F1c;

     windcount2[i] = Fg03;
     i++;
     
	 

     
     double Fg04 = 0.1443*mycoolerd.zikg06*sqrt(Pg08-mycoolerd.pcag02);

	 if(mycoolern.sh2<0.4)
		 F2c = Fg04;
	 else
		 F2c = 0.0822/mycoolern.sh2*sqrt(mycoolerd.pcag02-mycoolern.Pg2);
     dm2 = Fg04-F2c;
     
     mycoolerd.pcag02 +=dm2/s2; 
    

     windcount[i] = F2c;
     windcount2[i] = Fg04;

     i++;

     
     double Fg05 = 0.2521*mycoolerd.zikg07*sqrt(Pg09-mycoolerd.piag03);
	 
		 if(mycoolern.sh3<0.4)
			 F3c = Fg05;
		 else
			 F3c = 0.1483/mycoolern.sh3*sqrt(mycoolerd.piag03-mycoolern.Pg3);
     dm3  = Fg05-F3c;
     
     mycoolerd.piag03 += dm3/s3;
    

     windcount[i] = F3c;

     windcount2[i] = Fg05;

     i++;
     
     double Fg07 = 0.1654*mycoolerd.zikg08*sqrt(Pg10-mycoolerd.piag04);
	 
		 if(mycoolern.sh4<0.2)
			 F4c = Fg07;
		 else
			 F4c = 0.0597/mycoolern.sh4*sqrt(mycoolerd.piag04-mycoolern.Pg4);
     dm4 = Fg07-F4c;
     
     mycoolerd.piag04 +=dm4/s4;


     windcount[i] = F4c;

     windcount2[i] = Fg07;

     i++;

     
     double Fg08 = 0.3236*mycoolerd.zikg09*sqrt(Pg11-mycoolerd.pcag05);
	
	 if(mycoolern.sh5<0.2)
		 F5c = Fg08;
	 else
		 F5c = 0.0908/mycoolern.sh5*sqrt(mycoolerd.pcag05-mycoolern.Pg5);
     dm5 = Fg08-F5c;
     
     mycoolerd.pcag05 += dm5/s5;
    
	
     windcount[i] = F5c;

     windcount2[i] = Fg08;

	 i++;
     
    
     
     double Fg09 = 0.2389*mycoolerd.zikg10*sqrt(Pg12-mycoolerd.piag06); 
	 if(mycoolern.sh6<0.2)
		 F6c = Fg09;
	 else
		 F6c = 0.0596/mycoolern.sh6*sqrt(mycoolerd.piag06-P6);
     dm6 = Fg09-F6c;
     
     mycoolerd.piag06 +=dm6/s6;

     windcount[i] = F6c;

      
} 
void cooler::Presscompute(double* & Press,double* & windcount)
{
     double Fe1;
     double Fe2;
     double Fe3;
     double Fe4;
	 double Fe5;
    
     double F2;
     double F3;
     double Fy;
                                                                                          
     int i=0;
     
     F2 = 1.4365*sqrt(mycoolerd.pcag13-B);
	 Fe1 = 1.4367*sqrt(mycoolerd.pcag13-mycoolern.Pg2); 
     um1 = F1c-F2-Fe1;
     mycoolerd.pcag13 += um1/s1;

     windcount[i] = F2;
	 i++;
	
     windcount[i] = Fe1;
	 i++;
     //******************************
     
     
     Fe2 = 0.7366*sqrt(mycoolern.Pg2-mycoolern.Pg3);
     
     um2 = F2c-Fe2+Fe1;
     
     mycoolern.Pg2 += um1/s2;
     
     windcount[i] = Fe2;

     i++;
     //**********************************
     
    
	 F3 = 1.5657*sqrt(mycoolern.Pg3-mycoolerd.fpt211);
     Fe3 = 0.1076*sqrt(mycoolern.Pg3-mycoolern.Pg4);
     um3 = F3c+Fe2-F3-Fe3;
     
     mycoolern.Pg3 +=um3/s3;
    
	 windcount[i] = F3;
	 i++;
    //***********************************
	 
   	 Fe4 = 1.1081*sqrt(mycoolern.Pg4-mycoolern.Pg5);
     
     um4  = F4c-Fe4+Fe3;
     
     mycoolern.Pg4 += um4/s4;
     
     windcount[i] = Fe4;

	 i++;
	 //**********************************
	 
     Fe5 = 2.4736*sqrt(mycoolern.Pg5-P6);

     um5 = F5c-Fe5+Fe4;
     
     mycoolern.Pg5 += um5/s5;
     
	 windcount[i] = Fe5;
	 i++;
     //*************************************
     	 
     Fy = 1.8326*sqrt(P6-Pg14);
     
     um6 = F6c+Fe5-Fy;
    
     P6 += um6/s6;
     mycoolerd.pig14 = P6+200;
     windcount[i] = Fy;
	 i++;
	 windcount[i] = Fe3;
    
}
void cooler::temperaturecompute(double* & temperature,double* & windcount1,double*& windcount2,double*&windcount3)
{
    double Q,Q3,Q4,Q5,Q6;
    
 	int i = 0;
    
    //******************************
    
    double td1,td2,td;

	td2 = mycoolern.Ts1-Tk;

	mycoolern.Ts1 = mycoolern.Ts1*(1-gufa)+gufa*(w*Tl+mycoolern.Ts1*M1)/(M1+w);
	
	Tld1 = 0.75*0.13*mycoolerd.g32*mycoolern.sh1*4.5333*1.45/60;
	
    td1 = Tl-mycoolerd.trag01;
    if(td1>-50&&td1<0)
       td1 = -td1;
    td = (td1-td2)/log(td1/td2);
	
	Cg = 699.5+0.31812*(mycoolern.Ts1+273)-0.000062308*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)-0.0000000013753*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)-0.00000000000051388*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)*(mycoolern.Ts1+273);
	mycoolern.sh1 = mycoolern.sh1+(w-Tld1)/(1-mycoolern.isf)/s1/1.45;
	Q = 1000*td*mycoolern.sh1*s1*(1-mycoolern.isf)*1.45*alfa;
	
	mycoolerd.trag01 =0.9*mycoolerd.trag01+0.1*(Tq1*windcount2[0]+mycoolerd.trag01*s1-windcount3[0]*mycoolerd.trag01)/(s1);
	if(Q<0)
	{
		AfxMessageBox("Q<0");
		return ;
	}
	M1 +=w-Tld1; 
	Tq1 =(Q/Cq/windcount2[0]+25);
    mycoolern.Ts1 =(1-gufa)*mycoolern.Ts1+gufa*(mycoolern.Ts1-Q/Cg/M1/1000);
	

	i++;
    
    //**********************************
    td2 = mycoolern.Ts2-Tk;
	
    mycoolern.Ts2= (1-gufa)*mycoolern.Ts2+gufa*(Tld1*mycoolern.Ts1+M2*mycoolern.Ts2)/(Tld1+M2);
 
	Tld2 = 0.75*0.13*mycoolerd.g32*mycoolern.sh2*4.53*1.45/60;
	Q3 = mycoolern.Tg3*windcount3[2];
    Q4 = windcount3[1]*mycoolerd.trag01;
	Q5 = mycoolern.Tg2*windcount3[3];
	mycoolern.Tg2 =0.9*mycoolern.Tg2+0.1*(Tq2*windcount2[1]+s2*mycoolern.Tg2+Q3+Q4-Q5)/(s2);
	mycoolerd.ftt231= mycoolern.Tg2;
	td1 = mycoolern.Ts1-mycoolern.Tg2;
    
    td = (td1-td2)/log(td1/td2);
    Cg = 699.5+0.31812*(mycoolern.Ts2+273)-0.000062308*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)-0.0000000013753*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)-0.00000000000051388*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)*(mycoolern.Ts2+273);
	mycoolern.sh2 = mycoolern.sh2+(Tld1-Tld2)/(1-mycoolern.isf)/s2/1.45;
	Q = 1000*td*s2*mycoolern.sh2*(1-mycoolern.isf)*10*1.45;
    M2 +=Tld1-Tld2;
	Tq2 =(Q/Cq/windcount2[1]+25);
	mycoolern.Ts2 = (1-gufa)*mycoolern.Ts2+gufa*(mycoolern.Ts2-Q/Cg/M2/1000); 
   
    i++;
    //*********************************
   
    td2 = mycoolern.Ts3-Tk;
	
    mycoolern.Ts3= gufa*(Tld2*mycoolern.Ts2+M3*mycoolern.Ts3)/(Tld2+M3)+(1-gufa)*mycoolern.Ts3;
    
	Q3 = Cq*mycoolern.Tg3*windcount3[7];
    Q4 = Cq*windcount3[2]*mycoolern.Tg3;
    Q5 = windcount2[2]*Cq*Tq3;


    mycoolern.Tg3 = 0.9*mycoolern.Tg3+0.1*(Q5-Q4+s3*mycoolern.Tg3*Cq-Q3)/(s3)/Cq;
	td1 = mycoolern.Ts2-mycoolern.Tg3;

    td = (td1-td2)/log(td1/td2);
	Tld3 = 0.75*0.13*mycoolerd.g32*mycoolern.sh3*4.53*1.45/60;
    Cg = 699.5+0.31812*(mycoolern.Ts3+273)-0.000062308*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)-0.0000000013753*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)-0.00000000000051388*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)*(mycoolern.Ts3+273);
	mycoolern.sh3 = mycoolern.sh3+(Tld2-Tld3)/(1-mycoolern.isf)/s3/1.45;
	Q = 1000*td*(1-mycoolern.isf)*mycoolern.sh3*s3*10*1.45; 
    M3 +=Tld2-Tld3;
	Tq3 =(Q/Cq/windcount2[2]+25);
	mycoolern.Ts3 = (1-gufa)*mycoolern.Ts3+gufa*(mycoolern.Ts3-Q/Cg/M3/1000);
    
    i++;
    //********************************
   	
    td2 = mycoolern.Ts4-Tk;

    mycoolern.Ts4= gufa*(Tld3*mycoolern.Ts3+M4*mycoolern.Ts4)/(Tld3+M4)+(1-gufa)*mycoolern.Ts4;
	Q4 = windcount2[3]*Cq*Tq4;
	Q3 = Cq*mycoolern.Tg3*windcount3[7];
	Q5 = Cq*mycoolern.Tg4*windcount3[4];
    mycoolern.Tg4= 0.9*mycoolern.Tg4+0.1*(Q4-Q5+Cq*s4*mycoolern.Tg4+Q3)/(s4)/Cq;
	
	td1 = mycoolern.Ts3-mycoolern.Tg4;
    
	Tld4 = 0.75*0.13*mycoolerd.g33*mycoolern.sh4*4.53*1.45/60;
    td = (td1-td2)/log(td1/td2);
    Cg = 699.5+0.31812*(mycoolern.Ts4+273)-0.000062308*pow(mycoolern.Ts4+273,2)-0.0000000013753*pow(mycoolern.Ts4+273,3)-0.00000000000051388*pow(mycoolern.Ts4+273,4);
	mycoolern.sh4 = mycoolern.sh4+(Tld3-Tld4)/(1-mycoolern.isf)/s4/1.45;
	Q = 1000*td*s4*(1-mycoolern.isf)*mycoolern.sh4*2*1.45; 
    M4 +=Tld3-Tld4;
	Tq4 =(Q/Cq/windcount2[3]+25);
	mycoolern.Ts4 = (1-gufa)*mycoolern.Ts4+gufa*(mycoolern.Ts4-Q/Cg/M4/1000); 
    
    //********************************

    td2 = mycoolern.Ts5-mycoolern.Tg5;
    mycoolern.Ts5= gufa*(Tld4*mycoolern.Ts4+M5*mycoolern.Ts5)/(Tld4+M5)+(1-gufa)*mycoolern.Ts5;
    Q5 = windcount2[4]*Cq*Tq5;
    Q3 = Cq*mycoolern.Tg4*windcount3[4];
	Q4 = Cq*mycoolern.Tg5*windcount3[5];
	
	mycoolern.Tg5 = 0.9*mycoolern.Tg5+0.1*(Q5+Q3-Q4+s5*Cq*mycoolern.Tg5)/s5/Cq;
	td1 = mycoolern.Ts4-mycoolern.Tg5;
	Tld5 = 0.75*0.13*mycoolerd.g33*mycoolern.sh5*4.53*1.45/60;
    td = (td1-td2)/log(td1/td2);
    Cg = 699.5+0.31812*(mycoolern.Ts5+273)-0.000062308*pow(mycoolern.Ts5+273,2)-0.0000000013753*pow(mycoolern.Ts5+273,3)-0.00000000000051388*pow(mycoolern.Ts5+273,4);
	mycoolern.sh5 = mycoolern.sh5+(Tld4-Tld5)/(1-mycoolern.isf)/s5/1.45;
	Q = 1000*td*s5*mycoolern.sh5*(1-mycoolern.isf)*2*1.45; 
    M5 +=Tld4-Tld5;
	Tq5 =(Q/Cq/windcount2[4]+25);
	mycoolern.Ts5 = (1-gufa)*mycoolern.Ts5+gufa*(mycoolern.Ts5-Q/Cg/M5/1000);
    
    //*******************************
    
    td2 = mycoolern.Ts6-Tk;

    mycoolern.Ts6= gufa*(Tld5*mycoolern.Ts5+M6*mycoolern.Ts6)/(Tld5+M6)+(1-gufa)*mycoolern.Ts6;
    Q6 = Tq6*Cq*windcount2[5];
    Q3 = Cq*mycoolern.Tg5*windcount3[5];
   
    
    mycoolerd.tiag02 = 0.9*mycoolerd.tiag02+0.1*(Q6+Q3+Cq*s6*mycoolerd.tiag02-Cq*windcount3[6]*mycoolerd.tiag02)/s6/Cq;
	
	td1 = mycoolern.Ts5-mycoolerd.tiag02;
    
	Tld6 = 0.75*0.13*mycoolerd.g33*mycoolern.sh6*4.53*1.45/60;
    td = (td1-td2)/log(td1/td2);
    Cg = 699.5+0.31812*(mycoolern.Ts6+273)-0.000062308*pow(mycoolern.Ts6+273,2)-0.0000000013753*pow(mycoolern.Ts6+273,3)-0.00000000000051388*pow(mycoolern.Ts6+273,4);
	
	mycoolern.sh6 = mycoolern.sh6+(Tld5-Tld6)/(1-mycoolern.isf)/s6/1.45;
	Q = 1000*td*mycoolern.sh6*s6*(1-mycoolern.isf)*40*1.45;
    M6 +=Tld5-Tld6;
	Tq6 =(Q/Cq/windcount2[5]+25);
	mycoolern.Ts6 = (1-gufa)*mycoolern.Ts6+gufa*(mycoolern.Ts6-Q/Cg/M6/1000);
    
}

bool cooler::simulink()
{
	return  compute(roompress,press,temperature); 
}          
bool cooler::compute(double* & roominpress,double*& press,double*& temperature)
{
     double * windonroom = new double[15];
     double * windinroom = new double[15];
     double * flowwind = new double[15];
     double *& windcountonroom = windonroom;
     double *& windcountinroom = windinroom;
     double *& flowwindcount = flowwind;
     roompresscompute(roominpress,windcountonroom,windcountinroom);
     Presscompute(press,flowwindcount);
     temperaturecompute(temperature,windcountinroom,windcountonroom,flowwindcount);
     delete []windcountonroom;
     delete []windcountinroom;
     delete []flowwindcount;
     return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -