MODULO COMPUTACIONAL PARA UN CSTR NO ADIABATICO EN ESTADO ESTACIONARIO 1. OBJETIVOS DEL PROYECTO: Modelar un reactor CSTR no adiabático en estado estacionario, hallando su conversión, volumen y temperatura mediante el uso de un software (Matlab) con una nomenclatura clara para que puedan ser útiles en la simulación de otras situaciones sin tener que efectuar o conocer a fondo los lenguajes de programación. 2. FUNDAMENTACIÓN DEL PROYECTO Lo que se busca es tener una simulación de un reactor CSTR no adiabático en estado estacionario para una reacción química específica. Lo primordial de este trabajo es mostrar el funcionamiento de un reactor continuo CSTR para ello se llevara a cabo la modelación matemática comprobando la complejidad de modelo de operación, comparando perfiles de temperatura, concentración. 3. MARCO TEÓRICO Reactor Continuo de Mezcla Perfecta Un tipo de reactor de uso común en procesos industriales es el reactor continuo de mezcla perfecta. Se llama Reactor continuo de mezcla perfecta (CSTR) o reactor de retro mezclas y se emplea sobre todo para reacciones en fase liquida. Normalmente se opera en Estado Estacionario y se asume que produce una mezcla perfecta. No hay dependencia del tiempo o de la posición en la temperatura, la concentración o de la velocidad de reacción dentro del CSTR. Es decir, todas las variables son iguales en todos los puntos del interior del reactor. Como la temperatura y la concentración son también idénticas en todo el interior del recipiente de reacción, son las mismas en el punto de salida. Por lo tanto, la temperatura y la concentración de la corriente de salida se toman en el modelo como si fueron iguales a aquellas en el interior del reactor. Para un sistema donde el mezclado es altamente no ideal, este modelo de mezcla perfecta resulta inadecuado, por lo que debemos recurrir a técnicas de modelaje, como la distribución de tiempo de residencia, para obtener resultados significativos.
CSTR con efectos de calor Aplicaremos el balance general de energía, al CSTR en estado estacionario. 𝑄 − 𝑊𝑠 − 𝐹𝐴𝑂 ∑ 𝜃𝑖 𝐶𝑝𝑖 (𝑇 − 𝑇𝑖𝑜 ) − [∆𝐻𝑅𝑥 (𝑇𝑅 ) + ∆𝐶𝑝 (𝑇 − 𝑇𝑅 )]𝐹𝐴𝑜 𝑋 = 0 Aunque el CSTR está perfectamente mezclado y la temperatura es uniforme en todo el recipiente de reacción, tales condiciones no implican que la reacción se efectúe isotérmicamente. La operación isotérmica tiene lugar cuando la temperatura de alimentación es idéntica a la temperatura del líquido dentro del CSTR. Nota: En muchos cálculos, el balance molar del CSTR (FAo X =-rAV) se empleará para reemplazar el termino, es decir (FAoX) será reemplazado por (-rAV). Teniendo el siguiente balance. 𝑄 − 𝑊𝑠 − 𝐹𝐴𝑂 ∑ 𝜃𝑖 𝐶𝑝𝑖 (𝑇 − 𝑇𝑖𝑜 ) + (𝑟𝐴 𝑉)(∆𝐻𝑅𝑥 ) = 0 Para un estado no adiabático donde interviene el calor se tiene la siguiente ecuación: 𝑄 = 𝑈𝐴(𝑇𝑎 − 𝑇) Principales características de un reactor CSTR Las características principales de este tipo de reactores son las siguientes: a) La reacción química se desarrolla en un sistema abierto. b) Los reactantes se añaden continuamente y la mezcla reactiva se extrae en forma continua. c) Operan en régimen estable. Se considera que la mezcla reactiva está bien agitada haciendo que tanto la presión, como la composición y la temperatura sean las mismas en cualquier parte del reactor. Algunas ventajas de este tipo de reactores son las siguientes: a) Su costo de operación es bajo comparado con el de los reactores por lotes.
b) Su operación es continua. c) Se facilita el control automático de la producción. d) Se tiene una sola temperatura en el sistema de reacción. Principales Funciones del Reactor CSTR Asegurar el tipo de contacto o modo de fluir de los reactantes en el interior del tanque, para conseguir una mezcla deseada con los materiales reactantes. Proporcionar el tiempo suficiente de contacto entre las sustancias y el catalizador, para conseguir la extensión deseada de la reacción. Permitir condiciones de presión, temperatura y composición de modo que la reacción tenga lugar en el grado y a la velocidad deseada, atendiendo a los aspectos termodinámicos y cinéticos de la reacción. 3.1. Fundamentos de Ingeniería Estudio del mecanismo de reacción: cinética de la reacción, reacciones principales y secundarias, rangos de operación y otras limitaciones, etc. Formulación del balance de materia 𝐹𝐴𝑜 𝑋 𝑉= 𝑘𝐶𝐴𝑜 (1 − 𝑋)
Formulación del balance de energía
𝑈𝐴(𝑇𝑎 − 𝑇) − 𝐹𝐴𝑂 ∑ 𝜃𝑖 𝐶𝑝𝑖 (𝑇 − 𝑇𝑖𝑜 ) − [∆𝐻𝑅𝑥 (𝑇𝑅 ) + ∆𝐶𝑝 (𝑇 − 𝑇𝑅 )]𝐹𝐴𝑜 𝑋 = 0 3.2. Fundamentos matemático Reacción General en fase liquida 𝑎𝐴 + 𝑏𝐵 → 𝑐𝐶 + 𝑑𝐷 Dado 𝐹𝐴𝑜 , 𝐶𝐴𝑜 , 𝑘𝑜 , 𝐸, 𝐶𝑝𝑎 , ∆𝐻𝑅𝑥 , ∆𝐶𝑝𝑖 = 0, 𝜃𝑖 = 0 CSTR
Ecuación de Diseño 𝑉 =
𝐹𝐴𝑜 𝑋 −𝑟𝐴
Ley de Velocidad −𝑟𝐴 = 𝑘𝐶𝐴 𝐸
𝑘 = 𝐴𝑒 −𝑅𝑇 Estequiometria 𝐶𝐴 = 𝐶𝐴𝑜 (1 − 𝑋) 𝐹𝐴𝑜 𝐴𝑜 (1−𝑋)
Combinando 𝑉 = 𝑘𝐶
V especificado: Calcular X y T
X especificado: Calcular V y T
Se necesita k(T) Dos ecuaciones y dos incógnitas: Calcular T 𝑇=
𝑋𝑀𝐵 =
𝜏𝑘 𝑉𝐶𝐴𝑜 𝑉 ,𝜏 = = 1 + 𝜏𝑘 𝐹𝐴𝑜 𝑣𝑜 𝐸
Calcular k 𝐸 𝐸 1 1 𝑘(𝑇)𝐴𝑒 −𝑅𝑇 = 𝑘𝑖 exp [ ( − )] 𝑅 𝑇1 𝑇
𝑋𝑀𝐵 =
𝜏𝐴𝑒 −𝑅𝑇 𝐸
1 + 𝜏𝐴𝑒 −𝑅𝑇
𝑋𝐵𝐸 =
Calcular V 𝐹𝐴𝑜 𝑋 𝑉= 𝑘𝐶𝐴𝑜 (1 − 𝑋)
4.- DESCRIPCIÓN DEL CÓDIGO DE PROGRAMACIÓN 4.1.- La pantalla general muestra un reactor CSTR no adiabático en estado estacionario que muestra: Moles alimentados (Fio = lbmol/hr) Superficie de enfriamiento (A = ft2) Coeficiente de trasferencia de calor (U = BTU/hr.ft2.°F ) Temperatura de enfriamiento (R) Volumen de reactor (V = ft3) Cálculos de la temperatura y la conversión Grafica 4.2.-Llenado de los datos requeridos
Esta sección presenta siete subsecciones se introducen los flujos molares del óxido de propileno (Fao), metanol (Fmo) y del agua (Fbo) así como también el área del serpentín, la temperatura y el coeficiente de calor.
Se puede llenar individualmente estos datos a su criterio, teniendo en cuenta que la materia prima es el óxido de propileno y el agua (no pueden ser valores nulos).
4.3.-Cálculo para alcanzar cierta Conversión y Temperatura
En esta sección se hace clic en “Calcular” para obtener valores de Conversión y Temperatura alcanzada.
4.4.- Gráfica y Datos
En esta sección puede hacer clic en Graficar temperatura vs conversión” o “Graficar Tau vs t” para generar la correspondiente gráfica después de ingresados los datos.
Además se administra dos botones específicos de limpiar y salir
El botón salir, esta sirve para confirmar si deseamos retirarnos del programa en ella con mayor exactitud. Puede decir “Si” o “No. El botón limpiar, esta sirve para limpiar los datos que hemos establecido.
4.5.- Alcances y limitaciones del módulo
El software establecido es un módulo especifico ya que contara con una reacción predeterminada por ello solo funcionara en base a esa misma. En caso de querer introducir una nueva reacción, entonces habría que modificar la codificación del proyecto para así adaptarlo a uno nuevo.
5.- VALIDACIÓN DEL MÓDULO Primero se hace validar los botones donde se introducirán los datos Para U function edit5_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit5,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit5,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on');
set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para A function edit6_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit6,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit6,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para V function edit7_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit7,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit7,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para FAo function edit8_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit8,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit8,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para FMo function edit9_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit9,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit9,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para FBo function edit10_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit10,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit10,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para T° del Agua function edit11_Callback(hObject, eventdata, handles) if isnan(str2double(get(handles.edit11,'String'))) warndlg('El valor debe ser numérico !','Aviso!') set(handles.edit11,'String',''); set(handles.pushbutton1,'Enable','off'); set(handles.pushbutton2,'Enable','off'); set(handles.pushbutton3,'Enable','off'); set(handles.pushbutton4,'Enable','off'); set(handles.pushbutton1,'Enable','on'); set(handles.pushbutton2,'Enable','on'); set(handles.pushbutton3,'Enable','on'); set(handles.pushbutton4,'Enable','on'); end
Para que funcione el botón CALCULAR y nos muestre los resultados en la pantalla, tanto la conversión como la Temperatura
function pushbutton1_Callback(hObject, eventdata, handles) vo=326.34; V=str2double(get(handles.edit7,'String')); tau=V/vo; % DATOS DE LA CORRIENTE DE ALIMENTACION FAo=str2double(get(handles.edit8,'String')); FBo =str2double(get(handles.edit9,'String')); FMo =str2double(get(handles.edit10,'String')); CAo = 0.132; To = 535; Ta=str2double(get(handles.edit11,'String')); % DATOS PARA LA ECUACION DE ARRHENIUS Ar = 16.96e12; E = 32400; R = 1.987; % DATOS DE CAPACIDADES CALORIFICAS (CONSTANTES) CPA= 35; CPB = 18; CPC = 46; CPM = 19.5; % DATOS DE ENTALPIAS ESTANDAR HEA = -66600; HEB = -123000; HEC = -226000; TR = 528; % CALCULO DE LOS COEFICIENTES TITA TITA = 1; TITB = FBo/FAo; TITM = FMo/FAo; % CALCULO DEL CALOR DE REACCION ESTANDAR (DHE) Y DELTA CP (DCP) DHE = HEC - HEA - HEB; DCP = CPC - CPA - CPB; % CALCULO DE SUMATORIA DE TITAi*CPi STCP = TITA*CPA + TITB*CPB + TITM*CPM; % DATOS PARA EL BALANCE DE ENERGIA A=str2double(get(handles.edit6,'String')); U=str2double(get(handles.edit5,'String')); % CALCULO DE X Y T DE MANERA SIMULTÁNEA vi=[0.1,800]; S= fsolve(@(Z)BEM(Z,Ar,R,CAo,E,To,DHE,DCP,STCP,TR,tau,U,A,Ta),vi); S global T global X set(handles.edit3,'string',num2str(X)); set(handles.edit4,'string',num2str(T));
Para que funcione el botón LIMPIAR function pushbutton2_Callback(hObject, eventdata, handles) set(handles.edit5,'String','');
set(handles.edit6,'String',''); set(handles.edit7,'String',''); set(handles.edit8,'String',''); set(handles.edit9,'String',''); set(handles.edit10,'String',''); set(handles.edit11,'String','');
Para que funcione el botón GRAFICAR y nos muestre la figura function pushbutton3_Callback(hObject, eventdata, handles) axes(handles.axes1); t=[1035 1010 985 960 935]; x=[0 0.05 0.10 0.15 0.20]; plot(x,t) grid
Para que funcione el botón SALIR function pushbutton4_Callback(hObject, eventdata, handles) opc=questdlg('¿Desea salir del programa?',... 'SALIR','Si','No','No'); if strcmp(opc,'No') return; end delete(hObject);
RESULTADOS
6.-CONCLUSIONES
La utilización de Matlab como herramienta de programación sirvió para construir un modelo de resolución de un caso de reactor CSTR y dividirlo según sus fases de operación bien diferenciadas: como el balance de materia y energía. En Matlab se empleó para coordinar la simulación de esas etapas. Se logró una conversión de reactante a producto y también la determinación de la temperatura.
La aplicación de diferentes combinaciones del algoritmo permitió observar el efecto de cada una de esas variantes sobre la dinámica de un mismo reactor químico, haciendo su estudio a nivel de control más completo.
7.-BIBLIOGRAFÍA Elementos de Ingeniería de Las Reacciones Químicas - S. Fogler - 4ta Edición http://lmidarraga.blogspot.com/2010/10/caracteristicas-de-los-cstr.html http://www.redalyc.org/html/707/70712293012/