Crear una demostración de supervisión SCADA con FUXA
Última actualización:
En este tutorial crearás una pantalla SCADA con niveles simulados de tres depósitos. Mosquitto recibe los mensajes MQTT y FUXA muestra los valores y su tendencia. También configurarás una alarma de nivel bajo.
Esta demostración utiliza solo software. No conecta ningún PLC, no acciona bombas ni valida el control de equipos físicos. Completa primero la guía de instalación de FUXA de esta categoría.
Requisitos
- Un reComputer RK3576 con FUXA ejecutándose en el contenedor
fuxa-rk3576de la guía de instalación. - Acceso SSH al RK3576 y un navegador en la misma red de confianza.
- Mosquitto Broker y
mosquitto_pub/mosquitto_suben el RK3576. Los comandos siguientes los instalan si es necesario.
La guía de instalación utiliza la red host. Comprueba que el contenedor esté en marcha y utilice ese modo para acceder al Broker en 127.0.0.1:1883:
sudo docker ps --filter name=fuxa-rk3576
sudo docker inspect -f '{{.HostConfig.NetworkMode}}' fuxa-rk3576Si el segundo comando no muestra host, ajusta la red del contenedor y la dirección del Broker según tu configuración antes de continuar.
Paso 1: Preparar el Broker MQTT local
En el RK3576, ejecuta:
sudo apt update
sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable --now mosquitto
systemctl is-active mosquitto
sudo ss -ltnp | grep ':1883'systemctl is-active debe mostrar active. Para esta demostración, mantén el Broker limitado a la interfaz local; no expongas un servicio MQTT sin autenticación a Internet. Si ya utilizas un Broker autenticado, usa sus parámetros de conexión.
Paso 2: Publicar y comprobar los datos de ejemplo
Un único tema MQTT transporta los tres niveles. Publica un mensaje JSON retenido para que FUXA pueda leerlo aunque se suscriba después:
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m '{"tank1":7500,"tank2":1500,"tank3":3000}'
mosquitto_sub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -C 1 -vEl suscriptor debe imprimir enseguida el tema y el JSON. Mantén exactamente los nombres tank1, tank2 y tank3 en los pasos siguientes.
Paso 3: Conectar FUXA a MQTT
Abre http://<RK3576_IP>:1881/editor. Haz clic en el engranaje superior izquierdo, entra en Connections y crea una conexión MQTT:
| Campo | Valor |
|---|---|
| Name | RK3576 MQTT |
| Type | MQTTclient |
| Address (mqtt://[server]:[port]) | mqtt://127.0.0.1:1883 |
| Enable | Activado |
Deja Polling sin configurar. Haz clic en OK y confirma que aparece un indicador verde. Solo hace falta una conexión: los tres niveles son campos de un mismo tema.
Haz clic en el icono de enlace de la conexión para abrir la página de etiquetas y suscripciones. En Browser Topics on broker, escribe rk3576/fuxa/demo/tanks y pulsa el icono de búsqueda. Selecciona el tema; si Topic path está vacío, escribe la misma ruta. Elige json, no raw, y pulsa Subscribe. Comprueba que aparecen los campos numéricos tank1, tank2 y tank3.
Paso 4: Crear la pantalla de supervisión
Vuelve al editor, abre MainView en Views y añade un título como RK3576 Tank Monitor.
- Arrastra el control numérico (icono ## de Controls) al lienzo. Vincúlalo a la etiqueta numérica
tank1, no al tema JSON completo. Añade otros dos controles paratank2ytank3. Deben mostrar7500,1500y3000. - Arrastra Chart (icono de gráfica de líneas en Controls). Abre Chart settings → Chart to show → New Chart. En la configuración, pulsa + y crea la gráfica
Tank Levels. - En el menú ⋮ de la nueva gráfica, selecciona Add Line y vincula la línea a
tank1. Si quieres mostrar los tres niveles, añade otras líneas paratank2ytank3. SeleccionaTank Levelsen Chart to show. - Guarda con el icono de disco y utiliza el botón de reproducción/vista previa para verificar los tres números y la gráfica.
Usa los nombres que muestre el selector de etiquetas de FUXA; la ruta puede incluir la conexión y el tema MQTT.
Paso 5: Observar los cambios de valor
En otra terminal del RK3576, ejecuta este simulador en primer plano. Para detenerlo, pulsa Ctrl+C:
tank1=7500
tank2=1500
tank3=3000
while true; do
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m "{\"tank1\":$tank1,\"tank2\":$tank2,\"tank3\":$tank3}"
tank1=$((tank1 - 100))
tank2=$((tank2 + 60))
tank3=$((tank3 + 40))
if [ "$tank1" -le 0 ]; then
tank1=7500
tank2=1500
tank3=3000
fi
sleep 2
doneComprueba que los valores se actualizan y la gráfica recibe puntos. Detén el simulador antes de probar la alarma; de lo contrario, el siguiente mensaje sobrescribirá el valor de prueba.
Paso 6: Añadir y probar una alarma de nivel bajo
En el editor, haz clic en el engranaje superior izquierdo, abre Alarms y añade una alarma:
| Campo | Valor |
|---|---|
| Name | Tank 1 low level |
| Tag | Etiqueta numérica tank1 de RK3576 MQTT |
| Low → Enabled | Activado |
| Low → Check interval (seconds) | 1 |
| Low → Min / Max | 0 / 1000 |
| Low → Time in Min-Max range (seconds) | 1 |
| Low → Text | Tank 1 low level |
Pulsa OK y guarda el proyecto. El intervalo y el tiempo dentro del rango se expresan en segundos: introduce 1, no 1000. No hacen falta condiciones High ni High High.
Con el simulador detenido, publica un valor bajo:
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m '{"tank1":800,"tank2":1500,"tank3":3000}'Abre http://<RK3576_IP>:1881/. Comprueba que el primer número es 800, la campana superior derecha muestra una insignia roja y el panel Alarms contiene Tank 1 low level con prioridad Low y estado Active. Haz clic en la campana si el panel está cerrado.
Después de la prueba, restablece un valor normal:
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m '{"tank1":7500,"tank2":1500,"tank3":3000}'Resultado y limitaciones
La demostración termina cuando la suscripción MQTT funciona, los números y la gráfica cambian y la alarma aparece con tank1 en 800. El publicador es un bucle de prueba en primer plano, no una fuente de datos de producción. Un mensaje MQTT retenido conserva el último valor tras detener el bucle; un número estático no demuestra que sigan llegando datos.
En producción, usa una fuente de datos autenticada, restringe el acceso a FUXA y al Broker, y verifica alarmas y acciones de control con el equipo real. No conectes este ejemplo directamente a maquinaria crítica para la seguridad.