modelamiento y simulacion de procesos
DESCRIPTION
diseñoTRANSCRIPT
TRABAJO DE MODELAMIENTO Y SIMULACIÓN DE PROCESOS
PROYECTO DE SIMULACION PARA EL ANALISIS DE VARIABLES DE CONCENTRACION Y TEMPERATURA PARA UN SISTEMA DE TANQUES
1. Objetivos.
Simular una experiencia realizada en laboratorio
Evaluar el comportamiento de las variables a estudiar (concentración y
temperatura), utilizando un programa en Visual Basic.
Elaborar un interfaz que nos permita ingresar los valores de las variables iniciales,
así como observar cada iteración.
Determinar el impacto de la variabilidad de la concentración en los diferentes
tanques.
2. Marco Teórico.
Sabemos que la simulación es una gran herramienta de la ingeniería, la cual se utiliza para
representar un proceso mediante otro la cual lo hace mucho más simple y entendible.
El siguiente proyecto se basa en simular una experiencia de laboratorio y para eso se hizo
un análisis profundo empezando por la creación de modelos matemáticos y todo el proceso
para su creación.
La decisión de hacer un programa para simular la experiencia es por que esto nos brindaría
la oportunidad de modificar las condiciones iniciales, de controlar la evolución del sistema
que se está estudiando, de visualizar instantáneamente el efecto de las modificaciones, de
calcular de una forma inmediata lo que se busca o de obtener la representación de los datos
obtenidos.
Para elaborar el programa se optó por el método de Runge Kutta, un método iterativo tanto
explicito como implícito para aproximar las ecuaciones diferenciales ordinarias.
Métodos de Runge-Kutta de cuarto orden
Un miembro de la familia de los métodos Runge-Kutta es usado tan comúnmente que a menudo es referenciado como “RK4” o como “el método Runge-Kutta”.
Definamos un problema de valor inicial como:
Entonces el método RK4 para este problema está dado por la siguiente ecuación:
Donde
Así, el siguiente valor (yn+1) es determinado por el presente valor(yn) más el producto del tamaño del intervalo (h) por una pendiente estimada. La pendiente es un promedio ponderado de pendientes, donde k1 es la pendiente al principio del intervalo, k2 es la pendiente en el punto medio del intervalo, usando k1 para determinar el valor de y en el
punto usando el método de Euler. k3 es otra vez la pendiente del punto medio, pero ahora usando k2 para determinar el valor de y k4 es la pendiente al final del intervalo, con el valor de y determinado por k3. Promediando las cuatro pendientes, se le asigna mayor peso a las pendientes en el punto medio:
Esta forma del método de Runge-Kutta, es un método de cuarto orden lo cual significa que el error por paso es del orden de O(h5), mientras que el error total acumulado tiene el orden O(h4).
Descripción
Programa
EQUIPO comprendido por tres tanques
Modulo: Tanque amortiguador de concentración (variación de concentración).
3. Programa (Explicacion)
La presente simulación trata de un sistema de tres tanques los cuales tienen una
concentración determinada por el usuario a dichos tanques ingresa una solución de
diferente concentración, la cual recorre los tanques variando su concentración con esto se
busca evaluar el comportamiento (dinámica del proceso) por medio de la simulación.
Pasos:
Ingreso de condiciones iniciales (concentración de ingreso, tiempo y ancho de paso)
Ingreso de concentraciones, volumen y flujo para los tres tanques
Calcular
3.1. CODIGO DEL PROGRAMA
Form1 (METODO RUNGE KUTTA DE CUARTO ORDEN)
Public Ce As Double
Public C1 As Double
Public C2 As Double
Public C3 As Double
Public V1 As Double
Public V2 As Double
Public V3 As Double
Public F1 As Double
Public F2 As Double
Public F3 As Double
Public K11 As Double
Public K12 As Double
Public K13 As Double
Public K21 As Double
Public K22 As Double
Public K23 As Double
Public K31 As Double
Public K32 As Double
Public K33 As Double
Public K41 As Double
Public K42 As Double
Public K43 As Double
Public h As Double
Public t As Double
Public tf As Double
Private Sub Command1_Click()
C1 = Val(Text1.Text)
V1 = Val(Text2.Text)
F1 = Val(Text3.Text)
C2 = Val(Text4.Text)
V2 = Val(Text5.Text)
F2 = Val(Text6.Text)
C3 = Val(Text7.Text)
V3 = Val(Text8.Text)
F3 = Val(Text9.Text)
Ce = Val(Text10.Text)
h = Val(Text11.Text)
tf = Val(Text12.Text)
conta = 1
For t = 0 To tf Step h
K11 = (F1 / V1) * (Ce - C1)
K12 = ((F1 / V1) * C1) - ((F2 / V2) * C2)
K13 = ((F2 / V2) * C2) - ((F3 / V3) * C3)
K21 = (F1 / V1) * (Ce - (C1 + (h / 2) * K11))
K22 = ((F1 / V1) * (C1 + (h / 2) * K11)) - ((F2 / V2) * (C2 + (h / 2) * K12))
K23 = ((F2 / V2) * (C2 + (h / 2) * K12)) - ((F3 / V3) * (C3 + (h / 2) * K13))
K31 = (F1 / V1) * (Ce - (C1 + (h / 2) * K21))
K32 = ((F1 / V1) * (C1 + (h / 2) * K21)) - ((F2 / V2) * (C2 + (h / 2) * K22))
K33 = ((F2 / V2) * (C2 + (h / 2) * K22)) - ((F3 / V3) * (C3 + (h / 2) * K23))
K41 = (F1 / V1) * (Ce - (C1 + h * K31))
K42 = ((F1 / V1) * (C1 + (h * K31))) - ((F2 / V2) * (C2 + (h * K32)))
K43 = ((F2 / V2) * (C2 + (h) * K32)) - ((F3 / V3) * (C3 + (h) * K33))
C1mas1 = C1 + (h / 6) * (K11 + 2 * K21 + 2 * K31 + K41)
C2mas1 = C2 + (h / 6) * (K12 + 2 * K22 + 2 * K32 + K42)
C3mas1 = C3 + (h / 6) * (K13 + 2 * K23 + 2 * K33 + K43)
MSFlexGrid1.TextMatrix(conta, 0) = t
MSFlexGrid1.TextMatrix(conta, 1) = Round(C1, 2)
MSFlexGrid1.TextMatrix(conta, 2) = Round(C2, 2)
MSFlexGrid1.TextMatrix(conta, 3) = Round(C3, 2)
MSFlexGrid1.TextMatrix(conta, 4) = Round(K11, 2)
MSFlexGrid1.TextMatrix(conta, 5) = Round(K12, 2)
MSFlexGrid1.TextMatrix(conta, 6) = Round(K13, 2)
MSFlexGrid1.TextMatrix(conta, 7) = Round(K21, 2)
MSFlexGrid1.TextMatrix(conta, 8) = Round(K22, 2)
MSFlexGrid1.TextMatrix(conta, 9) = Round(K23, 2)
MSFlexGrid1.TextMatrix(conta, 10) = Round(K31, 2)
MSFlexGrid1.TextMatrix(conta, 11) = Round(K32, 2)
MSFlexGrid1.TextMatrix(conta, 12) = Round(K33, 2)
MSFlexGrid1.TextMatrix(conta, 13) = Round(K41, 2)
MSFlexGrid1.TextMatrix(conta, 14) = Round(K42, 2)
MSFlexGrid1.TextMatrix(conta, 15) = Round(K43, 2)
MSFlexGrid1.TextMatrix(conta, 16) = Round(C1mas1, 2)
MSFlexGrid1.TextMatrix(conta, 17) = Round(C2mas1, 2)
MSFlexGrid1.TextMatrix(conta, 18) = Round(C3mas1, 2)
C1 = C1mas1
C2 = C2mas1
C3 = C3mas1
conta = conta + 1
Next t
End Sub
Private Sub Command2_Click()
For k = 1 To 54
For j = 0 To 15
MSFlexGrid1.TextMatrix(k, j) = ""
Next
Next
End Sub
Private Sub Command3_Click()
End
End Sub
Frm Splash
Private Sub Command1_Click()
Form1.Show
End Sub
Private Sub Label5_Click()
End Sub
3.2. INTERFAZ
3.3. PROGRAMA EN OPERACIÓN
Ingreso al programa mediante el comando de INGRESAR.
Ingreso de datos para el tanque 1, tanque 2 y tanque 3; además de la concentración inicial de salmuera, el ancho de paso y el tiempo de operación del equipo.
Tanque 1
C1 : 80 gr/lt
V1: 100 lt
F1 : 15 ml/min
Tanque 2
C1 : 30 gr/lt
V1: 100 lt
F1 : 15 ml/min
Tanque 3
C1 : 5 gr/lt
V1: 100 lt
F1 : 15ml
Ce : 100 gr/lt
H: 1
Tiempo: 10 min
Presionamos el botón CALCULAR y en la tabla visualizaremos los resultados obtenidos.
Pudiendo evaluar el comportamiento de las concentraciones de los tres taques propuestos, en las tres últimas columnas de la tabla de FlexGrid.
4. COMPARACION DE RESULTADOS
Mediante la práctica realizada en laboratorio se obtuvo los siguientes datos:
Tabla Nº 1: Datos Recogidos en la Primera Prueba
N° Prueba Volumen(ml) Densidad(g/ml) Tiempo (s) Caudal(ml)
1 - 1.000 0.000 -
2 66.000 1.012 10.000 13.200
3 66.000 1.016 20.000 13.200
4 58.000 1.003 30.000 11.600
5 100.000 1.013 40.000 20.000
6 50.000 1.003 50.000 10.000
7 54.000 1.030 60.000 10.800
8 62.000 1.029 70.000 12.400
9 69.500 1.039 80.000 13.900
10 64.500 1.065 90.000 12.900
11 71.000 1.055 100.000 14.200
12 84.000 1.070 110.000 16.800
13 87.000 1.069 120.000 17.400
14 94.000 1.076 130.000 18.800
15 118.000 1.084 140.000 23.600
Tabla Nº 1: Datos Recogidos en la Última Prueba
N° Prueba Volumen(ml) Densidad(g/ml) Tiempo (s)Caudal de salida
(ml/s)
1 - 1.000 0.000 -
2 100.0 1.006 10.000 20.000
3 95.0 1.008 20.000 19.000
4 103.0 1.027 30.000 20.600
5 110.0 1.033 40.000 22.000
6 109.0 1.042 50.000 21.800
7 120.0 1.049 60.000 24.000
8 118.0 1.057 70.000 23.600
9 114.0 1.062 80.000 22.800
10 114.0 1.074 90.000 22.800
11 113.0 1.077 100.000 22.600
12 112.0 1.082 110.000 22.400
13 118.0 1.086 120.000 23.600
14 119.0 1.092 130.000 23.800
15 112.0 1.096 140.000 22.400
Mediante el programa realizado se obtuvieron los siguientes datos:
Se puede observar lo valores obtenidos del programa de simulación por el método de Rk4,
la ventaja en que podemos evaluar diferentes casos (situaciones diferentes) para su análisis
respectivo por ejemplo la influencia que tiene la variable manipulable (concentración
inicial o de entrada) en la variable controlable (concentraciones de salida) a la salida de
cada tanque esto no refleja la dinámica del proceso
Continuación observaremos las gráficas realizadas en la experiencia de laboratorio y la
graficas con los datos obtenidos del programa.
Las gráficas obtenidas con los datos de Laboratorio son:
Con los datos de nuestro programa se obtuvieron las siguientes graficas:
Concenttracion TK1 vs Tiempo
82
84
86
8890
92
94
96
98
0 2 4 6 8 10 12
Tiempo
Co
ncen
tracio
n
Concentracion TK2 vs Tiempo
30
40
50
60
70
80
90
0 2 4 6 8 10 12
Tiempo
Co
ncen
tracio
n
Concentracion TK3 vs Tiempo
0
10
20
30
40
50
60
0 2 4 6 8 10 12
Tiempo
Co
ncen
tracio
n
Concentraciones vs Tiempo
0
20
40
60
80
100
120
0 5 10 15
Concentracion
Tie
mp
o TK1
TK2
TK3
5. CONCLUSIONES
Se utilizó un procedimiento numérico para resolver el problema: el método de Runge Kutta de 4º orden.
Con la práctica hemos hallado la concentración final en cualquier tiempo en un sistema de tres tanques operando en un estado estacionario y creando una interfaz sencilla de operar.
Con la práctica realizamos la un programa en el cual ingresamos los valores iniciales y obtuvimos el valor deseado de una manera muy sencilla de operar, poniendo en práctica la programación estudiada en cursos anteriores.
Se logró modelar el proceso mediante una simulación la cual resulto efectiva como se pude apreciar en los datos
6. BIBLIOGRAFIA
@ http://es.wikipedia.org/wiki/M%C3%A9todo_de_Runge-Kutta
@ http://www.tonahtiu.com/notas/metodos/Runge_kutta4.htm
@ http://www.unizar.es/acz/02AcademicosNumerarios/Discursos/Calvo.pdf