Glosario de Automatización • Maquina de estados en programacion PLC

¿Qué es una maquina de estados en programacion PLC?

Ingeniería Merobix • • 8 min de lectura

El equipo secuencial que debe moverse por fases distintas, como una unidad que reposa, purga, arranca, opera y para, es una pesadilla de controlar con una maranha de renglones de interbloqueo improvisados que pelean todos por las mismas salidas. La respuesta disciplinada es una maquina de estados: una sola variable que sostiene en que fase esta el equipo actualmente, y un bloque de logica que dice exactamente que hacer en cada fase y cuando pasar a la siguiente. Este patron convierte un embrollo de renglones condicionales en una secuencia limpia y legible que una persona puede seguir y que quien prueba puede verificar un estado a la vez.

Volver al glosario

Maquina de estados en programacion PLC en una línea: Una maquina de estados en programacion PLC es una forma estructurada de controlar una secuencia usando una sola variable de estado, a menudo un numero entero de paso, y un bloque de logica con una rama por estado, ya sea un renglon por estado en escalera o un caso por estado en texto estructurado. Cada estado define que hace el equipo mientras esta activo y las condiciones que lo mueven al siguiente estado. Reemplaza los renglones de interbloqueo dispersos e improvisados por una secuencia ordenada, legible y verificable.

Una variable de estado, una rama por estado

El nucleo del patron es una sola variable que responde la pregunta de donde esta la secuencia ahora mismo. Suele ser un entero, a veces llamado numero de paso o numero de estado, y en cualquier momento sostiene exactamente un valor que representa la fase actual. Como toda la secuencia se resume en un numero, un operador o un ingeniero puede saber de un vistazo que hace la maquina, y la logica nunca tiene que inferir la fase de una combinacion de banderas dispersas. La variable de estado es la unica fuente de verdad para la secuencia.

Alrededor de esa variable hay un bloque de logica organizado por estado. En texto estructurado esto es de forma natural una sentencia case que selecciona el codigo del estado actual; en escalera es un conjunto de renglones cada uno condicionado por una comparacion de igualdad sobre el numero de estado, de modo que solo los renglones del estado activo hacen algo. Cualquiera que sea la forma, el efecto es el mismo: exactamente una seccion de codigo esta viva a la vez, y es la seccion que pertenece a la fase actual. Todo lo que la maquina debe hacer en esa fase vive en ese unico lugar, que es lo que hace legible la secuencia.

Este es un contraste deliberado con la alternativa improvisada, donde decenas de renglones independientes cargan cada uno su propio conjunto de condiciones y todos influyen calladamente en las mismas salidas. En ese estilo no hay un solo lugar que diga en que fase esta la maquina, asi que el comportamiento emerge de la interaccion de muchos renglones y se vuelve muy dificil de razonar o cambiar con seguridad. La disciplina de la maquina de estados reune toda esa intencion dispersa en una variable y un bloque organizado, que es por lo que escala a secuencias complejas que la logica improvisada no puede manejar de forma limpia.

Estados, acciones de entrada y salida, y transiciones

Cada estado tiene tres cosas que conviene distinguir. Primero, estan las acciones realizadas mientras el estado esta activo, el comportamiento sostenido de esa fase, como mantener abierta una valvula de purga durante todo un estado de purga. Segundo, estan las acciones de entrada, hechas una vez al entrar al estado, como arrancar un temporizador o abrir una valvula al inicio de la fase. Tercero, estan las acciones de salida, hechas una vez al dejar el estado. Separar las acciones de entrada y salida de una sola vez de las acciones continuas dentro del estado mantiene limpia la logica y evita que los comandos se reemitan innecesariamente en cada scan.

La otra mitad de cada estado son sus transiciones: las condiciones que deciden cuando salir y a donde ir despues. Una transicion cambia la variable de estado del valor actual a uno nuevo, y el resto de la logica sigue de forma automatica porque una rama distinta se vuelve activa en el siguiente scan. Un estado puede tener varias transiciones posibles, por ejemplo una ruta normal hacia adelante cuando la fase se completa con exito y una ruta anormal hacia un estado de paro si aparece una falla. Cada transicion esta guardada por una condicion escrita con claridad, para que las razones por las que la secuencia se mueve sean explicitas y no implicitas.

