Saltar al contenido principal
LibreTexts Español

5.2: Programas de Control Lógico - SI... ENTONCES... MIENTRAS

  • Page ID
    85443
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Introducción

    Un programa de control lógico es un conjunto de declaraciones condicionales que describen la respuesta de un controlador a diferentes entradas. Un controlador es una computadora utilizada para automatizar procesos industriales. Los ingenieros de procesos utilizan la lógica de control para decirle al controlador en un proceso cómo reaccionar a todas las entradas de los sensores con una respuesta adecuada para mantener el funcionamiento normal del proceso. La lógica de control (a veces llamada lógica de proceso) se basa en principios lógicos simples gobernados por declaraciones como IF X, THEN Y, ELSE Z pero se puede usar para describir una amplia gama de relaciones complejas en un proceso. Aunque diferentes controladores y procesos utilizan diferentes lenguajes de programación, se aplican los conceptos de lógica de control y las condiciones expresadas en un programa de control lógico pueden adaptarse a cualquier lenguaje.

    Los conceptos detrás de los programas de control lógico no solo se encuentran en los procesos químicos; de hecho, la lógica de control se utiliza en la vida cotidiana. Por ejemplo, una persona puede regular su propia temperatura corporal y nivel de confort usando las siguientes afirmaciones lógicas condicionales: SI la temperatura es un poco demasiado cálida, ENTONCES enciende un ventilador; SI la temperatura es demasiado cálida, ENTONCES enciende el aire acondicionado; SI la temperatura es un poco demasiado fría, ENTONCES ponga en una sudadera; SI la temperatura es demasiado fría, ENTONCES enciende la chimenea. La persona toma una entrada del ambiente (temperatura) y si cumple con cierta condición prescrita, ejecuta una acción para mantenerse cómoda. De manera similar, los procesos químicos evalúan los valores de entrada del proceso contra los valores establecidos para determinar las acciones necesarias para mantener el proceso funcionando sin problemas y de manera segura (ejemplo mencionado se ilustra a continuación).

    OGICALPrograms Introducción HumanTempControl.JPG

    Las siguientes secciones elaboran sobre la construcción de declaraciones lógicas condicionales y dan ejemplos de desarrollo de programas de control lógico para procesos químicos.

    Controles Lógicos

    Los controles lógicos (IF, THEN, ELSE y WHILE) comparan un valor de un sensor con un estándar establecido para que el valor evalúe la variable como Verdadero/Falso con el fin de dictar una respuesta apropiada para el sistema físico. El programa de control para un proceso químico contiene muchas declaraciones que describen las respuestas de válvulas, bombas y otros equipos a sensores como sensores de flujo y temperatura. Las respuestas descritas por el sistema pueden ser discretas, como un interruptor de encendido/apagado, o pueden ser continuas, como abrir una válvula entre 0 y 100%. El objetivo de un programa de control es mantener los valores monitoreados por los sensores a un nivel aceptable para la operación del proceso considerando factores como la calidad del producto, la seguridad y las limitaciones físicas del equipo. Además de describir la actividad normal del proceso, un programa de control también describe cómo se inicializará el proceso al inicio de cada día y cómo responderá el controlador ante una emergencia fuera de las condiciones normales de operación del sistema. A diferencia de un programa informático lineal, los programas lógicos monitorean y responden continuamente sin un orden específico. Antes de construir programas de control lógico, es importante entender las sentencias condicionales, como las sentencias IF-THEN y While, que gobiernan la lógica del proceso.

    Los siguientes controles lógicos que se encuentran a continuación están escritos en pseudocódigo. El pseudocódigo es una forma compacta e informal de escribir algoritmos de programas informáticos. Está destinado a la lectura humana en lugar de la lectura automática, y no requiere una sintaxis estricta para que la gente la entienda. El pseudocódigo se usa típicamente para planificar el desarrollo de programas informáticos y para delinear un programa antes de que ocurra la codificación real.

    Declaraciones IF-THEN

    Las declaraciones IF-THEN comparan un valor de un sensor a un valor establecido y describen lo que debería suceder si la relación se mantiene. La instrucción IF-THEN toma la forma IF X, THEN Y donde X e Y pueden ser variables individuales o combinaciones de variables. Por ejemplo, consideremos los siguientes enunciados 1 y 2. En el enunciado 1, tanto X como Y son variables individuales mientras que en el enunciado 2, X es una combinación de dos variables. La capacidad en la lógica condicional de combinar diferentes condiciones la hace más flexible que las gráficas de incidencia, que solo pueden describir relaciones monótonas entre dos variables (Ver gráficas de incidencia). Una relación monótona es aquella en la que si X está aumentando, Y siempre disminuye o si X está aumentando, Y siempre va aumentando. Para procesos complejos, es importante poder expresar relaciones no monótonas.

    1. SI T>200 C, ENTONCES abre V1
    2. SI T> 200 C y P> 200 psi, ENTONCES abre V1.

    Donde T es Temperatura, P es presión y V representa una válvula.

    En el comunicado 1, si la temperatura pasa a estar por encima de 200 C, se abrirá la válvula 1.
    En el comunicado 2, si la temperatura es superior a 200 C y la presión es superior a 200 psi, entonces se abrirá la válvula.

    De lo contrario, no se tomarán medidas en la válvula 1

    Si se cumplen las condiciones en la sentencia IF, se ejecuta la sentencia THEN, y dependiendo del comando, se actúa sobre el sistema físico. De lo contrario, no se toma ninguna acción en respuesta a la entrada del sensor. Para describir una acción alternativa si la condición IF no se mantiene verdadera, son necesarias las declaraciones ELSE.

    Declaraciones ELSE

    La forma simple de una declaración IF-THEN-ELSE es IF X, THEN Y, ELSE Z donde nuevamente X, Y y Z pueden ser variables individuales o combinaciones de variables (como se explica en la sección IF-THEN anterior). La (s) variable (s) en la sentencia ELSE se ejecutan si las condiciones en la sentencia IF no son verdaderas. Esta declaración funciona de manera similar a las declaraciones IF-THEN, en que las declaraciones son procesadas en orden. Se hace referencia a la sentencia ELSE last, y es una condición que a menudo se especifica para mantener el programa funcionando. Un ejemplo es el siguiente:

    SI P>200 psi, ENTONCES cerrar V1
    ELSE open V4

    En esta sentencia, si la presión pasa a ser de 200psi o menos, se omitirá la sentencia THEN y se ejecutará la sentencia ELSE, abriendo la válvula 4.

    En ocasiones, si X, Y o Z representan muchas variables y se utilizan varias sentencias AND u OR, se puede emplear una sentencia WHITE.

    Declaraciones CASE

    sentencia CASE es una sintaxis alternativa que puede ser más limpia que muchas declaraciones IF.. THEN y ELSE. El ejemplo que se muestra en la siguiente tabla muestra su importancia.

    CASO SI.. ENTONCES Y ELSE

    T>Tset+2:

    v2=v2+0.1

    T>Tset+1:

    v2=v2+0.05

    T<Tset-1:

    v2=v2-0.05

    T<Tset-2:

    v2=v2-0.1

    SI T>Tset+1:

    SI T>Tset+2:

    v2=v2+0.1

    MÁS:

    v2=v2+0.05

    ELSE SI T<Tset-1:

    SI T<Tset-2:

    v2=v2-0.1

    MÁS:

    v2=v2-0.05

    Así, las declaraciones CASE hacen que el código sea más fácil de leer para la depuración.

    Declaraciones MIENTRAS

    La condición MIENTRAS se utiliza para comparar una variable con un rango de valores. Se utiliza la sentencia While en lugar de una declaración de la forma (SI A>B Y SI A<C). Las declaraciones MIENTRAS simplifican el programa de control al eliminar varias declaraciones IF-AND. A menudo es útil cuando se modelan sistemas que deben operar dentro de un cierto rango de temperaturas o presiones. El uso de una instrucción WHILE puede permitirle incorporar una alarma o una señal de apagado en caso de que el proceso alcance condiciones inestables, como los límites del rango bajo el que opera la instrucción WHILE. A continuación se muestra un ejemplo sencillo que ilustra el uso de la sentencia WILIS.

    Ejemplo:
    Un tanque inicialmente vacío debe llenarse con 1000 galones de agua 500 segundos después de que se haya iniciado el proceso. El caudal de agua es exactamente de 1 galón/segundo si V1 está completamente abierto y V1 controla el flujo de agua hacia el tanque.

    Usando una instrucción IF... THEN el programa podría escribirse de la siguiente manera:
    IF t > 500 y t < 1501 ENTONCES establece V1 para abrir
    ELSE set V1 para cerrar.

    La sentencia WHILE utilizada para describir esta relación es la siguiente:

    WHILE 500 < t < 1501 set V1 para abrir
    ELSE set V1 para cerrar.

    Puede que no parezca un gran cambio entre las dos formas del código. Sin embargo, este es un modelo muy sencillo. Si se modela un proceso con múltiples variables podría necesitar muchas declaraciones IF... THEN para escribir el código cuando una sola condición WHILE podría reemplazarlo.

    Ejemplo:
    V1 controla los reactivos que ingresan a un reactor que solo puede funcionar de manera segura si la temperatura es inferior a 500K.

    El MIENTRAS se puede utilizar para controlar el proceso de la siguiente manera:
    MIENTRAS T < 500 conjunto V1 para abrir
    ELSE conjunto V1 para cerrar. ALARMA.

    Este ejemplo muestra cómo se puede usar una condición WHILES como medida de seguridad para evitar que un proceso se vuelva inestable o inseguro.

    Además de las listas de sentencias IF-THEN-ELSE-WHIEN, la lógica de control puede ser representada alternativamente por tablas de verdad y diagramas de transición de estado. Las tablas de verdad muestran todos los estados posibles de un modelo gobernado por declaraciones condicionales y los diagramas de transición de estados representan tablas de verdad gráficamente. A menudo, estos se utilizan en conjunto con booleanos, variables que sólo pueden tener dos valores, VERDADERO O FALSO. Un modelo booleano o función booleana sigue el formato de las declaraciones IF-THEN que se describen aquí. Aquí se ofrece una descripción de los modelos booleanos, tablas de verdad y diagramas de transición de estado.

    IR A declaraciones

    La instrucción GO TO ayuda a salir de la ejecución actual para ir a una configuración diferente. Puede ser un operador importante en la programación lógica porque se accede a muchas funciones comunes usando GO TO. Sin embargo, muchos programadores sienten que las declaraciones GO TO no deben usarse en la programación ya que agrega un nivel extra y a menudo innecesario de complejo que puede hacer que el código sea ilegible y difícil de analizar. A pesar de que el operador GO TO tiene sus desventajas, sigue siendo un operador importante ya que puede ayudar a simplificar las funciones básicas. Puede simplificar el código al permitir que una función, como una caja fuerte, sea referenciada varias veces sin tener que reescribir la función cada vez que se llama. El operador GO TO también es importante porque incluso los lenguajes avanzados que no tienen una función GO TO suelen tener un operador diferente que funciona de manera similar pero con limitaciones. Por ejemplo, los lenguajes C, C++ y java tienen cada uno funciones break y continue que son similares al operador GO TO. Break es una función que permite que el programa salga de un bucle antes de que llegue a su finalización, mientras que la función continue devuelve el control al bucle sin ejecutar el código después del comando continue. Una función es una parte del código dentro de un programa más grande, que realiza una tarea específica y es relativamente independiente del código restante. Algunos ejemplos de funciones son los siguientes:

    FUNCIÓN INICIALIZAR: Se ejecuta al inicio de un proceso para asegurarse de que todas las válvulas y el motor estén en la posición correcta. El funcionamiento de esta función podría ser cerrar todas las válvulas, reiniciar los contadores y temporizadores, encender los motores y apagar los calentadores.

    PROGRAMA DE FUNCIÓN: Es la ejecución principal del proceso.

    FUNCIÓN A FUERA DE FALLAS: Se ejecuta sólo cuando surge una situación de emergencia. El funcionamiento de esta función podría ser abrir o cerrar válvulas para detener el sistema, apagar las reacciones mediante enfriamiento, dilución, mezcla u otro método.

    APAGADO DE FUNCIÓN: Se ejecuta al final del proceso para poder apagarse.

    FUNCIÓN INACTIVO: Se ejecuta para apagar el proceso.

    Todas las funciones mencionadas anteriormente excepto FUNCTION IDLE se utilizan en todos los procesos químicos.

    Declaraciones ALARM

    La declaración ALARM se utiliza para advertir a los operadores en caso de que surja algún problema en el proceso. Las alarmas pueden no ser el peligro suficiente para apagar el proceso, pero requieren atención externa. Algunos ejemplos cuando se utilizan sentencias ALARM en el proceso son los siguientes:

    • Si el tanque de almacenamiento de un reactivo es bajo, entonces ALARMA.
    • Si la presión de un reactor es baja, entonces ALARMA.
    • Si no se detecta flujo incluso cuando la válvula está abierta, entonces ALARMA.
    • Si la temperatura del reactor es baja incluso después del calentamiento, entonces ALARMA.
    • Si los sensores redundantes discrepan, entonces ALARMA.

    En conclusión, las funciones de ALARMA son muy importantes para poder ejecutar un proceso de manera segura.

    Lenguaje de control en la industria

    Como se indicó anteriormente, estos comandos están todos en pseudocódigo, y no específicos de ningún lenguaje de programación. Una vez que se determina la estructura general del controlador, el pseudocódigo se puede codificar en un lenguaje de programación específico. Aunque hay muchos lenguajes propietarios en la industria, algunos populares son:

    • Visual Basic
    • C++
    • Programación de bases de datos (ex. Lenguaje de consulta estructurada/SQL)
    • Pascal
    • Fortran

    Pascal y Fortran son lenguajes más antiguos en los que se basan muchos lenguajes más nuevos, pero todavía se usan con algunos controladores, especialmente en plantas más antiguas. Cualquier experiencia con diferentes lenguajes informáticos es una ventaja definitiva en la industria, y algunos ingenieros químicos hacen la transición a controles avanzados diseñando, escribiendo e implementando código para asegurarse de que una planta siga funcionando sin problemas.

    Funciones lógicas en Microsoft Excel

    Microsoft Excel cuenta con herramientas lógicas básicas para ayudar a construir sentencias lógicas simples y, si es necesario, sistemas lógicos más complejos. A continuación se muestra una lista de las funciones.

    TRUE ()... Devuelve el valor lógico, VERDADERO.

    FALSE ()... Devuelve el valor lógico, FALSE.

    AND (Lógical_expresión_A, B, C)... Devuelve TRUE si todas las expresiones son verdaderas.

    OR (Lógical_expresión_A, B, C)... Devuelve VERDADERO si una de las expresiones es verdadera.

    NOT (logical_expression)... Devuelve lo contrario del valor lógico esperado. Si la expresión es VERDADERA, devolverá FALSE

    IFERROR (valor, valor_si_error)... Devuelve el valor a menos que haya un error en el que devuelva el valor_si_error.

    IF (expresión_lógica, valor_si_verdadero, valor_si_falso)... Comprueba la validez de la expresión y devuelve VERDADERO o FALSO igualmente.

    La función IF () será más útil en la programación lógica. Es esencialmente una función IF THEN o IF ELSE que devuelve uno de dos valores basados en la expresión lógica que está probando. Excel también permite funciones lógicas dentro de las funciones. Esto permite expresiones lógicas que involucran más de una instrucción IF dentro de sí misma, por ejemplo. El uso de estas herramientas será práctico para configurar rápidamente programas de control y otros sistemas en Microsoft Excel.

    Construyendo un programa de control lógico

    Comprender las declaraciones condicionales utilizadas en la lógica de control es el primer paso para construir un programa de control lógico. El segundo paso es desarrollar una comprensión profunda del proceso a controlar. Es necesario conocer los equipos, tuberías e instrumentación (contenidos en un diagrama P&ID), las condiciones de operación, los compuestos químicos utilizados y las preocupaciones de seguridad. Particularmente es importante conocer las variables medidas y controladas. Por ejemplo, se deben conocer los límites de presión de un tanque para desarrollar un plan de control que garantice la seguridad; ignorar esta restricción podría provocar explosión y lesiones. Una vez que se conocen los controles necesarios, se puede desarrollar un plan utilizando las declaraciones lógicas descritas anteriormente. El tercer paso es construir un programa de control lógico es entender que no siempre hay una respuesta correcta, lo que significa que hay muchas maneras diferentes de asegurar el mismo resultado deseado.

    Los Ejemplos 1, 2 y 3 demuestran la construcción de programas sencillos de control lógico. Cuanto más compleja es la situación, más tiempo se vuelve el plan lógico de control, pero el proceso sigue siendo el mismo. Aquí se da un ejemplo de un programa de control lógico más complejo.Este ejemplo es de la clase 2005 ChE 466 de la Universidad de Michigan y describe todo un proceso químico desde la entrega de materias primas hasta la salida del producto final.

    Determinación de condiciones de seguridad contra fallas

    Fail safe es la práctica de diseñar un sistema a las condiciones de seguridad por defecto si algo o todo sale mal. Los objetivos de las condiciones de seguridad contra fallas son:

    • Proteger personal de la planta
    • Proteger a la comunidad local alrededor de la planta
    • Proteger el medio ambiente
    • Proteger el equipo de planta

    Para establecer condiciones seguras, los programas a prueba de fallas deben especificar las posiciones deseadas de todas las válvulas y el estado de todos los motores y equipos controlados. Por ejemplo, en un reactor exotérmico, las condiciones a prueba de fallas especificarían abrir todas las válvulas de agua de refrigeración, cerrar todas las válvulas de alimentación, cerrar los motores de la bomba de alimentación, encender el motor del agitador y abrir todas las válvulas de ventilación.

    Los programas de control frecuentemente definen condiciones de seguridad contra fallas al inicio del programa. Estas condiciones se activan luego usando un comando IR A cuando las condiciones del proceso exceden el máximo o caen por debajo de los valores mínimos permitidos.

    Todos los procesos deben ser evaluados en busca de condiciones que puedan causar peligros y el procedimiento a prueba de fallas debe diseñarse para contrarrestar los efectos.

    Ejemplo\(\PageIndex{1}\): Reboiler

    Los rehervidores se utilizan en la industria para enfriar las corrientes de proceso creando vapor a partir del agua. Este proceso químico implica un cambio de fase de líquido (agua) a gas (vapor) y es importante monitorear los caudales, temperaturas y presiones. A continuación se muestra un diagrama de un calderín. Las variables controladas son F1, F2 y F3; éstas se controlan mediante la manipulación de las válvulas correspondientes. Las variables medidas son P1, T1 y T2. Considerando las condiciones de operación y las restricciones que se dan a continuación, escriba un programa de control lógico para el reboiler.

    ontrol Logic EX1.JPG archivo de video

    Las restricciones de funcionamiento son las siguientes:

    • T1 no debe superar los 350 ˚C
    • T2 debe estar entre 100 y 200 ˚C
    • P1 no puede superar los 150 psi

    Las condiciones normales de operación para las variables controladas son las siguientes:

    • F1 es de 20 gal/min
    • F2 es de 10 gal/min
    • F3 está cerrado

    Solución

    El primer paso es entender el sistema a controlar. Al observar el diagrama, se puede ver que F1 controla el caudal del agua de servicio, F2 controla el caudal de la corriente del proceso y F3 controla la ventilación a la atmósfera. T1 es la temperatura de la corriente de proceso que entra al calderín y T2 es la temperatura de la corriente de proceso que sale del calderín. P1 es la presión dentro del calderín.

    A continuación se muestra un posible programa de control para asegurar que se cumplan las restricciones operativas; puede haber otras soluciones para lograr el mismo objetivo:

    • SI T2 > 200 ˚C, ENTONCES F1 = 30 gal/min
    • SI T2< 100 ˚C, ENTONCES F1 = 10 gal/min
    • SI P1 > 150 psi, ENTONCES abre F3
    • SI T1 > 350 ˚C, ENTONCES F2 = 2 gal/min

    Para controlar la temperatura de salida de la corriente de proceso, se puede aumentar o disminuir el agua de servicio desde el caudal normal. Abrir el respiradero a la atmósfera reduce la presión si alcanza un valor inseguro. Si la temperatura de entrada es demasiado alta para la corriente del proceso, reducir el caudal de entrada asegurará que la temperatura de salida no sea demasiado alta para el resto del proceso. Nota: reducir el flujo del proceso puede afectar negativamente al resto de la planta.

    Ejemplo\(\PageIndex{2}\): Thermostat

    Los ingenieros químicos están cada vez más involucrados en aplicaciones biológicas. En muchos procesos biológicos, el control de temperatura puede ser muy crítico para el proceso. Tomemos, por ejemplo, una celda simulada en un chip de computadora. Digamos que es imperativo que el chip permanezca a 97 o F ± 1 o F, muy similar a la temperatura del cuerpo humano. Algunas de las reacciones y procesos en el chip no funcionarán a temperaturas fuera de este rango y pueden dañarse irreversiblemente a menos que se apague la fuente de alimentación al chip. La alimentación es encendida y apagada por un interruptor S1. Hay flujos de agua fría con una válvula automática V1 y agua caliente con una válvula automática V2 para fines de enfriamiento y calentamiento. El chip está unido a un termostato para detectar y controlar la temperatura, T. Escriba un esquema lógico controlado para mantener la temperatura del chip y evitar daños.

    Pista: Caliente o enfríe el chip antes de alcanzar los límites (aproximadamente medio grado)

    Solución

    Para controlar la temperatura, el chip debe calentarse o enfriarse dependiendo del entorno

    SI (T<96.5) ENTONCES V2 está abierto

    ELSE V2 está cerrado

    SI (T>97.5) ENTONCES V1 está abierto

    ELSE V1 está cerrado

    El control se ejecuta antes de que se alcance el límite de temperatura para permitir el tiempo de retraso en el flujo de agua de calentamiento o enfriamiento.

    Además, para asegurar que el chip no esté dañado, la alimentación necesita ser apagada si la temperatura va por encima de 98 o F o por debajo de 96 o F

    MIENTRAS (96<T<98) ENTONCES S1 está encendido

    ELSE S1 está apagado

    Ejemplo\(\PageIndex{3}\): Chemical Reactor

    Hay una reacción química exotérmica que ocurre en un CSTR (Reactor de Tanque Agitado Continuo) que involucra dos reactivos que se alimentan en una proporción 1:1. Todas las válvulas están establecidas para estar 50% abiertas normalmente. Escribir un programa de control que mantenga el nivel en la vasija CSTR a menos de 8 metros (el tanque mide 10 metros de altura) y la temperatura del reactor por debajo de los 450 grados Celsius.

    xample3.jpg

    Solución

    Mientras que L1 > 8 establece V3 en 100% abrir y cerrar V1 y V2

    Else establece V1 y V2 y V3 en 50% abierto

    Si T2 > 450 ENTONCES establece V5 y V4 en 100% abierto

    Else establece V5 y V4 en 50% abierto

    Esta solución da un ejemplo del uso de instrucciones AND para controlar múltiples válvulas con una sola condición.

    Ejemplo\(\PageIndex{4}\): Programming and Alarms

    Hay un proceso que se ejecuta por el P&ID que se muestra a continuación.

    xample4.jpg

    Con base en este proceso y los pasos que se enumeran a continuación, escriba un programa de control detallado para el proceso. Use comentarios (denotados con #) si es necesario para explicar la lógica detrás de los pasos.

    1. Mida Qw unidades de agua en un tanque
    2. Agregar Qc unidades de garbanzos secos
    3. Dejar remojar los garbanzos secos durante 20 horas sin mezclar
    4. Escurrir el agua de remojo para desperdiciar (supongamos que el filtro en el tanque no permitirá que los garbanzos enteros pasen por la bomba) 5) Agregar Qw unidades de agua dulce al tanque.
    5. Calentar el tanque a Tcook y mantener la presión a 4 atm. Tenga en cuenta que su tanque está clasificado para soportar presiones entre 0.5 y 6 atm, mientras que fuera de ese rango el tanque puede implosionar o explotar.
    6. Cocine los garbanzos por 20 minutos.
    7. Después de la cocción, apague el fuego y permita que el sistema vuelva a la temperatura ambiente (Tamb) y a la presión ambiente. ¡Cuidado con un fuerte vacío que se forma en el tanque a medida que el vapor de agua se condensa!
    8. Escurrir el agua de cocción para drenar
    9. Bomba en unidades Qs de la mezcla de especias tahini
    10. Licuar la mezcla durante 10 minutos para producir una pasta de hummus suave.
    11. Bombee el producto al empaque.
    12. Llene el tanque con agua limpia y agite para limpiar el reactor.
    13. Bomba de agua de lavado para drenar.

    Solución

    FUNCIÓN INICIALIZAR

    Desactivar M1, M2, M3, M4
    Cerrar V1, V2, V3, V5, V6, V7, SV1
    Establecer todos los temporizadores a cero
    Establecer todos los totalizadores en cero

    FUNCIÓN A PRUEBA DE FALLAS

    Apagar M1, M2, M3, M4
    Cerrar V1, V2, V3, V5, V7, SV1
    Abrir V6

    PROGRAMA DE FUNCIONES

    #Step 1 — Mida Qw une agua en un tanque

    Encienda M1
    Open V1
    MIENTRAS FC1tot < Qw:

    Ajustar V1 a FC1Set

    SI LC1 < LC1min:

    ALARMA

    Cerrar V1

    Apagar M1

    #FC1tot es la cantidad total de fluido que ha pasado por el medidor de flujo

    #FC1set es el punto de ajuste (cantidad que la válvula está abierta) para V1 que FC1 ya ha programado en él

    #LC1min es el nivel mínimo aceptable de fluido en S001

    #Step 2 — Agregar Qc unidades de garbanzos secos

    Abrir SV1
    MIENTRAS FC4 < Qc:

    Ajustar SV1 a FC4Set

    SI LC4 < LC4min:

    ALARMA

    Cerrar SV1

    #FC4set es el punto de ajuste para SV1 que FC4 ya ha programado en él

    #LC4min es el nivel mínimo aceptable de fluido en S003. LC4 no está en el P&ID, sin embargo, tiene sentido tener uno en él para que el nivel en el tanque pueda ser monitoreado adecuadamente

    #Step 3 — Dejar remojar los garbanzos secos durante 20 horas sin mezclar

    ESPERA 20 horas

    #Step 4 — Drene el agua de remojo para desperdiciar

    Abrir V7
    Encender M3
    MIENTRAS FC3tot < Qw:

    Ajustar V7 a FC3set2

    Apagar M3

    Cerrar V7

    #FC3tot es la cantidad total de fluido que ha pasado por el medidor de flujo

    #FC3set2 es el punto de ajuste para V7 que FC3 ya ha programado en él

    #Step 5 — Agregar Qw unidades de agua dulce al tanque

    Borrar FC1tot
    Encender M1
    Abrir V1
    MIENTRAS FC1tot < Qw:

    Ajustar V1 a FC1Set

    SI LC1 < LC1min:

    ALARMA

    Cerrar V1

    Apagar M1

    #Step 6 — Calentar el tanque a Tcook y mantener la presión a 4 atm.

    MIENTRAS TC1 < Tcook:

    Ajustar v5 a Tcook

    SI O (PC1 < 0.5, PC1 > 6):

    IR A FAILSAFE

    SI PC1 < PC1Set:

    Cerrar V6

    MÁS:

    Ajustar V6 a PC1set

    SI LC3 > LC3max:

    IR A FAILSAFE

    #PC1set es el ajuste en el que se debe establecer V6 para que el tanque tenga 4 atm de presión en él

    #LC3max es el nivel máximo al que se permite llegar el contenido del tanque. Cualquier cosa más alta indica un problema con uno de los caudalímetros.

    #Step 7 — Cocer los garbanzos por 20 minutos#

    ESPERA 20 minutos

    #Step 8 —Después de cocinar, apague el calor y permita que el sistema vuelva a la temperatura y la presión ambiente

    SI PC1 > PC1AMb:

    Ajustar V6 a PC1set2

    SI O (PC1 < 0.5, PC1 > 6):

    IR A FAILSAFE

    MIENTRAS TC1 > Tamb:

    Cerrar V5

    #PC1amb es la presión ambiente de 1 atm que el sistema necesita para llegar

    #PC1set2 es la segunda configuración en PC1 que afecta qué tan abierto es V6

    #Step 9 — Escurrir el agua de cocción para drenar

    Borrar FC3tot
    Abrir V7
    Encender M3
    MIENTRAS FC3tot < Qw:

    Ajustar V7 a FC3Set

    Apagar M3

    Cerrar V7

    #Step 10 — Bomba en unidades Qs de la mezcla de especias Tahiní

    Borrar FC2tot
    Encender M2
    Abierto V2
    MIENTRAS FC2tot < Qs:

    Ajustar V2 a FC2Set

    SI LC2 < LC2min:

    ALARMA

    Cerrar V2

    Desactivar M2

    #FC2tot es la cantidad total de fluido que ha pasado por el medidor de flujo

    #FC2set es el punto de ajuste para V2 que FC2 ya ha programado en él

    #Step 11 — Licuar la mezcla durante 10 minutos para producir una pasta de hummus suave

    Encender M4
    ESPERA 10 minutos
    Apague M4

    #Step 12 — Bombear el producto al embalaje

    Abrir V3
    Enciende M3
    MIENTRAS LC3 > 0:

    Ajustar V3 a FC3Set

    Apagar M3

    Cerrar V3

    #FC3set es el punto de ajuste para V3 que FC3 ya ha programado en él

    #Step 13 — Llenar el tanque con agua limpia y agitarlo para limpiar el reactor

    Encienda M1
    Open V1
    MIENTRAS LC3 < LC3max:

    Ajustar V1 a FC1Set

    SI LC1 < LC1min:

    ALARMA

    Cerrar V1
    Apagar M3
    Encender M4
    ESPERAR 10 minutos

    Desactivar M4

    #Step 14 — La bomba era agua para drenar

    Abrir V7
    Encender M3
    MIENTRAS LC3 > 0:

    Ajustar V7 a FC3set2

    Apagar M3

    Cerrar V7

    Ejemplo 4: Programación y Alarmas

    Ejemplo 5: Otro Reactor Químico (tomado de la conferencia del Prof. Barkel del 29/09)

    PEx5.jpg

    Redactar el programa de control

    Nomenclatura:
    x A = cantidad de entrada de A
    y B = cantidad de entrada de B

    Lecturas:
    L L = nivel bajo
    L H = nivel alto
    Lmax = nivel alto máximo
    Lmax = nivel máximo bajo

    Cosas a tener en cuenta:
    Asegúrese de usar las declaraciones If, Then.
    Las líneas en cursiva son comentarios utilizados para organizar el programa.

    PROGRAMA DE CONTROL

    Igual significa dentro de +/- 0.05% del valor que se mantiene igual.

    Inicializar Esto se usa para configurar todos los dispositivos de control en la posición en la que los desea.
    1. Apague todas las válvulas
    2. Apague todos los motores

    Fail Safe Esto se usa para cerrar el proceso en caso de que algo salga mal y deba ser terminado de inmediato.
    1. Apague todas las válvulas excepto V5, V7, V9, V6
    2. Apague todos los motores excepto M2

    Declaraciones Universales
    Si T1>Tmax, luego vaya a Fail Safe.

    1. Inicializar
    2. Abierto V6, V9, V1. [para que los sistemas no acumulen presión]
    3. Si L1> L L, luego encienda M1. [llenar con A]
    4. Si L2>= Lag, encienda M2. [Agitador de arranque]
    5. Si F1>= x A, apague V1, apague M1. [detener el flujo de A]
    6. Abierto V5, V7. [permitir el enfriamiento]
    7. Si P1>= P L, abra V2. [llenar con B]
    8. Si L4>=L4min, abra V8, encienda M4. [liberar producto AB]
    9. Si L2< Lag, entonces apague M2. [así que el motor no funciona en seco]
    10. Si L4< L 4 L, cierre V8. [detener el flujo de salida del producto AB]
    11. Si T1>< T H, abra V5. [temperatura fría del reactor]
    12. Si T2>< T H, abra V5. [corriente de producto superior fría]
    13. Si T1<< T L, luego cierre V5. [detener el enfriamiento del reactor]
    14. Si F2>=< y B, entonces apague V2. [detener el flujo de B]
    15. Cierre V8, M4, deje V6, V9 abierto. [apague el proceso pero permita que se desahogue]
    16. Bombee BABA.

    Ejemplo resuelto 6

    ontrol Logic Example.jpg archivo de video

    \[\ce{A + B -> AB} \nonumber \]

    La reacción es exotérmica
    A, B, AB son todos líquidos
    Se va al 100% de terminación
    X A = cantidad total de A usada
    Y B = cantidad total de B usada

    B se añade lentamente en una carga completa de A
    La temperatura se mantiene en T R Una vez
    terminada la reacción, el AB se enfría a T P
    Z C, se agrega una cantidad de disolvente C al AB para hacer el producto final

    Usando solo el equipo y la instrumentación mostrados, escribir la lógica de control para esta reacción BATCH. Usa If, Entonces lógica.

    Uso de subíndices:
    Ag para agitador
    L para fondo bajo del rango de control
    H para alto rango de control
    Min para mínimo - nivel más bajo permitido
    Max para máximo - nivel más alto permitido
    tot para totalizador Lógica

    de Control de Procesos

    • Igual significa dentro de +/- 0.05% del valor que se mantiene igual.

    1) Inicializar

    Cierre todas las válvulas
    Apague todos los motores
    Establecer todos FC tot = 0

    2) A prueba de fallas

    Apagar V1, V2, V3, V4
    Abierto V5
    Desactivar M1, M2
    ,
    M3 Apagar M4, Abrir V4
    Encienda M5 si LC4>lag, de lo contrario apague M5

    3) Si T1> T max, luego vaya a Fail Safe
    4) Si L2> L 2 min, luego encienda M2, abra V2
    5) Si L2< L 2 min, luego apague M2, apague V2
    6) Si FC 2 tot = X A, luego apague M2, apague V2
    7) Si L4>Lag, luego encienda M5
    8) Si L1> L 1 max, luego vaya a Fail Safe
    9) Si L1> L 1 min , luego encienda M1, abra V1
    10) Si L1< L 1 min, luego apague M1, apague V1
    11) Si FC 1 tot = Y B, luego apague M1, apague V1
    12) Si T1> T 1 H, luego abra V5
    13) Si T1< T 1 L, luego cierre V5
    14) Si L4> L 4 H, luego cierre V1, apague M1
    15) Si T1> T P , luego abra V5
    16) Si T1= T P, luego cierre V5
    17) Si L3> L 3 min, luego encienda M3, abra V3
    18) Si L3< L 3 min, luego apague M3, apague V3
    19) Si FC 3 tot = Z C, luego apague M3, apague V3
    20) Si LC4<lag, luego apague M5
    21) Abrir V4
    22) Encienda M4
    23) Si L4< L 4 min, luego apague M4, apague V4

    Referencias

    • Savitch, Walter. “Resolución de problemas con C++ El objeto de la programación”. Boston: Pearson Education, Inc. 2005.
    • Enciclopedia de filosofía de Stanford
    • Woolf, Peter. “Posibles notas útiles”, Notas para la lógica booleana, 22 de septiembre de 2005.
    • Woolf, Peter. “Proyecto 1 Solución de Muestra”, 6 de octubre de 2005.
    • Woolf, Peter. “Definiciones útiles”, Revisión de términos, 11 de octubre de 2005.

    Colaboradores y Atribuciones

    Autores: Stephanie Fraley, Michael Oom, Benjamin Terrien, John Zalewski
    Administradores: Ross Bredeweg, Jessica Morga, Ryan Sekol, Ryan Wong


    This page titled 5.2: Programas de Control Lógico - SI... ENTONCES... MIENTRAS is shared under a CC BY 3.0 license and was authored, remixed, and/or curated by Peter Woolf et al. via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.