Modelos de Sistemas con Ing. Rafael A. Díaz Chacón U.C.V. VII RAD/99 Modelo de Reactores Químicos
n Hay cuatro reactores químicos colocados en paralelo. Cada uno de ellos opera en forma independiente. n Un compresor con tasa de flujo molal constante proporciona el hidrógeno a través de un tanque de alimentación de presión. n Cada reactor tiene una válvula que permite controlar la presión en el reactor. Modelo de Reactores Químicos: Descripción del sistema RAD/99
Modelo de Reactores Químicos: Descripción del sistema RAD/99 COMPRESOR TANQUE DE ALIMENTACIÓN REACTOR 1 REACTOR 2 REACTOR 3 REACTOR 4 VÁLVULAS
n La presión nominal del tanque de alimentación es de 150 psi. La presión crítica es de 100 psi. En el instante inicial la presión es de 500 psi. n Cada reactor se carga con producto fresco y se programan a entrar en operación cada media hora a partir de t = 0, iniciando con el reactor 1. n A consecuencia de la reacción, la concentración en el reactor decrece en forma exponencial, siempre y cuando la presión permanezca por encima de la crítica. Modelo de Reactores Químicos: Condiciones de Operación RAD/99
n Cuando un reactor baja su concentración al 10% del valor inicial se considera terminada la reacción. En este momento se apaga el reactor, se descarga, limpia y carga para una nueva reacción. n El tiempo de descarga sigue una distribución exponencial con media de una hora. n El tiempo de limpieza y carga sigue una distribución normal con media de una hora y desviación estándar de media hora. Modelo de Reactores Químicos: Condiciones de Operación RAD/99
Modelo de Reactores Químicos: Ecuaciones del sistema RAD/99
Modelo de Reactores Químicos: Red SLAM (I) RAD/99
Modelo de Reactores Químicos: Red SLAM (II) RAD/99
Modelo de Reactores Químicos: Red SLAM (III) RAD/99
Modelo de Reactores Químicos: Programa de Control RAD/99 GEN,"RAFAEL DIAZ","REACTORES QUIMICOS",13/5/99,1,YES,YES; LIMITS,24,2,,1,1; CONTINUOUS,5,-1,0.001,0.1,,WARNING; ARRAY,1,4,{0,0,0,0,}; TIMST,1,SS[5],"PRESION DEL TANQUE ",0,0.0,1.0; TIMST,2,LL[2],"REACTORES FUNCIONANDO",0,0.0,1.0; RECORD,1,,TNOW,"TIME",{AWESIM,EXCEL},,TTBEG,12,,{{SS[1],"CONC1", },{SS[2],"CONC2", },{SS[3],"CONC3",}, {SS[4],"CONC4",},{XX[6]/1000,"PNOMINAL",}, {SS[5]/1000,"PRESION", }}; NET; INITIALIZE,0.0,300,YES; FIN; “Este programa ha sido editado para esta lámina”
Modelo de Reactores Químicos: Definición de Variables (I) RAD/99 SIGNIFICADO DE LAS VARIABLES SLAM DEL MODELO VARIABLES GLOBALES REALES XX[1-4] --> CARGA INICIAL DE PRODUCTO PARA EL REACTOR 1-4 XX[5] --> XX[6] --> PRESION NOMINAL DEL TANQUE DE ALIMENTACION XX[7] --> PRESION CRITICA DEL TANQUE DE ALIMENTACION XX[8] --> TASA DE FLUJO MOLAL XX[9] --> CONSTANTE DE REACCION COMPUESTA XX[10] --> XX[11-14] --> CONSTANTE DE REACCION DEL PRODUCTO 1-4 XX[15] --> XX[16] --> TIEMPO PROMEDIO DE DESCARGA DE UN REACTOR XX[17] --> TIEMPO PROMEDIO EN LIMPIEZA Y CARGA DE UN REACTOR XX[18] --> DESVIACION ESTANDAR DE XX[17] XX[19] --> XX[20] --> XX[21-24] --> VOLUMEN DEL REACTOR 1-4
Modelo de Reactores Químicos: Definición de Variables (II) RAD/99 SIGNIFICADO DE LAS VARIABLES SLAM DEL MODELO VARIABLES DE ESTADO SS[1-4] --> CONCENTRACION DEL REACTOR 1-4 SS[5] --> PRESION DEL TANQUE DE ALIMENTACION VARIABLES GLOBALES ENTERAS LL[1] --> ULTIMO REACTOR QUE INICIO ACTIVIDADES LL[2] --> NUMERO DE REACTORES EN FUNCIONAMIENTO ******** ATRIBUTOS REALES ********* ATRIB[1] --> INSTANTE EN QUE UN REACTOR SALE DE FUNCIONAMIENTO ******** ATRIBUTOS ENTEROS ********* LTRIB[1] --> IDENTIFICADOR DE CADA REACTOR
Modelo de Reactores Químicos: Inicialización y Lectura de Datos (I) RAD/99 “Este programa ha sido editado para esta lámina” BOOL SWFUNC INTLC(UINT uiRun) {lectura (); //Calculo y asignacion de valores iniciales SS[1]= c1; SS[2]= c2; SS[3]= c3; SS[4]= c4; SS[5]= p5; XX[1]= c1; XX[2]= c2; XX[3]= c3; XX[4]= c4; XX[6] = pn; XX[7] = pc; XX[8] = tfm; XX[9] = crc; XX[11] = crp1; XX[12] = crp2; XX[13] = crp3; XX[14] = crp4; XX[16] = tpdescarga; XX[17] = tpcarga; XX[18] = dest; XX[21] = vol1; XX[22] = vol2; XX[23] = vol3; XX[24] = vol4; return(TRUE);}
Modelo de Reactores Químicos: Inicialización y Lectura de Datos (II) RAD/99 “Este programa ha sido editado para esta lámina” void lectura (void) { char etiqueta[100]; FILE *fp; fp=fopen("c:/projects/casos/reactor.dat","r"); fscanf(fp,"%s ",etiqueta); fscanf(fp,"%s %f",etiqueta, &c1); fscanf(fp,"%s %f",etiqueta, &c2); fscanf(fp,"%s %f",etiqueta, &c3); fscanf(fp,"%s %f",etiqueta, &c4); fscanf(fp,"%s %f",etiqueta, &pn); fscanf(fp,"%s %f",etiqueta, &pc); fscanf(fp,"%s %f",etiqueta, &tfm); fscanf(fp,"%s %f",etiqueta, &crc); fscanf(fp,"%s %f",etiqueta, &crp1); fscanf(fp,"%s %f",etiqueta, &crp2); fscanf(fp,"%s %f",etiqueta, &crp3); fscanf(fp,"%s %f",etiqueta, &crp4); fscanf(fp,"%s %f",etiqueta, &tpdescarga); fscanf(fp,"%s %f",etiqueta, &tpcarga); fscanf(fp,"%s %f",etiqueta, &dest); fscanf(fp,"%s %f",etiqueta, &vol1); fscanf(fp,"%s %f",etiqueta, &vol2); fscanf(fp,"%s %f",etiqueta, &vol3); fscanf(fp,"%s %f",etiqueta, &vol4); fscanf(fp,"%s %f",etiqueta, &p5); fclose(fp); return; }
Modelo de Reactores Químicos: Datos del modelo RAD/99 DATOS_DEL_MODELO_DE_LOS_REACTORES_QUIMICOS_EN_REACTOR.DAT CONCENTRACION_INICIAL_REACTOR_1 0.1 CONCENTRACION_INICIAL_REACTOR_2 0.4 CONCENTRACION_INICIAL_REACTOR_3 0.2 CONCENTRACION_INICIAL_REACTOR_4 0.5 PRESION_NOMINAL_TANQUE_DE_ALIMENTACION 150 PRESION_CRITICA_TANQUE_DE_ALIMENTACION 100 TASA_DE_FLUJO_MOLAL CONSTANTE_DE_REACCION_COMPUESTA CONSTANTE_DE_REACCION_DEL_PRODUCTO_ CONSTANTE_DE_REACCION_DEL_PRODUCTO_ CONSTANTE_DE_REACCION_DEL_PRODUCTO_ CONSTANTE_DE_REACCION_DEL_PRODUCTO_ TIEMPO_PROMEDIO_DE_DESCARGA_DE_UN_REACTOR 1 TIEMPO_PROMEDIO_EN_LIMPIEZA_Y_CARGA 1 DESVIACION_ESTANDAR_DE_LIMPIEZA_Y_CARGA 0.5 VOLUMEN_DEL_REACTOR_1 10 VOLUMEN_DEL_REACTOR_2 15 VOLUMEN_DEL_REACTOR_3 20 VOLUMEN_DEL_REACTOR_4 25 PRESION_INICIAL_TANQUE_DE_ALIMENTACION 500
Modelo de Reactores Químicos: Función STATE RAD/99 “Este programa ha sido editado para esta lámina” void SWFUNC STATE (void) { int i; float disponible, posicion, flujo, sumaflujos; sumaflujos = 0; if(SS[5]<XX[7]) posicion = SS[5]; else { posicion = XX[7]; } for (i =1; i <= 4; i++) { disponible = GETARY(1,i); DD[i] =(-XX[10+i])*SS[i]*disponible*posicion; flujo = DD[i]*(-XX[20+i]); sumaflujos = sumaflujos + flujo; } DD[5] = XX[9]*(XX[8]-sumaflujos); return; }
Modelo de Reactores Químicos: Reporte de Salida RAD/99 ** AweSim SUMMARY REPORT ** Mon May 17 08:49: Simulation Project : REACTORES QUIMICOS Modeler : RAFAEL DIAZ Date : 13/5/99 Scenario : REACTOR Run number 1 of 1 Current simulation time : Statistics cleared at time : ** OBSERVED STATISTICS REPORT ** Label Mean Standard Number of Minimum Maximum Value Deviation Observations Value Value FUERA DE SERVICIO ** TIME-PERSISTENT STATISTICS REPORT ** Label Mean Standard Minimum Maximum Time Current Value Deviation Value Value Interval Value PRESION DEL TANQUE REACTORES FUNCIONANDO
Modelo de Reactores Químicos: Histograma del tiempo fuera de servicio RAD/99
Modelo de Reactores Químicos: Comparación de variables a través del tiempo RAD/99 C 1 C 2 C 3 C 4 PRESION/1000 PNOMINAL/1000