Lo que esta estructura le compra es verificabilidad. Como solo un estado esta activo a la vez y sus acciones y transiciones estan reunidas en un lugar, usted puede probar la secuencia estado por estado: forzar la maquina a un estado dado, confirmar que hace lo correcto, satisfacer una condicion de transicion y confirmar que se mueve al siguiente estado correcto. No hay interaccion oculta con la que tropezar, porque la maquina solo puede estar en un estado y las transiciones que salen de el estan enumeradas. Esto es gran parte de por que los revisores de seguridad y de proceso favorecen fuertemente las maquinas de estados para cualquier cosa secuencial.

Una secuencia de arranque de pozo y la vista remota

El arranque de un pozo o un compresor se mapea de forma natural sobre una maquina de estados. Los estados podrian ser REPOSO mientras la unidad esta en descanso, PURGA mientras se despeja el gas antes del encendido o el arranque, ARRANQUE mientras se levanta la unidad y se prueban sus permisivos, OPERACION durante la operacion estable normal, y PARO mientras se baja de forma ordenada. La variable de estado sostiene uno de estos a la vez, y cada estado tiene sus propias acciones y sus propias transiciones: REPOSO pasa a PURGA con un comando de arranque y permisivos cumplidos, PURGA pasa a ARRANQUE cuando el temporizador de purga o la condicion de purga completa se satisface, y asi.

Las rutas anormales son tanto parte del diseno como el flujo normal. Desde casi cualquier estado, una condicion de disparo transiciona la maquina directamente a PARO, que luego realiza las acciones de estado seguro y a la larga regresa a REPOSO. Como la ruta de paro se escribe como un conjunto explicito de transiciones en lugar de renglones de disparo dispersos atornillados a cada fase, es facil confirmar que cada estado de operacion tiene una salida definida y segura cuando algo sale mal. La secuencia tiene una forma que usted puede trazar, incluidas todas las maneras en que puede interrumpirse.

Esta estructura es un regalo para el SCADA y las operaciones remotas, porque la unica variable de estado es exactamente lo que un operador remoto mas quiere ver. Un tablero que muestra el estado actual (REPOSO, PURGA, ARRANQUE, OPERACION o PARO) le dice a un supervisor a cientos de kilometros exactamente que hace la unidad de un vistazo, sin descifrar un revoltijo de banderas individuales. Registrar la secuencia de estados en el tiempo da una historia limpia de cada arranque y cada paro, y las secuencias atascadas se vuelven obvias porque el estado simplemente no avanza. La disciplina que hace legible la logica para un ingeniero tambien la hace legible para un sistema de monitoreo remoto.

Preguntas frecuentes

¿Por que usar una maquina de estados en lugar de renglones de interbloqueo ordinarios?

Porque el equipo secuencial controlado por renglones improvisados y dispersos se vuelve pronto imposible de razonar, ya que ningun lugar unico le dice en que fase esta la maquina y muchos renglones influyen calladamente en las mismas salidas. Una maquina de estados reune todo eso en una variable de estado y un bloque organizado con una rama por fase, de modo que solo una seccion de logica esta activa a la vez. Eso hace la secuencia legible, modificable y verificable estado por estado.

¿Cual es la diferencia entre acciones de entrada y acciones dentro del estado?

Las acciones de entrada corren una vez en el momento en que se entra a un estado, como arrancar un temporizador o abrir una valvula para iniciar la fase, mientras que las acciones dentro del estado corren de forma continua todo el tiempo que el estado esta activo, como mantener esa valvula abierta. Las acciones de salida corren una vez al dejar el estado. Separar las acciones de entrada y salida de una sola vez de las acciones continuas dentro del estado evita que los comandos se reemitan innecesariamente en cada scan y hace mas limpia la logica.

¿Como se pasa entre estados en una maquina de estados de PLC?

Cada estado tiene una o mas transiciones, que son condiciones que, al ser verdaderas, cambian la variable de estado a un valor nuevo. En el siguiente scan una rama distinta de la logica se vuelve activa porque esta condicionada por el nuevo numero de estado, de modo que la maquina sigue de forma automatica. Un estado puede tener multiples transiciones, como una ruta normal hacia adelante cuando la fase se completa y una ruta a un estado de paro si aparece una falla.

Más en PLC, RTU, HMI y DCS
Controlador de programación de riego  •  Programación de sondeo (round-robin)  •  Arreglar un PLC en modo de falla  •  DCS vs PLC  •  PROFINET vs EtherNet/IP para una máquina  •  Todo en PLC, RTU, HMI y DCS →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →