graph TD subgraph PLC ["PLC (Servidor de Datos)"] DB1["DB_Motor
Start_Cmd: BOOL
Actual_Speed: INT"] end subgraph HMI ["HMI (Cliente de Datos)"] Screen["Pantalla de Control"] Btn["Botón 'Arrancar'"] NumField["Campo 'Velocidad'"] end Btn --"Tag Binding (Escritura)
HMI_Tag_Start --> DB_Motor.Start_Cmd"--> DB1 NumField --"Tag Binding (Lectura)
HMI_Tag_Speed <-- DB_Motor.Actual_Speed"--> DB1 Screen --> Btn Screen --> NumField style PLC fill:#2c3e50,color:white style HMI fill:#9b59b6,color:white style DB1 fill:#f1c40f,color:#333

1. ¿Qué es una HMI y cuál es su rol?

Una HMI (Human-Machine Interface) es la ventana gráfica a través de la cual un operario interactúa con una máquina o proceso. Es crucial que un técnico de UF1794 entienda que la HMI no es el cerebro del control; el cerebro es el PLC. La HMI es un cliente en la red, cuya única función es solicitar datos al PLC (servidor) para mostrarlos, y enviar comandos (como pulsar un botón) al PLC para que este actúe.

La HMI no ejecuta lógica de control. Simplemente visualiza el estado de las variables del PLC y permite al operario modificarlas de forma segura y controlada.



2. El Concepto de "Tag" (Variable)

El corazón de la configuración de cualquier HMI es el mapeo de tags. Un "tag" (o variable) es un nombre simbólico que creamos en el proyecto de la HMI (ej. `Velocidad_Motor_Cinta`) y que está enlazado a una dirección de memoria específica en el PLC (ej. `DB10.DBW4` o `N7:0` en Rockwell).

El software de la HMI se encarga de la comunicación en segundo plano. El ingeniero no necesita programar peticiones Modbus o S7; simplemente arrastra un campo numérico a la pantalla y, en sus propiedades, lo enlaza al tag `Velocidad_Motor_Cinta`. La HMI sabrá automáticamente cómo y cuándo pedirle ese dato al PLC.



3. Elementos Básicos de una Pantalla HMI

Toda HMI se construye combinando unos pocos elementos gráficos fundamentales:

  • Botones (Buttons): Son elementos de escritura. Al pulsarlos, escriben un valor (normalmente un `1` o `true`) en un tag booleano del PLC. Por ejemplo, un botón "START" escribe un `1` en la variable `PLC_Tag_Start_Motor`.
  • Indicadores (Lamps/Indicators): Son elementos de lectura. Leen un tag booleano del PLC y cambian de color o apariencia según su estado. Por ejemplo, una luz "Motor en Marcha" se pone verde cuando el tag `PLC_Tag_Motor_Running` es `true`.
  • Campos de E/S (I/O Fields): Son campos numéricos o de texto para leer y/o escribir valores. Un campo de solo lectura puede mostrar la temperatura actual (leyendo un tag de tipo REAL del PLC), mientras que un campo de E/S permite al operario introducir una nueva consigna de velocidad (escribiendo en un tag de tipo INT del PLC).


4. El Ciclo de Adquisición (Refresh Rate)

La HMI no está conectada en tiempo real al bus del PLC. Funciona mediante polling: interroga al PLC a intervalos regulares para actualizar los valores de los tags en pantalla. Este intervalo se conoce como Ciclo de Adquisición o "Refresh Rate".

Es una decisión de ingeniería crítica. Si configuras todos los tags para que se refresquen cada 100 ms, la pantalla será muy fluida, pero generarás un tráfico de red enorme y una carga de CPU considerable en el PLC. Una buena práctica es:

  • Tags críticos (estado de la máquina, alarmas) con un ciclo rápido (ej. 250 ms).
  • Tags de monitorización (temperaturas, presiones) con un ciclo más lento (ej. 1-2 segundos).
  • Tags de configuración que casi nunca cambian con un ciclo muy lento o bajo demanda (ej. 10 segundos).

Una mala configuración del ciclo de adquisición es una de las causas más comunes de redes lentas y HMIs que "se quedan colgadas".

EL CONCEPTO DE "TAG BINDING" (ENLACE DE VARIABLES) PLC (Servidor) Bloque de Datos (DB10) DB10.DBX0.0 (Start_Cmd) DB10.DBW2 (Actual_Speed) HMI (Cliente) Tabla de Tags HMI Tag: "Boton_Start" Tag: "Velocidad_Display" ENLACE
Figura 1: El enlace de tags. El ingeniero de HMI no trabaja con direcciones de memoria, sino con nombres simbólicos (tags). En el software de la HMI, enlaza el tag "Boton_Start" con la dirección `DB10.DBX0.0` del PLC. A partir de ese momento, la HMI se encarga de la comunicación para leer o escribir en esa dirección de memoria específica.
Fuente: Elaboración Propia. Licencia: CC BY-SA 4.0.

📝 Evaluación Técnica: Configuración de HMI

1. ¿Cuál es la función principal de una HMI en una arquitectura de control industrial?

2. En el desarrollo de una pantalla HMI, ¿qué es un "tag" o "variable"?

3. Un operario se queja de que el valor de temperatura que se muestra en la HMI solo se actualiza cada 5 segundos, aunque el proceso real es mucho más rápido. ¿Cuál es la causa más probable de esta lentitud?

🤖 Ejercicio Práctico 6: Simulador de Cliente HMI

Objetivo: Entender el ciclo de polling de una HMI y cómo lee y escribe datos en un PLC.

Copia el siguiente *prompt* y pégalo en un modelo de IA (como ChatGPT, Gemini o Claude).

Actúa como el firmware de una HMI industrial. Escribe un script en Python que simule ser un cliente HMI que se conecta a un servidor Modbus TCP (puedes usar el servidor del ejercicio 1794.5.2). El script debe: 1. Usar la librería `pyModbusTCP`. 2. Conectarse a un servidor Modbus TCP en `localhost`. 3. Entrar en un bucle infinito que simule el refresco de pantalla. 4. En cada ciclo del bucle (con una pausa de 1 segundo): a. Leer el valor de un Holding Register (ej. dirección 0) y mostrarlo en consola como "Temperatura Actual: [valor]". b. Simular la pulsación de un botón escribiendo un valor alterno (True/False) en una Coil (ej. dirección 0) y mostrar "Comando START/STOP enviado". Comenta el código explicando cómo este bucle de polling es la base del funcionamiento de cualquier HMI, y por qué un `time.sleep()` demasiado corto podría saturar la red.