Full text
Equation Chapter 1 Section 1 Proyecto Fin de Carrera Ingeniería de Tecnologías Industriales Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Autor: Alejandro Pérez-Valseca Navas Tutor: Aurelio Luis Azaña García Dpto. Ingeniería de la Construcción y Proyectos de Ingeniería Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021
iii Trabajo Fin de Grado Ingeniería de Tecnologías Industriales Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Autor: Alejandro Pérez-Valseca Navas Tutor: Aurelio Luis Azaña García Profesor titular Dpto. de Ingeniería de la Construcción y Proyectos de Ingeniería Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021
v Proyecto Fin de Carrera: Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Autor: Alejandro Pérez-Valseca Navas Tutor: Aurelio Luis Azaña García El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2013 El Secretario del Tribunal
vii A mi familia A mi tutor A mis referentes
ix Agradecimientos Llegando al cierre de una etapa, debo compartir méritos: Con mi padre, por ser mi guía en lo profesional al que admiro e imito con orgullo. Con mi madre, por ser mi guía en lo personal que abarca todo lo que comprende la palabra bondad. Con mi hermano, por haber amenizado toda mi vida y enseñarme lo que significa ser honesto. Con mi abuela, por quererme incondicionalmente y demostrarme que se puede vivir una eterna juventud. Gracias. Alejandro Pérez-Valseca Navas Alumno de la Escuela Técnica Superior de Ingeniería Sevilla, 2021
xvii ÍNDICE DE TABLAS Tabla 2-1. Clasificación de estimaciones según AACE 4 Tabla 2-2. Componentes CEPCI 11 Tabla 3-1. Coeficientes para el calculo 𝐶𝑝0 del compresor 21 Tabla 3-2. Coeficientes para el cálculo de 𝐹𝐵𝑀 en compresor 21 Tabla 3-3. Coeficientes para el calculo 𝐶𝑝0 del intercambiador 24 Tabla 3-4. Coeficientes para el cálculo de 𝐹𝑀 en intercambiador 25 Tabla 3-5. Coeficientes para el cálculo de 𝐹𝑝 en intercambiadores 25 Tabla 3-6. Coeficientes para cálculo de 𝐶𝐵𝑀 en intercambiador 26 Tabla 3-7. Coeficientes para el calculo 𝐶𝑝0 del tanque 27 Tabla 3-8. Coeficientes para el calculo 𝐶𝑝0 de la turbina 29 Tabla 3-9. Coeficientes para el cálculo de 𝐹𝐵𝑀 de la turbina 29 Tabla 3-10. Coeficientes para el calculo 𝐶𝑝0 de la bomba 30 Tabla 3-11. Coeficientes para el cálculo de 𝐹𝐵𝑀 de la bomba 31 Tabla 3-12. Coeficientes para el cálculo de 𝐹𝑝 en la bomba 31 Tabla 3-13. Coeficientes para el calculo 𝐶𝑝0 del depósito 32 Tabla 3-14. Coeficientes para el cálculo de 𝐹𝑝 en el depósito 32 Tabla 3-15. Límites de aplicación 34 Tabla 4-1. Datos de los Equipos del proceso 38
xix ÍNDICE DE FIGURAS Figura 2-1. Evolución del CEPCI de 1991 a 2006 10 Figura 3-1. Línea de código para la creación del ejecutable 14 Figura 3-2. Diagrama de bloques para el cálculo del coste total 18 Figura 3-3. Ventana Principal 20 Figura 3-4. Interfaz del compresor 22 Figura 3-5. Intercambiador de carcasa y tubo con cabezal fijo 23 Figura 3-6.Interfaz del intercambiador 24 Figura 3-7. Diseño de un tanque según norma API-650 26 Figura 3-8. Interfaz del tanque 27 Figura 3-9. Turbina de vapor de Siemens 28 Figura 3-10. Interfaz de la turbina 29 Figura 3-11. Bomba centrífuga industrial 30 Figura 3-12. Esquema de funcionamiento de una columna 33 Figura 4-1. Diagrama del proceso de una planta química 37 Figura 4-2.Cálculo de la columna T-101 39 Figura 4-3. Cálculo del intercambiador E-101 40 Figura 4-4. Cálculo del intercambiador E-102 40 Figura 4-5. Cálculo del intercambiador E-103 41 Figura 4-6. Cálculo de las bombas P-101 41 Figura 4-7. Cálculo del tanque V-101 42 Figura 4-8. Cálculo final del proceso 43
xxi Notación GUI Interfaz gráfica de usuario CEPCI Chemical Engineering Plant Cost Index f.o.b IPC 𝐶𝑝 0 𝐶𝐵𝑀 𝐹𝑀 𝐹𝑝 𝐹𝐵𝑀 Free on board Índice de precios de consumo Coste de adquisición en condiciones estándar Coste total del equipo (directos + indirectos) Factor de corrección por material Factor de corrección por presión Factor de corrección del módulo
xxiii
1 1 INTRODUCCIÓN egún la Real Academia Española un proyecto es un “conjunto de escritos, cálculos y dibujos que se hacen para dar idea de cómo ha de ser y lo que ha de costar una obra de arquitectura o de ingeniería” [1]. Se entiende, por tanto, que para la puesta en marcha de un proyecto ingenieril se requiere de un amplio equipo que combina su esfuerzo y trabajo para un fin común y previamente establecido. Se elaborarán memorias de definición del proyecto, su alcance, su propósito, su propuesta como solución. Se harán cálculos que casen el qué hacer y el cómo hacerlo. Se trazarán planos de los diseños que se propongan como posibles ideas viables. En definitiva, se determinarán propuestas fidedignas de cómo ha de realizarse el proyecto. Pero queda el cuánto ha de costar. En la Arquitectura Industrial: el Ingeniero Director del Proyecto no debe olvidar nunca que la fabricación es una actividad económica. […] Un factor que no puede olvidarse nunca porque es importantísimo, es el económico y por tanto las consideraciones de este tipo han de estar siempre presentes, en forma tajante clara y precisa [2, p. 18]. Entendemos por tanto la construcción de una planta como una labor de consideraciones tanto ingenieriles como económicas, sin poder obviar ninguna de las partes. Se debe idear el proyecto de manera que se cumplan los requisitos marcados pero siempre buscando aquellos compatibles con el mínimo coste y con gastos de funcionamiento adecuados a la producción [2, p. 19]. Este planteamiento nos lleva inexorablemente a un punto único de ineludible cumplimiento, y es el estudio de la viabilidad de la planta industrial. Morales [3] define que una planta es viable cuando “produce el producto o productos adecuados, en las cantidades que el mercado demanda en cada momento, a un precio que el mercado está dispuesto a pagar”. Asimismo, para determinar si efectivamente se dan las condiciones aptas para llevar a cabo la idea de producción, éste establece que se deben realizar una serie de Estudios de mercado y de Viabilidad, mínimamente se considerarán: - Estudio de mercado. Su objetivo es discernir si la demanda del mercado es capaz de absorber la oferta que será creada. - Estudio de viabilidad técnica. Cuyo objeto es el de estudiar si existe en el momento de creación tecnología apta para llevarlo a cabo. - Estudio de viabilidad económica. Para analizar esto necesitaremos una estimación de la inversión, principal foco y motivación de este trabajo. - Estudio de viabilidad financiera. O lo que es lo mismo, conocer las fuentes de financiación del proyecto. La estimación del coste de la inversión acaba presentándose como un pilar fundamental a la hora de analizar la viabilidad de una planta. El campo de la ingeniería de costes es el encargado de dilucidar el dificultoso entramado que puede presentarse a la hora de realizar una correcta estimación. No estamos hablando de datos conocidos, ni de contabilidades ya realizadas. La labor es la de intentar poner cifras a gastos de la empresa a futuro, indicar cuáles son los cauces por los que se irá el capital. Sobra decir que no suele ser una tarea fácil ni directa, pues las variables que pueden modificar el resultado final son numerosas. A lo largo del tiempo se han ido desarrollando técnicas de estimación, a cuál más precisa, en un intento tanto de maximizar la fidelidad del resultado como de minimizar el tiempo invertido en realizarlo. S
Estimación de Costes 8 𝐶 =𝐹𝐿𝑎𝑛𝑔 ∑𝐶𝑒,𝑖 𝑛 𝑖=1 (2.4) donde: C es el coste de la planta 𝐹𝐿𝑎𝑛𝑔 es el factor de Lang 𝐶𝑒,𝑖 son los costes de cada uno de los equipos Lang propuso 3 valores diferentes del factor al cual dio nombre, según si la planta era de procesos sólidos, para la que atribuyó un valor de 3,10, procesos solidos-fluidos, donde el factor pasa a ser 3,63, o procesos fluidos, que tendrían un valor de 4,74. Este método, aunque ofrece buenas estimaciones para el poco tiempo que requiere su aplicación, presenta algunos problemas, como por ejemplo que aplica el mismo factor a todos los equipos, además de que el valor del factor de Lang ha ido creciendo con los años dados los avances industriales, llegando a valores de en torno a un 5,12 para las plantas de fluidos [10]. 2.1.2.2 Método de Hand En 1964, W.E. Hand propuso una mejora del factor de Lang, donde cada equipo tendría su propio factor, en vez de utilizar uno según el tipo de proceso. Esto soluciona la ausencia de distinción entre equipos de Lang. De tal forma: 𝐶 =∑𝑓𝑖𝐶𝑒,𝑖 𝑛 𝑖=1 (2.5) donde: C es el coste de la planta 𝑓𝑖 es el factor de cada equipo 𝐶𝑒,𝑖 son los costes de cada uno de los equipos El problema que presenta este método hace acto de presencia en la situación en la que no se encuentre el factor correspondiente al equipo deseado, aunque diversos autores han ido ampliando la lista de factores que inicialmente fue propuesta por Hand. 1 2.1.2.3 Module Costing Method El Module Costing Method, o método del costeo por módulos, es una metodología introducida por 1 Véase Wroth, W.F. (1960). Factors in cost estimation. Chem. Eng., 67 y Guthrie KM. Chem Eng. 24 marzo 1969:114-142
9 9 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Guthrie [11], que posteriormente desarrollan Turton et al. [8] en su libro Analysis, Synthesis, and Design of Chemical Processes. Turton apunta que “está generalmente aceptada como la mejor para realizar estimaciones preliminares de costes” [8]. La motivación de esta metodología surge en un intento por solucionar algunos de los problemas que se presentan en los métodos anteriores. Esto es, ¿qué sucede si tenemos dos plantas iguales, pero una de ellas opera a una presión 20 veces mayor? ¿Y si se decidiera utilizar unos equipos hechos de acero inoxidable en una y de acero al carbono en otra? En el primer supuesto, los equipos precisarán de un mayor grosor para soportar las altas presiones, se requerirán controles más precisos tanto de dichas presiones como de las fugas, etc. En el segundo caso, es natural que el material con el que se construyan los equipos tendrá un impacto, más o menos significativo dependiendo de los materiales y el tamaño del equipo, en el coste final de este. En cualquier caso, el Module Costing Method pretende atender a estas dos necesidades de manera que: esta técnica de costeo reduce todos los costes a los de compra del equipo evaluado para unas condiciones estándar. Las desviaciones de estas condiciones se ajustan usando factores multiplicadores que dependen de lo siguiente: 1. El tipo específico de equipo 2. La presión específica del sistema 3. Los materiales específicos de construcción. [8] Por tanto, el primer objetivo de esta técnica es estimar el Bare Module Cost, o, traduciendo literalmente, el coste del módulo “ al desnudo”. Este coste es la suma de costes directos e indirectos del equipo. Los costes directos son el coste de dicho equipo free on board (f.o.b) 2 , materiales para su instalación —desde tuberías y aislamiento hasta pintura—, así como la mano de obra requerida para su instalación. Los indirectos abarcan gastos como el envío, la ingeniería, etc. En adelante, y por simplicidad dialéctica, nos referiremos a este como coste total del módulo. 𝐶𝐵𝑀 = 𝐶𝑝 0𝐹𝐵𝑀 (2.6) donde: 𝐶𝐵𝑀 es el Bare Module Cost, el coste total del módulo 𝐶𝑝 0 es el coste de compra en condiciones estándar: equipo hecho del material más común, normalmente acero al carbono operando a presión ambiente 𝐹𝐵𝑀 es el factor de corrección que ajusta tanto por todos los costes mencionados como materiales, mano de obra, etc., además de la influencia de los materiales de construcción y presión de trabajo. Cabe anotar que esta ecuación, aunque es la más común, no es siempre la misma para todos los equipos que se estimen mediante este método, mas si lo es para los que se recogen en este trabajo. Si se desea profundizar más se puede acudir al anexo A de la obra de Turton, Analysis, Synthesis and Designo f Chemical Processes [8]. La explicación detallada de cómo se obtienen los valores 𝐶𝑝 0 y 𝐹𝐵𝑀 se reservará para más adelante, en 2 Free on board: indica que el vendedor debe cargar las mercancías al barco designado por el comprador, haciéndose cargo de todos los costes y riegos hasta que estas se encuentran en el barco. [23]
Estimación de Costes 10 el capítulo 4, donde se desarrollará en mayor profundidad este método y su implementación en una herramienta informática que permita la automatización de los cálculos. 2.1.3 Valor del dinero con el tiempo En economía, se entiende por inflación “el aumento generalizado en los precios de los bienes y servicios durante un periodo de tiempo” [12]. En el caso de los equipos industriales, esto no iba a ser de otro modo. Cuando, por ejemplo, se utiliza el método de costeo de módulos para estimar el precio de un equipo, los coeficientes y tablas en los que se apoya el ingeniero han sido calculados para un año determinado. De forma ineludible, los precios de todos los insumos que acaban conformando este equipo han ido aumentando con el paso de los años, o, si se quiere, el valor de la moneda en la que son pagaderos los equipos ha ido perdiendo valor. Esto plantea una nueva problemática, ya que todos los costes de años anteriores habrán de capitalizarse al año en curso para que el resultado del estudio sea de utilidad. Para ello, existen diversos índices que ajustan por esas variaciones de precios año a año, el más conocido es el índice de precios de consumo (IPC), que mide la variación de los precios de una cesta de bienes y servicios comunes en el consumo de una familia estándar en un lugar y durante un periodo de tiempo determinados. Pese a ello, este índice no refleja fielmente las variaciones en precios que se necesitan en la industria química, para la que existen otros índices más representativos. Uno de los más utilizados es el Chemical Engineering Plant Cost Index (CEPCI). Figura 2-1. Evolución del CEPCI de 1991 a 2006 300 350 400 450 500 550 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
11 11 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” El CEPCI consiste en 4 componentes [6]: Tabla 2-2. Componentes CEPCI Equipos 50,675% Mano de obra para construcción 29,000% Edificios 4,575% Ingeniería y supervisión 15,75% Para obtener el coste actualizado al año actual se usa la siguiente ecuación: 𝐶2= 𝐶1𝐼2 𝐼1 (2.7) Donde 𝐶𝑖 es el coste del equipo 𝐼 es el índice de costos 1 es el año base de los costes 2 es el año al que se desean referir los costes
Estimación de Costes 12
13 3 APLICACIÓN DE CÁLCULO DE INMOVILIZADO ras la distinción entre las diferentes clases de estimación realizada en la Tabla 2-1. Clasificación de estimaciones según AACE, el objetivo de este trabajo será el de diseñar una herramienta informática capaz de dar una estimación de clase 4; esto es, asumiendo en un principio conocidos los equipos que serán necesarios, conseguir una estimación con una precisión resultante de alrededor de un 50%, a priori suficientemente válida para una aprobación presupuestaria de carácter preliminar. Tras la disertación sobre los diferentes métodos de estimación, y dadas las características limitantes que subyacen a este trabajo de fin de grado, a saber; el estudiante no dispone de una base de datos con presupuestos de equipos de plantas ya construidas, práctica común en estudios de viabilidad de empresas dedicadas a la estimación de costes, se concluye que el método de Module Costing introducido en el capítulo anterior es el que mejor satisface las condiciones iniciales que definen este proyecto. Si bien son varios los lenguajes de programación que pudieren utilizarse para la realización de tal aplicación informática, se ha optado por el uso de Python por su sencillez tanto en la sintaxis como en su facilidad para implementar herramientas gráficas que posibiliten una interfaz gráfica de usuario (GUI). Se usará el paquete tkinter para la creación de la GUI del programa en cuestión. 3.1 Python Python es un lenguaje de programación, es decir, un conjunto de instrucciones diseñadas para dar instrucciones precisas entendibles y ejecutadas por un ordenador. Es un lenguaje interpretado, interactivo y orientado a objetos. Incorpora módulos, excepciones, escritura dinámica, tipos de datos dinámicos de muy alto nivel y clases. Soporta múltiples paradigmas de programación más allá de la programación orientada a objetos, como la programación procedimental y funcional. También puede utilizarse como lenguaje de extensión para aplicaciones que necesitan una interfaz programable. Python es multiplataforma: funciona en muchas variantes de Unix, incluyendo Linux y macOS, y en Windows [13]. Python contiene numerosas librerías, las cuales facilitan el trabajo al programador, ya que no tiene que programarlas desde cero. En este trabajo se han utilizado dos: - Librería #math: es una librería con funciones matemáticas definidas en el estándar de C. - Librería #tkinter: es un paquete que ofrece la posibilidad de diseñar una interfaz gráfica en Python. Se considera un estándar para la GUI en Python y sencilla de utilizar, motivos por los cuales se ha seleccionado para la aplicación. T
Aplicación de Cálculo de Inmovilizado 14 3.1.1 Creación del ejecutable con Pyinstaller Con el fin de que el usuario no necesite abrir el código por su cuenta y ejecutarlo, necesitando un intérprete de Python, se ha querido agrupar el código fuente en un ejecutable único, de manera que facilite el uso de la aplicación. Para ello se ha usado la librería pyinstaller, que se encargará de aunar el código fuente y las librerías utilizadas en un solo paquete ejecutable. Se abrirá la ventana de comandos de Windows en la ubicación donde se encuentra el archivo .py. Por defecto, la terminal de Windows se ejecuta cuando se abre nuestro programa. Con el fin de evitar eso se usará la instrucción –windowed. De la misma forma, para que todo quede en un único archivo, usaremos la instrucción –onefile. Esto aumenta el tamaño del archivo, pero dado que el programa no es excesivamente pesado lo asumiremos. Figura 3-1. Línea de código para la creación del ejecutable 3.2 Implementación del método de costeo de módulos Como se introdujo en el capítulo anterior, será el método de costeo por módulos la piedra angular de los cálculos de este proyecto. Se ha seleccionado este método porque se ha considerado un buen punto intermedio en cuanto a fase de definición del proyecto se refiere. Si se hubiera partido de un completo desconocimiento de todo lo que atañe al proyecto se habría obtenido una estimación rápida pero poco precisa. Para tan bajo grado de exactitud es difícil considerar necesaria la molestia de utilizar un programa informático, bastaría con un poco de experiencia del ingeniero y una calculadora. Por otra parte, si se hubiera considerado una vasta definición de lo que conforma el proyecto final, estimaciones de este tipo carecen probablemente de cualquier utilidad marginal, puesto que se buscaría un presupuesto para un proyecto final y no bastaría con una precisión de un 50% de error, propia de estimaciones de clase 4. En definitiva, este programa tendrá cabida cuando, por ejemplo, se disponga de un posible diagrama de flujo de los equipos a añadir en una planta y se quiera estimar el coste de todo el inmovilizado que esta ampliación (o construcción de cero) supondría. 3.2.1 Cálculo del coste de adquisición El primer paso común a todos los equipos es el cálculo del coste de adquisición del equipo en las condiciones estándar que se establecieron, acero al carbono en cuanto a material y presión atmosférica.
15 15 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Como dice Turton: la mejor forma de estimar el coste de adquisición de un equipo es con información actualizada de un proveedor. La segunda es usar datos de coste de equipos comprados anteriormente. Otra técnica, suficientemente precisa para estimaciones de costes preliminares, es usar gráficos de síntesis disponibles para varios tipos de equipos comunes [8]. La primera posibilidad queda fuera del alcance de este proyecto, donde se pretende obtener una estimación sencilla y sin mucha complicación por parte del usuario. Sin embargo, queda abierta la puerta a posibles ampliaciones de este proyecto, donde se considere la posibilidad de que el usuario disponga de tales costes y puedo añadirlos creando su propio equipo. Se comentará esta ampliación en el capítulo de Conclusiones. La segunda tampoco casa con la intención de este proyecto, ya que, como se dijo al principio del capítulo, la calidad de estudiante del autor del presente trabajo imposibilita el acceso a una base de datos de precios de equipos, normalmente meticulosamente cuidadas por parte de las empresas dada su importancia en sus propios cálculos. Por tanto, para realizar las estimaciones se emplearán los coeficientes que fueron desarrollados a raíz de un estudio de empresas manufactureras en verano de 2001 y del software R-Books de Richarson Engineering Services [8]. De ahí se actualizarán los costes a fecha presente. 𝑙𝑜𝑔10 𝐶𝑝 0=𝐾1+𝐾2𝑙𝑜𝑔10(𝐴)+𝐾3𝑙𝑜𝑔10(𝐴)2 (3.1) Donde: 𝐶𝑝 0 es el coste de adquisición del equipo en condiciones estándar. 𝐾𝑖 son los coeficientes que variaran para cada equipo 𝐴 es el parámetro característico del equipo Tras esto, se procederá a realizar una corrección por diferencia de materiales de construcción y otra por diferencia en la presión de trabajo. Cabe resaltar que ni la turbina ni el compresor cuentan con corrección por presión. Esto es debido a que no se disponen de datos para esos equipos que permitiesen la creación de sus coeficientes. 3.2.2 Corrección por material y presión El material base fue establecido como acero al carbono. La elección del material de construcción empleado en una planta dependerá de varios factores. Normalmente es el fluido de trabajo y el fin de evitar la corrosión los que dictaminan la selección, aunque otros factores como características mecánicas, térmicas, eléctricas, resistencia a la radiación, etc., pueden también jugar un papel de gran importancia según qué aplicación [14]. Se aportará un factor correctivo 𝐹𝑚 para la diferencia de coste respecto al mismo equipo, pero construido íntegramente de acero al carbono. Turton [8] realiza una aclaración importante, y es que este factor por material no es la simplemente la variación relativa
Aplicación de Cálculo de Inmovilizado 16 respecto a usar acero al carbono. Esto se debe a que, al igual que el coste total del módulo, el coste de adquisición no es íntegramente el coste de los materiales, sino también coste de maquinaria, mano de obra, y demás. La corrección por presión requerirá del uso de fórmulas, una para tanques, depósitos presurizados, columnas y similares —en definitiva, recipientes de almacenamiento de una importante cantidad de fluido— y otra genérica para el resto de equipos. Se detallarán cada una más adelante. 3.2.3 Cálculo del coste del módulo Una vez se tiene tanto el coste de adquisición en condiciones estándar como los factores de material y presión pertinentes según el diseño del equipo deseado, se utilizará la ecuación (2.6) para calcular el coste total del módulo, esto es, tal y como se menciona anteriormente, los costes tanto directos como indirectos en base a ese equipo. En última instancia, queda por determinar el valor de 𝐹𝐵𝑀, factor que multiplica al coste de adquisición en condiciones estándar para dar el coste total del módulo. Dicho factor viene determinado por la siguiente fórmula: 𝐹𝐵𝑀 =(𝐵1+𝐵2𝐹𝑀𝐹𝑃) (3.2) Donde: 𝐹𝐵𝑀 es el Bare Module Factor, el factor de coste de modulo en adelante 𝐵𝑖 son constantes experimentales que varían según el equipo 𝐹𝑀 es el factor corrector por material 𝐹𝑃 es el factor corrector por presión Si se introduce esta ecuación en la (2.6) queda: 𝐶𝐵𝑀 =𝐶𝑝 0(𝐵1+𝐵2𝐹𝑀𝐹𝑃) (3.3) En esta ecuación se aprecia el efecto que tienen los factores de corrección de presión y material en el coste total del módulo. Si, por ejemplo, los coeficientes 𝐵1 y 𝐵2 valen cero, entonces el coste de adquisición se relaciona directamente con el coste total a razón de ambos factores correctivos. Como se puede entrever, esto no siempre es así, y cada equipo dotará por medio de los coeficientes 𝐵1 y 𝐵2 un peso a los factores de corrección.
17 17 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” 3.3 Estimación del coste de la planta El enfoque que sigue este método de estimación es el de intentar estimar el coste de la planta a partir del coste totales de los equipos. Existen dos posibilidades a la hora de construir una planta industrial [15]: - Plantas Greenfield: Como su nombre anglosajón sugiere, son plantas que se construyen desde cero, en campo “verde”, por lo que se evitan labores de demolición, reformas, etc. Sin embargo, en ellas no se puede aprovechar el ahorro que supone tener disponibles edificaciones previas. - Plantas Brownfield: A diferencia de la anterior, consisten en ampliaciones o reformas a plantas ya existentes, de manera que edificios y estructuras antiguas se ponen en uso, aunque a veces los costes se pueden disparar respecto a las Greenfield si las tareas de demolición son demasiado costosas. Para estimar estas dos clases de construcción, es necesario añadir otros costes a los directos e indirectos de los equipos. Son esencialmente dos grupos [8]: - Costes de tarifas y contingencias: Los costes de contingencia dependen del grado de detalle del diagrama de procesos aportado y la fiabilidad de los datos de costes. Por norma general, se toman un 3% y un 15% de los costes totales de módulos. Con esto se tendrían los costes para una ampliación a una planta existente (Brownfield). - Costes de instalaciones auxiliares: son los asociados a edificios auxiliares, utilities, adecuación del lugar, etc. Estos costes varían entre 20% y 100% del coste de los módulos en condiciones estándar, ya que no son dependientes de las condiciones de presión y los materiales utilizados. Tomaremos un valor medio conservador de 50%. Sumados a los anteriores se tienen los costes para plantas Greenfield . 𝐶𝑎𝑚𝑝𝑙𝑖𝑎𝑐𝑖ó𝑛 =1.18∑𝐶𝐵𝑀,𝑖 𝑛 𝑖=1 (3.4) Donde n es el número de equipos. 𝐶𝑔𝑟𝑒𝑒𝑛𝑓𝑖𝑒𝑙𝑑 = 𝐶𝑎𝑚𝑝𝑙𝑖𝑎𝑐𝑖ó𝑛 +0.5∑𝐶𝐵𝑀,𝑖 0 𝑛 𝑖=1 (3.5) Se ha diseñado un diagrama de bloques que ilustra gráficamente las etapas a seguir para la estimación de los equipos.
Aplicación de Cálculo de Inmovilizado 24 Para el cálculo de sus costes, se precisará el tipo de intercambiador. Se han incluido los que se han considerado más frecuentes en la industria química. Intercambiador de doble tubo, multitubo, y dos tipos de carcasas y tubo (uno de cabezal flotante y otro fijo, válido también para tubos en U). Para su estimación se comienza con el coste de adquisición resolviendo la ecuación (3.1) con el área de transferencia del intercambiador y los siguientes coeficientes. Tabla 3-3. Coeficientes para el calculo 𝐶𝑝 0 del intercambiador Tipo de intercambiador K1 K2 K3 Doble tubo 3.3444 0.2745 -0.0472 Multitubo 2.7652 0.7282 0.0783 Cabezal fijo, o tubo en U 4.3247 -0.303 0.1634 Cabezal Flotante 4.8306 -0.8509 0.3187 Figura 3-6.Interfaz del intercambiador
25 25 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” En cuanto a materiales, se tendrá la posibilidad de elegir entre: - Carcasa y tubos de acero al carbono - Carcasa de acero al carbono y tubos de acero inoxidable - Carcasa y tubos de acero inoxidable - Carcasa y tubos de cobre Para el caso de doble tubo y multitubo, se podría tomar el interior del tubo y el exterior de diferentes materiales. En tal caso escójase la combinación de materiales que se desee de la lista, es independiente si el acero inoxidable va por fuera o por dentro en el caso de acero al carbono / acero inoxidable. Tabla 3-4. Coeficientes para el cálculo de 𝐹𝑀 en intercambiador Tipo de intercambiador AC - AC AC - AI AI - AI Cu -Cu Doble Tubo 1.00 1.81 2.73 1.69 Multitubo 1.00 1.81 2.73 1.69 Cabezal Fijo, o tubos en U 1.00 1.81 2.73 1.69 Cabezal Flotante 1.00 1.81 2.73 1.69 Para el cálculo del factor corrector de presión, se hará uso de la siguiente expresión: 𝑙𝑜𝑔10 𝐹𝑝=𝐶1+𝐶2𝑙𝑜𝑔10(𝑝)+𝐶3𝑙𝑜𝑔10(𝑝)2 (3.6) Tabla 3-5. Coeficientes para el cálculo de 𝐹𝑝 en intercambiadores Tipo de intercambiador presión (barg) 𝑪𝟏 𝑪𝟐 𝑪𝟑 Doble Tubo/ Multitubo 100<p<300 13.1467 -12.6574 3.0705 40<p<100 0.6072 -0.912 0.3327 p<40 0 0 0 Cabezal Fijo, o tubos en U, cabezal flotante 5<p<140 0.03881 -0.11272 0.08183 p<5 0 0 0
Aplicación de Cálculo de Inmovilizado 26 De tal manera, cuando se tengan presiones bajas, los coeficientes 𝐶𝑖 valen cero, lo que significa que el factor 𝐹𝑝 es 1, es decir, no hace falta corregir por presión. A medida que esta aumenta, el factor 𝐹𝑝 comienza a mostrar más importancia. Cabe resaltar, al igual que puntualizó Turton [8] acertadamente, que pese a que existe esta corrección por presión, las diferencias en el coste final no se ven dramáticamente afectadas como puede suceder con otros equipos como los depósitos presurizados. Esto se debe a que hasta el más fino de los tubos de los intercambiadores puede soportar presiones bastante superiores a la atmosférica, lo que resulta en que el factor 𝐹𝑝 no tenga gran influencia en el coste final. El coste del módulo tendrá la forma de la ecuación (3.3) con los siguientes valores: Tabla 3-6. Coeficientes para cálculo de 𝐶𝐵𝑀 en intercambiador Tipo de intercambiador 𝐵𝟏 𝐵𝟐 Doble Tubo/ Multitubo 1.74 1.55 Cabezal Fijo, o tubos en U, cabezal flotante 1.63 1.66 Una vez obtenido el coste del módulo en 2001, se corrige por inflación con la ecuación (2.7). 3.4.3 Tanque de almacenamiento Los tanques de almacenamiento son recipientes diseñados para almacenar los líquidos o gases que forman parte del proceso. Se suelen diseñar según la norma del Instituto Americano de Petróleo API 650. Tienen tamaños diversos y se suelen construir dentro de estructuras contenedoras en caso de falla o ruptura. Multitud de industrias lo usan: petroquímica, refinerías, química, etc. Puede ser de techo fijo, el más económico, donde se cierra la estructura metálica con un techo plano o cónico, o flotante, cuya parte superior queda como indica su nombre flotando sobre el líquido, reduciendo el volumen de gases así como sus fugas [19]. Figura 3-7. Diseño de un tanque según norma API-650
27 27 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Para el tanque de almacenamiento se pide la construcción del techo, fija o flotante, así como el volumen del tanque en metros cúbicos. Figura 3-8. Interfaz del tanque Como de costumbre, se calculan los coeficientes del coste de adquisición. Tabla 3-7. Coeficientes para el calculo 𝐶𝑝 0 del tanque Tipo de Tanque K1 K2 K3 Techo Fijo 4.8509 -0.3973 0.1445 Techo Flotante 5.9567 -0.7585 0.1749 El parámetro característico del tanque es el volumen. Con este y los coeficientes obtenidos resolvemos la ecuación (3.1). Para los tanques de almacenamiento no se dispondrá de corrección por presión ya que o son atmosféricos o tendrán una presión ligeramente por encima de la atmosférica. El coeficiente 𝐵1 será 1.1; lo que resulta en multiplicar el coste de adquisición por ese valor para obtener el coste del módulo.
Aplicación de Cálculo de Inmovilizado 28 𝐶𝐵𝑀 =1.1𝐶𝑝 0 (3.7) Este valor debe ser corregido a fecha presente con la ecuación (2.7). 3.4.4 Turbina Como se insinuó en el apartado del compresor, la turbina es una máquina motora, la cual genera potencia debido al cambio de densidad que tiene el fluido a su paso. Las hay de vapor, donde es vapor de agua el fluido de trabajo, y de gas, donde no se espera un posible cambio de fase. Según la dirección del flujo con respecto al eje de rotación de la máquina, podemos hablar de turbinas axiales, donde las partículas se mueven en superficies cilíndricas coaxiales con el eje de la máquina, o radiales, donde el fluido es en este caso radial al eje de rotación [16]. Figura 3-9. Turbina de vapor de Siemens
29 29 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Figura 3-10. Interfaz de la turbina El cálculo de la turbina es similar al del compresor. Se calculan los costes de adquisición de la turbina con la ecuación (3.1). El parámetro característico que se pide es la potencia de la turbina en kilovatios. Tabla 3-8. Coeficientes para el calculo 𝐶𝑝 0 de la turbina Tipo de Turbina K1 K2 K3 Axial 2.7051 1.4398 -0.1776 Radial 2.2476 1.4965 -0.1618 Tabla 3-9. Coeficientes para el cálculo de 𝐹𝐵𝑀 de la turbina Tipo de Turbina FBMAC FBMAI FBMAle.Esp. Axial 3.5 6.13 11.66 Radial 3.5 6.13 11.66
Aplicación de Cálculo de Inmovilizado 30 Como en el caso del compresor, para la turbina no existe coeficiente de presión por falta de datos del estudio que desarrolló los coeficientes. Se procede por tanto al cálculo del coste del módulo total introduciendo 𝐹𝐵𝑀 y el coste de adquisición en la ecuación (2.6) y se actualiza con el CEPCI en la ecuación (2.7). 3.4.5 Bomba La bomba es el equipo encargado de suministrar energía al fluido en un sistema hidráulico, moviéndolo de zona de baja presión a zona de alta presión [20]. Figura 3-11. Bomba centrífuga industrial Para el coste de adquisición de la bomba se precisa de su potencia, al igual que en el caso del compresor y la turbina. Tabla 3-10. Coeficientes para el calculo 𝐶𝑝 0 de la bomba Tipo de Bomba K1 K2 K3 Centrífuga 3.3892 0.0536 0.1538 Desplazamiento positivo 3.4771 0.1350 0.14380 Alternativa 3.8696 0.3161 0.12200
31 31 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Hallado el coste de adquisición en condiciones estándar con la ecuación (3.1), se elige el factor por material conforme al deseado y se calcula el factor de presión con la misma ecuación que para el intercambiador (3.6). Tabla 3-11. Coeficientes para el cálculo de 𝐹𝐵𝑀 de la bomba Tabla 3-12. Coeficientes para el cálculo de 𝐹𝑝 en la bomba Teniendo el coste de adquisición, y los factores correctores, sabiendo que la ecuación que los relaciona con el coste del módulo es la (3.3), teniendo: 𝐵1=1.89 ; 𝐵2=1.35 Se calcula el coste de módulo y se actualiza a la fecha presente con el CEPCI en la ecuación (2.7). 3.4.6 Depósito presurizado Los recipientes presurizados mantienen su contendido en unas condiciones de presión y temperatura establecidas. Se usan tanto para almacenar como para operaciones de separación. En la estimación del depósito presurizado, la estimación del coste de adquisición se realiza de manera análoga a los equipos anteriores. Se acudirá a la ecuación (3.1) con el volumen del depósito, que lo calculará el programa a partir de los datos que aporta el usuario de diámetro y longitud ambos en metros, y con los siguientes coeficientes: Tipo de Bomba FBMAC FBMAI FBMAle.Esp. Centrífuga 1.55 2.28 4.36 Desplazamiento positivo 1.41 2.67 4.74 Alternativa 1.46 2.35 3.95 Tipo de Bomba 𝑪𝟏 𝑪𝟐 𝑪𝟑 Centrífuga -0.3935 0.3957 -0.00226 Desplazamiento positivo -0.24538 0.259016 -0.01363 Alternativa -0.2454 0.2590 -0.0136
Aplicación de Cálculo de Inmovilizado 32 Tabla 3-13. Coeficientes para el calculo 𝐶𝑝 0 del depósito Tipo de Depósito K1 K2 K3 Horizontal 3.5565 0.3776 0.0905 Vertical 3.4974 0.4485 0.1074 En el caso del depósito, la presión juega un papel importante en su estimación ya que el equipo está diseñado para soportar las tensiones que generen los gradientes de presiones del fluido en su interior. A mayor presión , más material será necesario para su construcción. 𝐹𝑝=𝑝·𝐷 2(850−0.6𝑝)+0.00315 0.0063 (3.8) Donde: 𝐹𝑝 es el factor corrector de presión p es la presión del depósito en bares manométricos D es el diámetro del depósito Esta fórmula surge del código ASME para el diseño de depósitos a presión [21]. De esta manera, se tiene en cuenta una presión máxima para el acero al carbono de 944 bares, un grosor mínimo del depósito de 0.0063 metros, una eficiencia de las soldaduras de 0.9, y una corrosión admisible de 0.00315,siendo este el estimado que se perderá en el ciclo de vida del equipo. Turton [8] establece que para valores obtenidos de 𝐹𝑝 menores de 1, 𝐹𝑝= 1. Para presiones menores de 0.5 bares manométricos, 𝐹𝑝=1.25. Tabla 3-14. Coeficientes para el cálculo de 𝐹𝑝 en el depósito FBMAC 1 FBMAI 3.1 FBMAle.Esp. 7.1 FBMTi 9.4 Con los factores de corrección calculados, utilizamos la ecuación (3.3), teniendo:
33 33 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Tipo de Depósito 𝑩𝟏 𝑩𝟐 Horizontal 1.49 1.52 Vertical 2.25 1.82 Por último, se ajusta por inflación con la ecuación (2.7) y el CEPCI del año en curso. 3.4.7 Columna de destilación La columna de destilación es esencialmente un depósito vertical donde se separan diferentes fases del fluido que se introduce. En su interior se instalan bandejas o elementos que aumentan el área de transferencia y mejoran la separación. Figura 3-12. Esquema de funcionamiento de una columna Por ello, el cálculo de las columnas constará de dos partes. Una primera que será ídem de la estimación correspondiente a un depósito presurizado vertical. Posteriormente, se estiman los costes de los platos que se introducen. Para evitar caer en reiteración, se remite al lector a revisar el subepígrafe anterior para la parte del cuerpo de la columna, el depósito. En cuanto a los platos, se disponen de dos tipos, de malla y de válvula. El programa pide el tipo de platos, el número de platos y su material: acero al carbono, acero inoxidable y aleación de níquel.
Ejemplo de Estimación 40 Figura 4-3. Cálculo del intercambiador E-101 Figura 4-4. Cálculo del intercambiador E-102
41 41 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Figura 4-5. Cálculo del intercambiador E-103 Figura 4-6. Cálculo de las bombas P-101
Ejemplo de Estimación 42 Figura 4-7. Cálculo del tanque V-101 Una vez finalizado el proceso de adición de equipos, pulsamos finalizar para obtener el coste total.
43 43 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” Figura 4-8. Cálculo final del proceso El programa nos ofrece los siguientes resultados - Coste total de los módulos ------------------------------------------------------------------ $1.162.042 - Coste si el proceso fuera una ampliación ---------------------------------------------------$1.371.209 - Coste para planta de nueva construcción --------------------------------------------------$1.820.065 Al cambio a día 3/07/2021 el coste de la planta supondría 1.534.624,79 € [22].
Ejemplo de Estimación 44
45 5 CONCLUSIONES n este trabajo se hace un avance en lo que se refiere a automatización de cálculo de costes en plantas industriales, consiguiendo mecanizar algunas de las estimaciones que el ingeniero debiere realizar a mano. Se ha utilizado el método de costes de módulos, donde se estima el coste de adquisición de los equipos de la planta, y, por medio de factores desarrollados a partir de un estudio a empresas manufactureras, se relaciona con el coste total de los equipos, incluyendo montaje, mano de obra, etc. Se han expuesto además otros métodos de estimación existentes, analizando sus virtudes y defectos. También se ha realizado un ejemplo de muestra de un cálculo de una planta, que bien podría ser un caso real, ilustrando la eficacia de la aplicación una vez se dispone del diagrama de flujo de la planta. El programa consigue cumplir los objetivos para los que se diseñó: dar una estimación con una precisión de al menos el orden de magnitud, de manera que se puede empezar a trabajar sobre una base en cuanto a la estimación de costes y análisis de viabilidad se refiere. Como se han comentado, existen numerosos métodos para realizar las estimaciones. En este trabajo se ha elegido el que se consideraba el más adecuado a la clase de estimación que se perseguía. Queda abierta la posibilidad de realizar mejoras y ampliaciones a lo desarrollado hasta ahora. Desde aquí se proponen varias propuestas susceptibles de ser consideradas. Pese a haber incluido varios de los equipos más frecuentemente encontrados en procesos de índole químico-industrial, es un hecho que las posibles combinaciones de tipología y características de los equipos son incontables. Teniendo esto en cuenta, y persiguiendo un uso real de la aplicación, sería un gran aporte el añadir la posibilidad de que el usuario creara su propio equipo, definiendo sus particularidades y configurándolo a su gusto. Esto sin duda abriría camino al uso extensivo en aplicaciones industriales. Otra adición posible sería el guardar un histórico de las estimaciones realizadas, de manera que el usuario pueda tener acceso a análisis previos y modificarlos si fuese necesario. También se pueden aplicar desgloses de partidas, de manera que el resultado final del coste de la planta se pudiera dividir en sus diferentes composiciones: equipos, instalación, tuberías… Por último, puede ser interesante combinar el presente trabajo con uno que haga uso de este para una estimación de rentabilidades utilizando métodos usuales como el VAN o el TIR, extendiendo el alcance del programa. E
Conclusiones 46
47 ANEXO A CÓDIGO FUENTE # ## Librerías y ecuaciones principales import tkinter import math def show_widget(widget, r, c): # Pone los widgets en pantalla widget.grid(row=r, column=c) def hide_all(widgets): for widget in widgets: widget.grid_remove() # Las tres ecuaciones de Bare Module Cost def equ1(k1, k2, k3, A, cepci): p1 = k1 p2 = k2*math.log10(A) p3 = k3*pow(math.log10(A),2) return pow(10, p1 + p2 + p3) * cepci/397 def equ2(c1, c2, c3, A): p1 = c1 p2 = c2*math.log10(A) p3 = c3*pow(math.log10(A),2) return pow(10, p1 + p2 + p3) def equ3(p,d): return ((p*d)/(2*(850-0.6*p))+0.00315)/0.0063 # ## Ventana Principal calc = tkinter.Tk() calc.geometry("800x500") # Tamaño de la pantalla calc.title("Cálculo de costes") scroll = tkinter.Scrollbar (calc) widgets = [] equipos_label = tkinter.Label(calc,text='Equipos:') equipos_label.grid(row=1,column=1)
Anexo A Código Fuente 48 equipos_lista = ["Compresor","Intercambiador de calor","Tanque","Turbina","Bomba", "Depósito Presurizado", "Columna"] equipos_opciones = tkinter.StringVar() equipos_opciones.set("Seleccionar equipo") # Valor por defecto equipos_dd =tkinter.OptionMenu(calc, equipos_opciones, *equipos_lista) equipos_dd.grid(row=1,column=2) ##CEPCI cepci_var = tkinter.StringVar() cepci_label = tkinter.Label(calc,text='CEPCI') cepci = tkinter.Entry(calc,textvariable = cepci_var) cepci_var.set("") cepci_label.grid(row=1,column=3) cepci.grid(row=1,column=4) carro = [] def finalizar_fun(): #Quitar todos los widgets equipos_label.grid_remove() equipos_dd.grid_remove() cepci_label.grid_remove() cepci.grid_remove() boton_finalizar.grid_remove() hide_all(widgets) #Introduce el menú finalizar ##Títulos tkinter.Label(calc, text = "Equipos").grid(row = 1,column=1) tkinter.Label(calc, text = "Coste base").grid(row = 1,column=2) tkinter.Label(calc, text = "Cost total").grid(row = 1,column=3) row = 2 suma_coste = 0 suma_cop = 0 for item in carro: tkinter.Label(calc, text = str(item[0])).grid(row = row,column=1) #escribe Coste en condiciones estándar tkinter.Label(calc, text = "$" + str(item[1])).grid(row = row,column=2) #escribe Coste Total
49 49 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” tkinter.Label(calc, text = "$" + str(item[2])).grid(row = row,column=3) suma_cop = suma_cop + item[1] suma_coste = suma_coste + item[2] row = row + 1 total_label = tkinter.Label(calc,text="Coste Total").grid(row=row, column=1) total_sumabase = tkinter.Label(calc,text= "$" + str(suma_cop)).grid(row=row, column=2) total_suma = tkinter.Label(calc,text= "$" + str(suma_coste)).grid(row=row, column=3) coste_ampliacion = int(1.18 * suma_coste) coste_planta_v = int(1.18 * suma_coste + 0.5 * suma_cop) tkinter.Label(calc,text="---------------------- ").grid(row=row+1, column=1) tkinter.Label(calc,text="Coste Ampliación").grid(row=row+2, column=1) tkinter.Label(calc,text="$" + str(coste_ampliacion)).grid(row=row+2, column=2) tkinter.Label(calc,text="Coste Planta Greenfield").grid(row=row+3, column=1) tkinter.Label(calc,text="$" + str(coste_planta_v)).grid(row=row+3, column=2) ##Finalizar boton_finalizar = tkinter.Button(calc, text = "Finalizar", command = finalizar_fun) boton_finalizar.grid(row=11,column=2) # ## UI Compresor ##Tipo compresor compresor_tipo_label = tkinter.Label(calc,text='Tipo compresor') compresor_tipo_lista = ["Centrifugo","Axial","de Tornillo","Alternativo"] compresor_tipo_opciones = tkinter.StringVar() compresor_tipo_dd = tkinter.OptionMenu(calc, compresor_tipo_opciones, *compresor_tipo_lista) compresor_tipo_opciones.set("Seleccionar") # Valor por defecto ##Compresor Material compresor_material_label = tkinter.Label(calc,text='Material del compresor') compresor_material_lista = ["Acero al carbono","Acero inoxidable","Aceros aleados especiales"] compresor_material_opciones = tkinter.StringVar()
Anexo A Código Fuente 56 if(hex_tipo_opciones.get() == "Doble tubo"): k1 = 3.3444 k2 = 0.2745 k3 = -0.0472 b1 = 1.74 b2 = 1.55 if(presion <= 40): c1 = 0 c2 = 0 c3 = 0 elif (presion > 40 and presion < 100): c1 = 0.6072 c2 = -0.912 c3 = 0.3327 else: c1 = 13.1467 c2 = -12.6574 c3 = 3.0705 if(hex_tipo_opciones.get() == "Multitubo"): k1 = 2.7652 k2 = 0.7282 k3 = 0.0783 b1 = 1.74 b2 = 1.55 if(presion <= 40): c1 = 0 c2 = 0 c3 = 0 elif (presion > 40 and presion < 100): c1 = 0.6072 c2 = -0.912 c3 = 0.3327 else: c1 = 13.1467 c2 = -12.6574 c3 = 3.0705 if(hex_tipo_opciones.get() == "Cabezal fijo, o tubo en U"): k1 = 4.3247 k2 = -0.303 k3 = 0.1634 b1 = 1.63 b2 = 1.66 if(presion <= 5): c1 = 0 c2 = 0
57 57 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” c3 = 0 elif (presion > 5 and presion < 140): c1 = 0.3881 c2 = -0.11272 c3 = 0.08183 if(hex_tipo_opciones.get() == "Cabezal flotante"): k1 = 4.8306 k2 = -0.8509 k3 = 0.3187 b1 = 1.63 b2 = 1.66 if(presion <= 5): c1 = 0 c2 = 0 c3 = 0 elif (presion > 5 and presion < 140): c1 = 0.03881 c2 = -0.11272 c3 = 0.08183 else: hex_coste["text"] = "Exceso de presión" cop = int(equ1(k1,k2,k3,area,cepci_v)) fp = equ2 (c1,c2,c3,presion) coste_base = int(cop*(b1+b2*1*1)) coste = int(cop*(b1+b2*fp*fbm)) hex_coste["text"] = coste, "$" else: hex_coste["text"] = "Entrada incompleta" return coste_base, coste def anadir_hex(): cop , coste = calc_coste_hex () carro.append(["Intercambiador", cop, coste]) boton_calc_hex = tkinter.Button(calc, text = "Calcular", command = calc_coste_hex) boton_anadir_hex = tkinter.Button(calc, text = "Añadir", command = anadir_hex) #Añadir a lista widgets widgets.append(hex_tipo_label) widgets.append(hex_tipo_dd)
Anexo A Código Fuente 58 widgets.append(hex_area_label) widgets.append(hex_area) widgets.append(hex_material_label) widgets.append(hex_material_dd) widgets.append(hex_presion_label) widgets.append(hex_presion) widgets.append(hex_coste_label) widgets.append(hex_coste) widgets.append(boton_calc_hex) widgets.append(boton_anadir_hex) # ## UI Turbina ##Tipo Turbina turbina_tipo_label = tkinter.Label(calc,text='Tipo Turbina') turbina_tipo_lista = ["Axial","Radial"] turbina_tipo_opciones = tkinter.StringVar() turbina_tipo_dd = tkinter.OptionMenu(calc, turbina_tipo_opciones, *turbina_tipo_lista) turbina_tipo_opciones.set("Seleccionar") # Valor por defecto ##Material turbina turbina_material_label = tkinter.Label(calc,text='Material Turbina') turbina_material_lista = ["Acero al carbono","Acero inoxidable","Aceros aleados especiales"] turbina_material_opciones = tkinter.StringVar() turbina_material_dd = tkinter.OptionMenu(calc, turbina_material_opciones, *turbina_material_lista) turbina_material_opciones.set("Seleccionar") # valor por defecto ##Potencia Turbina turbina_pwr_var = tkinter.StringVar() turbina_pwr_label = tkinter.Label(calc,text='Potencia (kW)') turbina_pwr = tkinter.Entry(calc,textvariable = turbina_pwr_var) turbina_pwr_var.set("") ##Coste Turbina turbina_coste_label = tkinter.Label(calc,text='Coste Turbina') turbina_coste = tkinter.Label(calc,text="N/A") ##funcion calculo turbina def calc_coste_turbina(): potencia = -1 try: if(turbina_pwr.get() == "" or cepci.get() == ""): turbina_coste["text"] = "Entrada incompleta" return cepci_v = float(cepci.get())
59 59 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” potencia = float(turbina_pwr.get()) except: turbina_cost["text"] = "Entrada incorrecta" if(turbina_material_opciones.get()!="Seleccionar" and turbina_tipo_opciones!="Seleccionar"): #ECUACION 1 k1 = -1 k2 = -1 k3 = -1 fbm = -1 if(turbina_tipo_opciones.get() == "Axial"): k1 = 2.7051 k2 = 1.4398 k3 = -0.1776 if(turbina_material_opciones.get() == "Acero al carbono"): fbm = 3.5 if(turbina_material_opciones.get() == "Acero inoxidable"): fbm = 6.1 if(turbina_material_opciones.get() == "Aceros aleados especiales"): fbm = 11.7 if(turbina_tipo_opciones.get() == "Radial"): k1 = 2.2476 k2 = 1.4965 k3 = -0.1618 if(turbina_material_opciones.get() == "Acero al carbono"): fbm = 3.5 if(turbina_material_opciones.get() == "Acero inoxidable"): fbm = 6.1 if(turbina_material_opciones.get() == "Aceros aleados especiales"): fbm = 11.7 cop = int(equ1(k1,k2,k3,potencia,cepci_v)) coste = int(cop * fbm) turbina_coste["text"] = coste, "$" return cop, coste else: turbina_coste["text"] = "Datos Incompletos" def anadir_turbina(): cop , coste = calc_coste_turbina () carro.append(["Turbina", cop, coste])
Anexo A Código Fuente 60 boton_calc_turbina = tkinter.Button(calc, text = "Calcular", command = calc_coste_turbina) boton_anadir_turbina = tkinter.Button(calc, text = "Añadir", command = anadir_turbina) #Añadir a lista de widgets widgets.append(turbina_tipo_label) widgets.append(turbina_tipo_dd) widgets.append(turbina_material_label) widgets.append(turbina_material_dd) widgets.append(turbina_pwr_label) widgets.append(turbina_pwr) widgets.append(turbina_coste_label) widgets.append(turbina_coste) widgets.append(boton_calc_turbina) widgets.append(boton_anadir_turbina) # ## UI Bomba ##Tipo bomba bomba_tipo_label = tkinter.Label(calc,text='Tipo Bomba') bomba_tipo_lista = ["Centrifuga","Desplazamiento Positivo", "Alternativa"] bomba_tipo_opciones = tkinter.StringVar() bomba_tipo_dd = tkinter.OptionMenu(calc, bomba_tipo_opciones, *bomba_tipo_lista) bomba_tipo_opciones.set("Seleccionar") # Valor por defecto ##Material bomba bomba_material_label = tkinter.Label(calc,text='Material Bomba') bomba_material_list = ["Acero al carbono","Acero inoxidable","Aceros aleados especiales"] bomba_material_opciones = tkinter.StringVar() bomba_material_dd = tkinter.OptionMenu(calc, bomba_material_opciones, *bomba_material_list) bomba_material_opciones.set("Seleccionar") # Valor por defecto ##Potencia bomba bomba_pwr_var = tkinter.StringVar() bomba_pwr_label = tkinter.Label(calc,text='Potencia (kW)') bomba_pwr = tkinter.Entry(calc,textvariable = bomba_pwr_var) bomba_pwr_var.set("") ##Presion bomba bomba_presion_var = tkinter.StringVar() bomba_presion_label = tkinter.Label(calc,text='Presion (barg)') bomba_presion = tkinter.Entry(calc,textvariable = bomba_presion_var)
61 61 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” bomba_presion_var.set("") ##Coste bomba bomba_coste_label = tkinter.Label(calc,text='Coste Bomba') bomba_coste = tkinter.Label(calc,text="N/A") ##funcion calculo bomba def calc_coste_bomba(): presion = -1 potencia = -1 cepci_v = -1 if(bomba_pwr.get() == "" or bomba_presion.get()=="" or cepci.get() == ""): bomba_coste["text"] = "Entrada incompleta" return try: presion = float(bomba_presion.get()) potencia = float(bomba_pwr.get()) cepci_v = float(cepci.get()) except: bomba_coste["text"] = "Entrada incorrecta" return if(bomba_material_opciones.get()!="Seleccionar" and bomba_tipo_opciones!="Seleccionar"): #ECUACION 1 k1 = -1 k2 = -1 k3 = -1 c1 = -1 c2 = -1 c3 = -1 fp = -1 fbm = -1 if(bomba_tipo_opciones.get() == "Centrifuga"): k1 = 3.3892 k2 = 0.0536 k3 = 0.1538 if(presion <= 10): fp = 1 else: c1 = -0.3935 c2 = 0.3957 c3 = -0.00226 if(bomba_material_opciones.get() == "Acero al carbono"):
Anexo A Código Fuente 62 fbm = 1.55 if(bomba_material_opciones.get() == "Acero inoxidable"): fbm = 2.28 if(bomba_material_opciones.get() == "Aceros aleados especiales"): fbm = 4.36 if(bomba_tipo_opciones.get() == "Desplazamiento Positivo"): k1 = 3.4771 k2 = 0.1350 k3 = 0.14380 if(presion <= 10): fp = 1 else: c1 = -0.245382 c2 = 0.259016 c3 = -0.01363 if(bomba_material_opciones.get() == "Acero al carbono"): fbm = 1.41 if(bomba_material_opciones.get() == "Acero inoxidable"): fbm = 2.67 if(bomba_material_opciones.get() == "Aceros aleados especiales"): fbm = 4.74 if(bomba_tipo_opciones.get() == "Alternativa"): k1 = 3.8696 k2 = 0.3161 k3 = 0.12200 if(presion <= 10): fp = 1 else: c1 = -0.2454 c2 = 0.2590 c3 = -0.0136 if(bomba_material_opciones.get() == "Acero al carbono"): fbm = 1.46 if(bomba_material_opciones.get() == "Acero inoxidable"): fbm = 2.35 if(bomba_material_opciones.get() == "Aceros aleados especiales"): fbm = 3.95 if(presion > 10): fp=equ2(c1,c2,c3,presion)
63 63 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” b1 = 1.89 b2 = 1.35 cop = int(equ1(k1,k2,k3,potencia,cepci_v)) coste_base = int(cop * (b1+b2*1*1)) coste = int(cop * (b1+b2*fp*fbm)) bomba_coste["text"] = coste, "$" return coste_base, coste else: bomba_coste["text"] = "Datos incompletos" def anadir_bomba(): cop , coste = calc_coste_bomba () carro.append(["Bomba", cop, coste]) boton_calc_bomba = tkinter.Button(calc, text = "Calcular", command = calc_coste_bomba) boton_anadir_bomba = tkinter.Button(calc, text = "Añadir", command = anadir_bomba) #Añadir a lista widgets widgets.append(bomba_tipo_label) widgets.append(bomba_tipo_dd) widgets.append(bomba_material_label) widgets.append(bomba_material_dd) widgets.append(bomba_pwr_label) widgets.append(bomba_pwr) widgets.append(bomba_presion_label) widgets.append(bomba_presion) widgets.append(bomba_coste_label) widgets.append(bomba_coste) widgets.append(boton_calc_bomba) widgets.append(boton_anadir_bomba) # ## UI Depósito presurizado ##Tipo Vessel vessel_tipo_label = tkinter.Label(calc,text='Tipo Depósito presurizado') vessel_tipo_lista = ["Horizontal","Vertical"] vessel_tipo_opciones = tkinter.StringVar() vessel_tipo_dd = tkinter.OptionMenu(calc, vessel_tipo_opciones, *vessel_tipo_lista) vessel_tipo_opciones.set("Seleccionar") # valor por defecto
Anexo A Código Fuente 64 ##Material Vessel vessel_material_label = tkinter.Label(calc,text='Material Depósito') vessel_material_lista = ["Acero al carbono","Acero inoxidable","Aceros aleados especiales", "Titanio"] vessel_material_opciones = tkinter.StringVar() vessel_material_dd = tkinter.OptionMenu(calc, vessel_material_opciones, *vessel_material_lista) vessel_material_opciones.set("Seleccionar") # valor por defecto ##Platos platos_label = tkinter.Label(calc,text='Platos de la columna') platos_lista = ["No Hay (depósito)", "Malla", "Válvula"] platos_opciones = tkinter.StringVar() platos_dd = tkinter.OptionMenu(calc, platos_opciones, *platos_lista) platos_opciones.set("Seleccionar") # valor por defecto ##Diametro Vessel vessel_diam_var = tkinter.StringVar() vessel_diam_label = tkinter.Label(calc,text='Diametro (m)') vessel_diam = tkinter.Entry(calc,textvariable = vessel_diam_var) vessel_diam_var.set("") ##Longitud Vessel vessel_lon_var = tkinter.StringVar() vessel_lon_label = tkinter.Label(calc,text='Longitud (m)') vessel_lon = tkinter.Entry(calc,textvariable = vessel_lon_var ) vessel_lon_var.set("") ##Presion maxima Vessel vessel_presion_var = tkinter.StringVar() vessel_presion_label = tkinter.Label(calc,text='Presion (barg)') vessel_presion = tkinter.Entry(calc,textvariable = vessel_presion_var) vessel_presion_var.set("") ##Vessel Coste vessel_coste_label = tkinter.Label(calc,text='Coste depósito') vessel_coste = tkinter.Label(calc,text="N/A") def calc_coste_vessel(): diametro = -1 longitud = -1 cepci_v = -1 presion = -1 try: #Diametro
65 65 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” if(vessel_diam.get() == ""): vessel_coste["text"] = "Entrada incompleta" return diametro = float(vessel_diam.get()) #Longitud if(vessel_lon.get() == ""): vessel_coste["text"] = "Entrada incompleta" return longitud = float(vessel_lon.get()) #Presion if(vessel_presion.get() == ""): vessel_coste["text"] = "Entrada incompleta" return presion = float(vessel_presion.get()) #Cepci if(cepci.get() == ""): vessel_coste["text"] = "Entrada incompleta" return cepci_v = float(cepci.get()) except: vessel_coste["text"] = "Entrada incorrecta" if(vessel_material_opciones.get()!="Seleccionar" and vessel_tipo_opciones!="Seleccionar"): #ECUACION 1 k1 = -1 k2 = -1 k3 = -1 fbm = -1 fp = -1 b1 = -1 b2 = -1 #Material if(vessel_material_opciones.get() == "Acero al carbono"): fbm = 1.0 if(vessel_material_opciones.get() == "Acero inoxidable"): fbm = 3.1 if(vessel_material_opciones.get() == "Aceros aleados especiales"): fbm = 7.1 if(vessel_material_opciones.get() == "Titanio"): fbm = 9.4 #Tipo if(vessel_tipo_opciones.get() == "Horizontal"): k1 = 3.5565 k2 = 0.3776 k3 = 0.0905 b1 = 1.49 b2 = 1.52
Anexo A Código Fuente 72 show_widget(hex_tipo_label, 2,1) show_widget(hex_tipo_dd , 2,2) show_widget(hex_material_label, 3,1) show_widget(hex_material_dd , 3,2) show_widget(hex_area_label, 4,1) show_widget(hex_area , 4,2) show_widget(hex_presion_label, 5,1) show_widget(hex_presion , 5,2) show_widget(hex_coste_label, 6,1) show_widget(hex_coste , 6,2) show_widget(boton_calc_hex,7,1) show_widget(boton_anadir_hex,7,2) elif(equipos_opciones.get() == "Tanque"): hide_all(widgets) #Mostrar menu tank show_widget(tank_tipo_label, 2,1) show_widget(tank_tipo_dd , 2,2) show_widget(tank_size_label, 3,1) show_widget(tank_size , 3,2) show_widget(tank_coste_label, 4,1) show_widget(tank_coste , 4,2) show_widget(boton_calc_tank, 5,1) show_widget(boton_anadir_tank,5,2) elif(equipos_opciones.get() == "Turbina"): hide_all(widgets) #Mostrar menu turbina show_widget(turbina_tipo_label, 2,1) show_widget(turbina_tipo_dd , 2,2) show_widget(turbina_material_label, 3,1) show_widget(turbina_material_dd , 3,2) show_widget(turbina_pwr_label, 4,1) show_widget(turbina_pwr , 4,2) show_widget(turbina_coste_label, 5,1) show_widget(turbina_coste , 5,2) show_widget(boton_calc_turbina, 6,1)
73 73 Automatización del Cálculo de Inversiones en Plantas Industriales “Greenfield” show_widget(boton_anadir_turbina,6,2) elif(equipos_opciones.get() == "Bomba"): hide_all(widgets) #Mostrar menu Bomba show_widget(bomba_tipo_label, 2,1) show_widget(bomba_tipo_dd , 2,2) show_widget(bomba_material_label, 3,1) show_widget(bomba_material_dd , 3,2) show_widget(bomba_pwr_label, 4,1) show_widget(bomba_pwr , 4,2) show_widget(bomba_presion_label, 5,1) show_widget(bomba_presion , 5,2) show_widget(bomba_coste_label, 6,1) show_widget(bomba_coste , 6,2) show_widget(boton_calc_bomba, 7,1) show_widget(boton_anadir_bomba,7,2) elif(equipos_opciones.get() == "Depósito Presurizado"): hide_all(widgets) #Mostrar menu vessel show_widget(vessel_tipo_label,2,1) show_widget(vessel_tipo_dd ,2,2) show_widget(vessel_material_label, 3,1) show_widget(vessel_material_dd , 3,2) show_widget(vessel_diam_label, 4,1) show_widget(vessel_diam , 4,2) show_widget(vessel_lon_label, 5,1) show_widget(vessel_lon , 5,2 ) show_widget(vessel_presion_label, 6,1) show_widget(vessel_presion , 6,2) show_widget(vessel_coste_label, 7,1) show_widget(vessel_coste , 7,2) show_widget(boton_calc_vessel, 8,1) show_widget(boton_anadir_vessel,8,2) elif(equipos_opciones.get() == "Columna"): hide_all(widgets)
Anexo A Código Fuente 74 #Mostrar menu Columna show_widget(columna_material_label,2,1) show_widget(columna_material_dd ,2,2) show_widget(platos_label, 3,1) show_widget(platos_dd, 3,2) show_widget(num_platos_label, 4,1) show_widget(num_platos, 4,2) show_widget(platos_material_label, 5,1) show_widget(platos_material_dd, 5,2) show_widget(columna_diam_label, 6,1) show_widget(columna_diam , 6,2) show_widget(columna_lon_label, 7,1) show_widget(columna_lon , 7,2 ) show_widget(columna_presion_label, 8,1) show_widget(columna_presion , 8,2) show_widget(columna_coste_label, 9,1) show_widget(columna_coste , 9,2) show_widget(boton_calc_columna, 10,1) show_widget(boton_anadir_columna,10,2) #se enseñan las opciones cuando se detecta elección de equipo equipos_opciones.trace('w',show) calc.mainloop()
75 REFERENCIAS [1] Real Academia Española, «proyecto, proyecta | Definición | Diccionario de la lengua española». https://dle.rae.es/proyecto (accedido jul. 03, 2021). [2] R. de Heredia, Arquitectura y Urbanismo Industrial, 2.a ed. Madrid: Sección de Publicaciones de la Escuela Técnica Superior de Ingenieros Industriales de la Universidad Politécnica de Madrid, 1981. [3] S. C. Morales Palomino, Diseño de Plantas Industriales, 1.a ed. Madrid: UNED, 2011. [4] AACE International, «Cost Engineering Terminology», 2021. [5] AACE International, «Cost Estimate Classification System – as Applied in Engineering, Procurement, and Construction for the Process Industries», AACE Int. Recomm. Pract. No. 18R- 97, 2005. [6] K. K. Humphreys, Project and Cost Engineers’ Handbook, 4a ed. Granite Falls, North Carolina, U.S.A: MARCEL DEKKER, 2005. [7] J. M. Storch de Gracia y B. Herrero Sánchez, Organización, gestión y ejecución de proyectos industriales. Madrid: Ediciones Díaz de Santos, 2018. [8] R. Turton, R. C. Bailie, W. B. Whiting, y J. A. Shaeiwitz, «Estimation of Capital Costs», en Analysis, synthesis and design of chemical processes, 3a ed., New Jersey: Prentice Hall, 2009, pp. 182-221. [9] H. Lang, «Cost Relationships in Preliminary Cost Estimation», Chemical Engineering, 1947. [10] T. Wolf, «Lang Factor Cost Estimating», 2013. prjmgrcap.com/langfactorestimating.html (accedido jun. 23, 2021). [11] K. M. Guthrie, «Capital Cost Estimating», Chemical Engineering, 1969. [12] A. Sevilla Arias, «Inflación», 2015. https://economipedia.com/definiciones/inflacion.html (accedido jun. 09, 2021). [13] Python Software Foundation, «General Python FAQ — Python 3.9.6 documentation», jul. 06, 2021. https://docs.python.org/3/faq/general.html#what-is-python (accedido jul. 07, 2021). [14] C. Riba Romeva, Selección de materiales en el diseño de máquinas, 1.a ed. Barcelona: UPC, 2008. [15] T. Segal, «Greenfield vs. Brownfield Investments», jul. 09, 2019. https://www.investopedia.com/ask/answers/043015/what-difference-between-green-field-and- brown-field-investment.asp (accedido jul. 07, 2021). [16] T. Sánchez Lencero, A. Muñoz Blanco, y F. J. Jiménez-Espadafor Aguilar, Turbomáquinas térmicas. Madrid: Síntesis, 2010. [17] Acequisa, «Hastelloy C276». http://acequisa.com/spanish/niquel/alloy-c276.html (accedido jun. 30, 2021). [18] S. Perry, R. H. Perry, D. W. Green, y J. O. Maloney, Perry’s chemical engineers’ handbook, vol. 38, n.o 02. 2000. [19] Werner Sölken, «Introduction to Storage Tanks», 2008.
Referencias 76 http://www.wermac.org/equipment/storage_tanks_vessels_general.html (accedido jul. 06, 2021). [20] H. Silla, Chemical Process Engineering: Design and Economics. Nueva York: MARCEL DEKKER, 2003. [21] ASME, «Boiler and Pressure Vessel Code, An International Code», ASME Boil. Press. Vessel Code, p. 25, 2017. [22] Fusion Media Ltd., «Cambio Euro Dólar hoy | Investing.com». https://es.investing.com/currencies/eur-usd (accedido jul. 03, 2021). [23] JCV shipping & solutions, «Incoterms 2020 Rules», JCV Shipp. Solut., n.o Icc, p. 7447, 2020, [En línea]. Disponible en: https://www.diariodelexportador.com/2017/03/incoterms-cif- definicion-y.html.