PLC Solution Library · Simulador de control de compuertas PLC
Convierte filas de tu base de datos en movimientos de compuertas y mantén un estado conocido si cae la red
Tu base de datos ya sabe qué compuerta tiene que abrirse. En este simulador, dos ESP32 PLC 42 convierten esas filas en el movimiento de 18 compuertas neumáticas a través de una isla de válvulas de ejemplo, y 9 pilotos de señalización muestran el estado a pie de máquina.
Escribe una orden, corta la red o lanza una ráfaga de filas. Mira qué hacen tus PLC y qué devuelven a tu tabla. Ves cada paso.
Elige un escenario
INSERT INTO gate_commands (gate_id, command) VALUES ('G01', 'OPEN');
PLC A · compuertas G01 a G09
PLC B · compuertas G10 a G18
Haz clic en una compuerta para seleccionarla. Con doble clic envías su orden directamente.
Escribe una orden
INSERT INTO gate_commands (gate_id, command) VALUES ('G01', 'OPEN');
Controles de la simulación
Estos tres ajustes son las decisiones de diseño que tomas en tu propio proyecto, y las explicamos más abajo. Aquí, el recorrido simulado de cada compuerta dura 4 s y el watchdog de tu PLC es de 5 s.
Tabla gate_commands
| id | gate_id | command | created_at | status | updated_by |
|---|
PENDING: la ha escrito tu cliente de base de datos. SENT: tu PLC ha leído la fila. DONE: tu PLC confirma que la compuerta ha llegado a su posición. SKIPPED: tu PLC no ha ejecutado la fila y explica por qué.
¿Qué pasa con las compuertas si se cae el enlace con la base de datos?
Las compuertas pasan al estado que tu programa de PLC define para cuando se pierde el enlace. Tu PLC no puede saber por sí solo que la base de datos ya no responde, así que le pones un watchdog. Si tu PLC pasa un tiempo fijado sin contacto con tu tabla (5 s en este simulador), lleva sus compuertas al estado por defecto que hayas elegido, por ejemplo mantenerlas todas o cerrarlas todas, y enciende un piloto de alarma.
Mientras dura el corte, tu base de datos sigue aceptando filas nuevas. Se quedan en PENDING, así que no pierdes ninguna orden. Tu PLC guarda sus propias confirmaciones (DONE, SKIPPED) en una cola. Cuando vuelve el enlace, escribe esas confirmaciones en tu tabla y vuelve a pedir todas las filas sin terminar antes de aceptar órdenes nuevas.
Este estado por defecto es un valor de proceso que fijas en tu programa de PLC. La protección de las personas cerca de compuertas en movimiento (paro de emergencia, válvula de descarga de presión, resguardos) necesita un circuito de seguridad certificado, separado de esta lógica.
Lanza el escenario Caída de red y prueba los dos estados por defecto. Después compara lo que ves en tu tabla.
La arquitectura, en resumen
Tu base de datos guarda cada orden como una fila con un estado. Tu PLC recibe las filas nuevas por la red. Tú decides cómo: tu PLC pide filas nuevas a intervalos fijos, por ejemplo a través de una pequeña API delante de tu tabla, o un pequeño servicio lee tu tabla y reenvía las órdenes por MQTT o Modbus TCP. Tu PLC activa la salida de la válvula de esa compuerta y escribe el resultado en la misma fila, así que tu tabla se convierte en el registro de cada movimiento.
Una instalación real
Caso real
Un cliente controla 18 compuertas neumáticas y 9 pilotos de señalización con 2 ESP32 PLC 42. Las órdenes de abrir y cerrar llegan por la red desde una base de datos MySQL. El propio equipo del cliente programó y puso en marcha el sistema con la documentación de Industrial Shields y los cursos de MQTT y Modbus de esta web. El sistema funciona sin problemas.
Las decisiones de diseño que tomas
1. Estado por defecto si se pierde el enlace
Decide, para cada compuerta, qué estado necesita tu proceso cuando tu PLC deja de tener noticias de tu base de datos: mantener la última posición, cerrar o abrir. Usa un watchdog: si tu PLC pasa un tiempo fijado sin contacto, va a ese estado y enciende un piloto de alarma. Las filas escritas durante el corte se quedan en PENDING en tu tabla, así que no se pierde nada.
Este estado por defecto es un valor de proceso que se fija en el programa del PLC. La protección de las personas cerca de compuertas en movimiento (paro de emergencia, válvula de descarga de presión, resguardos) necesita un circuito de seguridad certificado, separado de esta lógica.
Perder la red y perder la alimentación son casos distintos. Una electroválvula monoestable con retorno por muelle vuelve a su posición de reposo cuando la bobina se queda sin tensión. Una electroválvula biestable conserva la última posición conmutada cuando las dos bobinas están sin tensión, así que el cilindro completa esa carrera o se queda en ella. Para parar un cilindro a mitad de carrera necesitas una válvula 5/3 de centro cerrado. El tipo de válvula lo eliges pensando en el corte de alimentación; el corte de red lo resuelves en tu programa de PLC.
2. Polling o push
Con polling, el intervalo que elijas fija el peor retardo entre una fila nueva y el movimiento, y también la carga sobre tu base de datos. Con push por MQTT el retardo es menor, pero necesitas un broker y un plan para los mensajes enviados mientras tu PLC estaba desconectado. En los dos casos, tras una reconexión tu PLC debería volver a pedir todas las filas sin terminar. La referencia es tu tabla, no el último mensaje.
3. Confirmación de la orden
Necesitas al menos tres estados: escrita, recibida y hecha. En el simulador ves DONE cuando termina el recorrido de la compuerta. En tu sistema, confirma la posición con un final de carrera o un sensor de posición en el cilindro. Un temporizador solo te demuestra que la válvula ha recibido la señal. Añade un estado de tiempo agotado, por ejemplo FAULT, para la compuerta que no llega a su posición a tiempo.
4. Dos órdenes para la misma compuerta
Tú decides si gana la fila más reciente o si las filas se ejecutan en orden. Usa el id de fila de tu base de datos para decidir el orden, no el reloj del cliente que la escribió. Escribe SKIPPED con el motivo en cada fila que no ejecutes, para que tu tabla siempre diga la verdad. Consulta con quien diseña la parte mecánica si un cilindro puede invertir el sentido en pleno movimiento. Guarda el último id de fila que ha procesado cada uno de tus PLC, para que una fila leída dos veces nunca mueva dos veces una compuerta.
Aprende los protocolos
Estos tutoriales y ejemplos cubren la parte de comunicaciones que necesitas para este patrón con el ESP32 PLC.
- Órdenes remotas por MQTT con topic de respuesta (PLC Solution Library)
- Cómo montar una conexión MQTT sobre TLS: guía para ESP32 PLC
- Modbus TCP con PLC basados en Arduino y ESP32
- Modbus RTU con PLC basados en Arduino y ESP32
- Maestro Modbus RTU por RS-485 (PLC Solution Library)
- RS-485 con PLC basados en Arduino y ESP32
- Cómo usar SQLite con ESP32 PLC
- Librería MSSQL para PLC industriales Arduino y ESP32
Más ejemplos: PLC Solution Library · todos los simuladores.
ESP32 PLC 42: las especificaciones que importan aquí
| Salidas | 16: 10 digitales optoaisladas y 6 analógicas/digitales/PWM (0-10 V, 12 bits), de 5 a 24 Vdc. Sin salidas de relé. |
|---|---|
| Entradas | 26: 14 digitales optoaisladas y 12 analógicas/digitales (0-10 V, 11 bits), de 5 a 24 Vdc |
| Red | Ethernet 10/100 Mbit (RJ45), Wi-Fi 2,4 GHz, Bluetooth LE |
| Serie | RS-485 half duplex, RS-232 y TTL, I2C, SPI |
| Alimentación | De 12 a 24 Vdc con protección contra inversión de polaridad |
| Montaje | Carril DIN TS35, IP20, dentro de un armario |
| Programación | Arduino IDE con el paquete de placas ESP32 de Industrial Shields, por USB o Ethernet |
| Ampliación | Hasta 127 módulos por I2C. Una placa de comunicaciones opcional: 4G, LoRa o CAN |
Cuenta las bobinas de tus válvulas y tus pilotos antes de elegir el cableado. Por ejemplo: con cableado directo o relés de interfaz, cada bobina necesita una salida del PLC, así que una electroválvula monoestable necesita una salida y una biestable, dos. Con una interfaz de bus en una isla de válvulas, el PLC escribe el estado de las bobinas por la red, así que comprueba que la isla admite un protocolo que tu PLC pueda usar, por ejemplo Modbus TCP. Después revisa los valores eléctricos en la hoja de datos de la familia ESP32 PLC. Especificaciones completas: ESP32 PLC 42 · familia ESP32 PLC.
Preguntas frecuentes
¿Qué pasa con las salidas del PLC si se pierde la red?
Las salidas hacen lo que les dice tu programa. Tu PLC no sabe por sí solo que tu base de datos ya no responde. Le añades un watchdog: si pasa un tiempo fijado sin contacto, tu PLC lleva todas las compuertas a un estado por defecto que defines tú (mantener, cerrar o abrir) y enciende un piloto de alarma. Cuando vuelve el enlace, vuelve a pedir todas las filas sin terminar antes de aceptar órdenes nuevas. Este estado por defecto es un valor de proceso que se fija en el programa del PLC. La protección de las personas cerca de compuertas en movimiento (paro de emergencia, válvula de descarga de presión, resguardos) necesita un circuito de seguridad certificado, separado de esta lógica.
¿Qué significan los estados PENDING, SENT, DONE y SKIPPED?
PENDING significa que la fila está en tu tabla y ningún PLC la ha leído todavía. SENT significa que tu PLC ha leído la fila. DONE significa que tu PLC confirma que la compuerta ha llegado a su posición. SKIPPED significa que tu PLC no ha ejecutado la fila, y la fila explica el motivo, por ejemplo que hay una fila más reciente para la misma compuerta. Con estos cuatro estados, tu tabla muestra qué ha pasado de verdad con cada orden.
¿Qué cambia el intervalo de consulta?
El intervalo de consulta es cada cuánto pide tu PLC filas nuevas. Fija el peor retardo entre una fila nueva y el inicio del movimiento, y el número de consultas que recibe tu base de datos. En el simulador puedes elegir 1, 2 o 5 s y comparar. Si necesitas un retardo menor, un servicio puede enviar tus órdenes al PLC en modo push, por ejemplo por MQTT.
¿Cómo se conectan las bobinas de las válvulas al PLC?
Depende del cableado que elijas. Con cableado directo o relés de interfaz, cada bobina necesita una salida del PLC. Con una interfaz de bus en una isla de válvulas (un ejemplo de cableado), tu PLC escribe el estado de las bobinas por la red, así que comprueba que tu isla admite un protocolo que tu PLC pueda usar, por ejemplo Modbus TCP. Si cableas directo, compara la tensión y la corriente de tus bobinas con los valores de las salidas en la hoja de datos.
¿Qué distribución de compuertas y válvulas usa el simulador?
Pruebas una distribución de ejemplo. El PLC A gobierna las compuertas G01 a G09 y el PLC B, G10 a G18, a través de una isla de válvulas de ejemplo con una válvula por compuerta. Cada válvula es una electroválvula monoestable con retorno por muelle, así que cuando tu PLC pone la salida en ON, la compuerta se abre. Los 9 pilotos muestran funciones de ejemplo que puedes adaptar a tu propio cuadro, como red OK, alarma de enlace y filas pendientes. En el simulador, el recorrido de la compuerta dura 4 s y el watchdog es de 5 s. La instalación real usa 18 compuertas neumáticas, 9 pilotos de señalización y 2 ESP32 PLC 42, pero no publicamos su reparto, sus válvulas ni su cableado.
¿Tengo que saber programar para montar esto?
El programa del PLC se escribe en C++ con el Arduino IDE. Para la parte de comunicaciones (MQTT, Modbus TCP, Modbus RTU) tienes tutoriales y ejemplos públicos, enlazados más arriba. En la instalación real de esta página, el propio equipo del cliente programó y puso en marcha el sistema con esa documentación y esos cursos. Si lo prefieres, un integrador puede escribirte el programa a partir del diseño de tu tabla.
Quiero esta arquitectura
Cuéntanos cómo son tus compuertas, tus señales y tu base de datos. Nuestro equipo te responde con una propuesta de arquitectura para tu caso. Los ajustes que has usado en el simulador se envían con la solicitud.