Guía completa del proyecto — materiales, tablero de campo, esquemas y procedimiento paso a paso.
1. Introducción
El presente proyecto consiste en el diseño e implementación de un Sistema SCADA de Control y Monitoreo de Motor Trifásico de 1 HP utilizando un autómata programable LOGO! 8.4 de Siemens. El sistema permite supervisar y controlar el motor desde una interfaz web moderna, accesible desde cualquier dispositivo con navegador.
El proyecto integra un tablero de campo con pulsadores, selectores y pilotos industriales, un PLC LOGO! como unidad de control, y un frontend web desarrollado con HTML, CSS y JavaScript vanilla que se comunica en tiempo real mediante WebSocket con un backend en Node.js.
2. Materiales y Equipos
| Cant. | Descripción | Especificaciones |
| 1 | Motor trifásico de inducción | 1 HP, 220 V, 1750 RPM |
| 1 | PLC LOGO! 8.4 | Siemens, 8 entradas 220 VAC / 4 salidas relé, display integrado |
| 2 | Pulsadores momentáneos | 1 verde (MARCHA) + 1 rojo (PARO), 22 mm, 220 VAC |
| 2 | Selectores 2 posiciones | S1 (LOCAL/REMOTO), S2 (MANUAL/VARIADOR), 220 VAC |
| 3 | Pilotos LED azules | 220 VAC — indicadores de modo (OPERACIÓN, REMOTO, MANTENIMIENTO) |
| 1 | Piloto LED verde | 220 VAC — indicador MARCHA |
| 1 | Piloto LED amarillo | 220 VAC — indicador DETENIDO |
| 1 | Piloto LED rojo | 220 VAC — indicador FALLA |
| 1 | Variador de frecuencia | Monofásico 220 V / trifásico 220 V, 1 HP |
| 2 | Contactores | Bobina 220 V, 3 polos, 7 A |
| 1 | Relé térmico de sobrecarga | Rango 7 A |
| 1 | IG 3~ (termomagnético tripolar) | Protección de potencia del motor |
| 1 | IE 2~ (termomagnético bipolar) | Protección del circuito de mando (arranque directo) |
| 1 | IG 2~ (termomagnético bipolar) | Protección del PLC |
| 1 | ID 2~ (diferencial bipolar) | Protección diferencial del PLC |
| 1 | Gabinete metálico | Con riel DIN |
| 1 | Cable de conexión Ethernet | Para comunicación LOGO! – router/Internet |
| — | Broker MQTT en la nube | HiveMQ Cloud (gratuito), TLS puerto 8883 |
| — | Backend Node.js en la nube | Render (Docker), puente MQTT → WebSocket |
| — | Frontend estático | Cloudflare Pages, HTML/CSS/JS vanilla |
3. Tablero de Campo — Esquema de Cableado
El tablero de campo está organizado en un gabinete metálico con riel DIN. A continuación se describe la distribución y conexionado de los componentes:
3.1 Distribución del Tablero
┌──────────────────────────────────────────────────┐
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ IG 3~ │ │ IE 2~ │ │ IG 2~ │ │ ID 2~ │ │
│ │Potencia│ │ Mando │ │ PLC │ │ Difer. │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ LOGO! │ │CONTAC 1│ │CONTAC 2│ │ RELÉ │ │
│ │ 8.4 │ │ (VDF) │ │(DIRECTO)│ │TÉRM 7A │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │S1 LOC/ │ │S2 MAN/ │ │ VARIAD │ │
│ │ REM │ │ VAR │ │ DOR │ │
│ └────────┘ └────────┘ └────────┘ │
│ PUERTA DEL GABINETE │
│ ┌──────┐ ┌──────┐ ┌──────────────────┐ │
│ │MARCHA│ │ PARO │ │ PILOTOS │ │
│ │ (V) │ │ (R) │ │ V A R · 3 AZULES│ │
│ └──────┘ └──────┘ └──────────────────┘ │
└──────────────────────────────────────────────────┘
3.2 Protecciones Eléctricas
Según los criterios del proyecto, el gabinete incluye las siguientes protecciones:
- IG 3~ (termomagnético tripolar): protege la línea de potencia del motor (contactores + variador + motor).
- IE 2~ (termomagnético bipolar): protege el circuito de mando del arranque directo (pulsadores, contactor manual).
- IG 2~ (termomagnético bipolar): protege la alimentación del PLC LOGO! 8.4.
- ID 2~ (diferencial bipolar): protección diferencial para el PLC LOGO! 8.4.
- Relé térmico 7 A: protección contra sobrecarga del motor.
3.3 Conexiones del LOGO! 8.4 (220 VAC)
El LOGO! 8.4 utilizado es la versión de 220 VAC: tanto la alimentación del PLC como las entradas y salidas trabajan directamente a 220 VCA, sin necesidad de fuentes conmutadas auxiliares.
| Señal | Bloque LOGO! | Conexión |
| L1/N | Alimentación | 220 VAC — a través de IG 2~ + ID 2~ |
| I1 | Entrada 1 | Selector S1 — posición LOCAL |
| I2 | Entrada 2 | Selector S1 — posición REMOTO |
| I3 | Entrada 3 | Selector S2 — posición MANUAL |
| I4 | Entrada 4 | Selector S2 — posición VARIADOR |
| I5 | Entrada 5 | Pulsador MARCHA (contacto NA) — señal al LOGO! |
| I6 | Entrada 6 | Pulsador PARO (contacto NC) — señal al LOGO! |
| I7 | Entrada 7 | Relé térmico — contacto de Falla / sobrecarga |
| I8 | Entrada 8 | Disponible / reserva |
| Q1 | Salida 1 | Piloto amarillo DETENIDO (STOP) — 220 VAC |
| Q2 | Salida 2 | Bobina contactor del variador de frecuencia (VDF) |
| Q3 | Salida 3 | Bobina contactor de arranque directo (manual) |
| Q4 | Salida 4 | Reserva |
3.4 Diagrama Eléctrico Simplificado
FASE R ──┬───[IG 3~]───┬───[CONTACTOR 1]───[VARIADOR]───[MOTOR 1 HP]
│ │ │
│ │ [RELÉ TÉRMICO 7A]──[I7 LOGO!]
│ │
│ └───[CONTACTOR 2]───[MOTOR 1 HP] (Arranque directo manual)
│
├───[IE 2~]───[PULSADORES MARCHA/PARO]───[CONTACTOR 2] (Lógica cableada manual)
│
└───[IG 2~]───[ID 2~]───[LOGO! 8.4 L/N]──220VAC──┐
│
[S1 LOCAL]──────────────────────────► I1 │
[S1 REMOTO]─────────────────────────► I2 │
[S2 MANUAL]─────────────────────────► I3 │
[S2 VARIADOR]───────────────────────► I4 │
[MARCHA pulsador]───────────────────► I5 │
[PARO pulsador]─────────────────────► I6 │
│
[LOGO! Q1]───[PILOTO AMARILLO DETENIDO] │
[LOGO! Q2]───[CONTACTOR 1 (VDF)] │
[LOGO! Q3]───[CONTACTOR 2 (DIRECTO)] │
│
NEUTRO ─────────────────────────────────────────────────────┘
4. Programación del LOGO! 8.4
El programa del LOGO! se realiza en FUP (diagrama de funciones) y combina la lógica cableada del modo manual con los comandos recibidos por MQTT para el modo automático.
4.1 Lógica Manual (Arranque Directo)
El modo manual opera por lógica cableada independiente: los pulsadores físicos de MARCHA y PARO gobiernan directamente el contactor principal a través de un enclavamiento por cable. El LOGO! solo monitorea estas señales (I5, I6) para enviarlas a la nube, pero no interviene en el control.
4.2 Lógica Automática (VDF vía SCADA)
En modo automático (VARIADOR), el LOGO! recibe comandos MQTT desde la nube y controla el variador de frecuencia. Los comandos se escriben en marcas (M) del LOGO! mediante la tabla de transferencia de datos con "Con permiso":
- MARCHAcmd → marca M1: pulso de arranque enviado desde el SCADA
- PAROcmd → marca M2: pulso de paro enviado desde el SCADA
- Enclavamiento FUP:
M1 & I4 (VARIADOR) → SET Q2 (VDF) / M2 → RESET Q2
El programa en FUP implementa la seguridad: el VDF solo se energiza si el selector S2 está en VARIADOR (I4), evitando arranques accidentales desde la web cuando el tablero está en modo manual.
4.3 Protecciones
- Falla Térmica (I7): Desactiva todas las salidas y bloquea el arranque hasta reset manual, tanto en modo manual como automático.
- STOP (Q1): Indicador de motor detenido; se activa cuando Q2 está en 0.
5. Arquitectura del Sistema SCADA
┌─────────────┐ MQTT (TLS) ┌──────────────┐ MQTT (TLS) ┌──────────────┐
│ LOGO! 8.4 │ ──────────────► │ HiveMQ Cloud │ ◄──────────── │ BACKEND │
│ · publica │ pub: logo84/ │ (Broker MQTT)│ suscribe: │ Node.js │
│ I1..I8 │ planta1/pub │ │ logo84/ │ · Express │
│ Q1..Q4 │ │ │ planta1/pub │ · MQTT │
│ · recibe │ ◄────────────── │ │ ────────────► │ · WebSocket │
│ comandos │ sub: logo84/ │ │ publica: │ · JWT Auth │
│ │ planta1/sub │ │ logo84/ │ │
└─────────────┘ └──────────────┘ planta1/sub └──────┬───────┘
│ WSS
▼
┌──────────────┐
│ FRONTEND │
│ (HMI Web) │
│ · HTML/CSS │
│ · JS Vanilla│
│ · Cloudflare │
└──────────────┘
El LOGO! 8.4 se conecta directamente a Internet por MQTT TLS (puerto 8883) publicando el estado de sus entradas/salidas en logo84/planta1/pub y suscribiéndose a comandos en logo84/planta1/sub. El formato del JSON es anidado: {"state":{"reported":{"I1":{"value":[1]},...}}}.
El backend en Node.js (alojado en Render como servicio Docker) se suscribe al mismo broker MQTT, mantiene el estado en memoria y lo reenvía al frontend vía WebSocket. Cuando el usuario pulsa MARCHA o PARO en el HMI, el backend publica en el topic de suscripción del LOGO! el comando {"state":{"MARCHAcmd":{"value":[1]}}}.
El frontend (Cloudflare Pages) es un sitio estático que se conecta al backend por WebSocket seguro (WSS). No requiere servidor propio ni configuración de red — solo un navegador.
Ventaja clave: el LOGO! solo hace conexiones salientes por MQTT, por lo que no es necesario abrir puertos ni exponer el PLC a Internet directamente.
6. Procedimiento de Construcción
6.1 Montaje del Tablero de Campo
- Instalar el riel DIN en el gabinete metálico.
- Montar en el riel: IG 3~, IE 2~, IG 2~, ID 2~, LOGO! 8.4, contactor 1 (VDF), contactor 2 (directo), relé térmico 7 A, variador de frecuencia.
- En la puerta del gabinete, realizar los cortes para pulsadores (MARCHA/PARO), selectores (S1/S2) y pilotos (verde, amarillo, rojo, 3 azules).
- Cablear las protecciones: IG 3~ a la línea de potencia, IE 2~ al circuito de mando manual, IG 2~ + ID 2~ a la alimentación del LOGO! (220 VAC).
- Cablear las entradas del LOGO! según la tabla 3.3: todos los selectores y pulsadores conmutan 220 VAC directamente a las entradas del PLC.
- Cablear las salidas del LOGO! a los pilotos LED (Q1 → amarillo) y a las bobinas de los contactores (Q2 → contactor VDF, Q3 → contactor directo).
- Cablear el circuito de arranque directo manual: pulsador MARCHA → contactor 2 (con enclavamiento por cable) → motor, pasando por el relé térmico 7 A.
- Conectar el variador de frecuencia a la salida del contactor 1. La salida del VDF va al motor.
- Conectar el contacto auxiliar del relé térmico (7 A) a la entrada I7 del LOGO!.
- Cablear los 3 pilotos azules de 220 VAC a las salidas o contactos auxiliares según el modo activo (OPERACIÓN, REMOTO, MANTENIMIENTO).
- Conectar el cable Ethernet al LOGO! para comunicación MQTT con la nube.
6.2 Configuración del Broker MQTT (HiveMQ Cloud)
- Crear un cluster gratuito en HiveMQ Cloud.
- En Access Management, crear dos usuarios: uno para el LOGO! y otro para el backend.
- Anotar el host (ej.
xxxx.s1.eu.hivemq.cloud) y puerto TLS 8883.
6.3 Programación del LOGO! (LOGO! Soft Comfort)
- Descargar e instalar LOGO! Soft Comfort desde el portal de Siemens.
- Crear un nuevo proyecto: seleccionar LOGO! 8.4 (6ED1052-1MD00-0BA8).
- Configurar la red Ethernet: IP fija, gateway = router, DNS = 8.8.8.8.
- Configurar la conexión MQTT: host del broker, puerto 8883 TLS, usuario/contraseña del LOGO!, Client ID único.
- Configurar la tabla de transferencia de datos con formato Array:
- Señales a publicar (con frecuencia 2s + con cambio): I1…I8, Q1…Q4.
- Puntos de comando (con permiso): MARCHAcmd → marca M1, PAROcmd → marca M2.
- Implementar el programa en FUP:
M1 & I4 → SET Q2, M2 → RESET Q2, más enclavamientos de seguridad.
- Transferir el programa al LOGO! vía Ethernet y ponerlo en RUN.
6.4 Configuración del Backend (Node.js en Render)
- Subir el repositorio a GitHub. En Render: New → Web Service, apuntar a la carpeta
backend/ con runtime Docker.
- Configurar variables de entorno:
MQTT_URL, MQTT_USERNAME, MQTT_PASSWORD (usuario del backend en HiveMQ), JWT_SECRET, ADMIN_USER, ADMIN_PASSWORD.
- Health check path:
/api/health. Desplegar y copiar la URL (ej. https://logo-scada.onrender.com).
- Verificar logs: el backend debe connectarse al broker MQTT y quedar a la espera de conexiones WebSocket.
6.5 Configuración del Frontend (Cloudflare Pages)
- Abrir el archivo
js/config.js y ajustar BACKEND_URL con la URL del backend en Render.
- Revisar el mapeo del sinóptico en
SCADA_MAP para verificar que las señales coincidan con el cableado real.
- Colocar los assets (imágenes de pilotos, selectores, pulsadores y motor) en la carpeta
assets/.
- En Cloudflare Pages, crear un proyecto apuntando a la carpeta
frontend/ (sin build; es estático).
- Abrir la URL de Cloudflare Pages, iniciar sesión con usuario/clave y verificar que el HMI refleje el estado real del tablero.
6.6 Pruebas y Puesta en Marcha
- Energizar el tablero y verificar que el LOGO! enciende y está en RUN.
- Verificar que el LOGO! publica MQTT (el backend muestra piloto "LOGO" en verde).
- Probar cada entrada: accionar S1, S2, verificar que el HMI refleje los cambios.
- Probar comando MARCHA desde el HMI en modo AUTOMÁTICO (S2=VARIADOR): el VDF debe energizarse y arrancar el motor con rampa suave.
- Probar comando PARO desde el HMI: el motor debe detenerse.
- Probar modo MANUAL (S2=MANUAL): usar pulsadores físicos del tablero para arranque directo; el HMI solo debe reflejar el estado sin enviar comandos.
- Probar la protección térmica: simular sobrecarga → el motor se detiene y enciende piloto de FALLA.
7. Modos de Operación
El sistema tiene dos modos de operación seleccionables mediante el conmutador S2:
| Modo | S2 | Señal | Tipo de arranque | Control |
| MANUAL | MANUAL | I3 | Arranque Directo | Pulsadores físicos del tablero (lógica cableada). El SCADA solo monitorea. |
| AUTOMÁTICO | VARIADOR | I4 | VDF (Variador de Frecuencia) | Comandos desde el SCADA web vía MQTT → LOGO! → VDF. Arranque con rampa suave. |
El selector S1 (LOCAL/REMOTO) está disponible para futuras expansiones donde se diferencie el origen del comando (local vs remoto). Actualmente ambos modos operan en LOCAL.
Seguridad: el programa FUP del LOGO! bloquea el comando MARCHA si S2 no está en VARIADOR (I4), evitando arranques accidentales desde la web cuando el tablero está en modo manual.
8. Mantenimiento y Recomendaciones
- Revisar periódicamente las conexiones del tablero y apretar bornes si es necesario.
- Verificar el ajuste del relé térmico según la corriente nominal del motor (aprox. 2 A para 1 HP a 220 V).
- Mantener el firmware del LOGO! actualizado.
- Realizar backup del programa del LOGO! y del código del backend/frontend.
- En caso de falla, revisar primero el estado de los pilotos en el HMI y luego verificar físicamente el componente correspondiente.
- Si el variador muestra error, consultar el manual del fabricante para decodificar el código de falla.
9. Conclusiones
El sistema SCADA implementado permite supervisar y controlar un motor trifásico de 1 HP mediante un PLC LOGO! 8.4 con conexión MQTT directa a la nube. La arquitectura LOGO! → HiveMQ Cloud → Backend Render → Frontend Cloudflare demuestra que es posible implementar un SCADA funcional sin exponer el PLC a Internet, usando únicamente tecnologías open source y servicios cloud gratuitos.
El modo MANUAL (arranque directo por lógica cableada) garantiza la operación independiente del tablero incluso sin conexión a Internet, mientras que el modo AUTOMÁTICO (VDF vía SCADA) permite el control remoto con arranque suave desde cualquier dispositivo con navegador.
El uso de MQTT como protocolo de comunicación elimina la necesidad de hardware intermediario (Raspberry Pi, PC local) y simplifica la arquitectura: el LOGO! publica y suscribe directamente al broker en la nube. El backend solo actúa como puente seguro entre MQTT y WebSocket, añadiendo autenticación JWT.
Este proyecto sienta las bases para futuras expansiones: incorporación de más sensores (temperatura, vibración), alarmas vía email/WhatsApp, históricos de funcionamiento, y control predictivo basado en datos.