Punteros Fantasmas

Por qué tu HMI hace lo que quiere (y cómo evitarlo)

El misterio de la máquina que "se vuelve loca"

Imagina la escena: realizas un cambio menor en el PLC de una línea que lleva años funcionando. Solo has añadido un par de variables en un Bloque de Datos (DB) para una nueva estadística de producción. Descargas, el PLC sigue en RUN, todo parece OK... pero de repente, el operario te llama: "Antonio, la pantalla marca fallo de motor pero la cinta sigue girando". O peor, pulsas un botón de "Manual" y se activa la electroválvula de limpieza.

No es un poltergeist. No es que el panel táctil haya llegado al fin de su vida útil. Has caído en la trampa de los punteros desalineados o, como nos gusta llamarlos en OneDoor, Punteros Fantasma.

El Origen del Caos: Direccionamiento Absoluto y Offsets

El problema surge cuando la HMI no busca la variable por su nombre (Simbólico), sino por su "dirección física" o matrícula de memoria (Absoluto). Esto es muy común en proyectos migrados de Step7 o cuando se trabaja con el Device Proxy en TIA Portal.

El Efecto Dominó en la Memoria

En un DB estándar (no optimizado), cada variable tiene un Offset. El Offset es el número de byte donde comienza la variable.

Ejemplo Práctico: El Desastre del Byte 2.0

Supongamos que tienes un DB con esta estructura original:

  1. Motor_Marcha (Bool) -> Offset 0.0
  2. Motor_Fallo (Bool) -> Offset 0.1
  3. Velocidad_Real (Int) -> Offset 2.0

Tu HMI tiene un campo numérico configurado para leer lo que haya en el DB10.DBW2 (Offset 2.0). Todo funciona bien.

Ahora, decides añadir una nueva variable Temp_Actual (Real) justo después de Motor_Fallo. La nueva estructura queda así:

  1. Motor_Marcha (Bool) -> Offset 0.0
  2. Motor_Fallo (Bool) -> Offset 0.1
  3. Temp_Actual (int) -> Offset 2.0 (¡Nueva!)
  4. Velocidad_Real (Int) -> Offset 6.0 (¡SE HA DESPLAZADO!)

    ¿Qué ocurre en la pantalla? La HMI sigue preguntando por el Offset 2.0, no se le han transferido los cambios. Pero ahora, en el Offset 2.0 ya no está la velocidad; hay "basura" de memoria o bits desalineados. Resultado: La pantalla muestra valores absurdos y los valores que se muestran no corresponden con ningún valor coherente del DB.

    Escenarios Críticos en OneDoor

    1. El Puente Frágil: Step7 + Proxy en TIA Portal

    Este es el escenario de mayor riesgo. Tienes el PLC en Simatic Manager y la pantalla en TIA Portal conectada mediante un Device Proxy.

    • El Error: Modificas el DB en Step7, pero olvidas Actualizar el dispositivo proxy en TIA Portal.
    • La Consecuencia: La HMI queda "ciega". Sigue usando el mapa de memoria antiguo mientras el PLC ya está usando el nuevo.

    2. TIA Portal + Direccionamiento Absoluto

    Este es el escenario también presenta riesgo. Tienes el PLC en TIA Portal con una DB con direccionamiento absoluto y la pantalla, también TIA Portal, conectada mediante un direccionamiento absoluto. Es un caso difícil de encontrar, pero es posible verlo en definiciones de variables de disparo de Alarmas.

    • El Error: Modificas el DB en TIA Portal, pero olvidas transferir los cambios a la HMI. 
    • La Consecuencia: La HMI sigue usando el mapa de memoria antiguo mientras el PLC ya está usando el nuevo. Pude llegar a confundirte que tras la compilación del PLC el proyecto de la pantalla mostrará el mismo direccionamiento que la variable declarada en el DB del programa del PLC. 

    3. Bloques de Datos Optimizado vs. Estándar

    En TIA Portal, Siemens introdujo el Acceso Optimizado a Bloques.

    • En un DB Estándar, el programador (y la HMI) dependen del Offset fijo. Cualquier inserción de datos rompe la comunicación.
    • En un DB Optimizado, las variables no tienen un offset visible. El sistema las gestiona internamente y la HMI se comunica por Nombre Simbólico. Si añades una variable, el sistema reajusta internamente sin romper el enlace con la HMI. Es la solución definitiva a los punteros fantasma.

    Tutorial de Supervivencia: El Protocolo de Carga OneDoor

    Para dormir tranquilo tras una puesta en marcha, sigue este "orden sagrado":

    1. Actualización del Mapa: Si usas un Proxy, haz clic derecho y selecciona "Actualizar dispositivo proxy" apuntando al proyecto de Step7 actualizado.
    2. Compilación Total: No te fíes de la compilación rápida. Selecciona la HMI -> Botón derecho -> Compilar -> Software (recompilar todo). Esto regenera todos los enlaces de comunicación.
    3. Carga Sincronizada: - Primero, carga el PLC.
      • Inmediatamente después, carga la HMI. Nunca dejes una HMI vieja hablando con un PLC que tiene un mapa de memoria nuevo.
    4. Verificación de Seguridad: Prueba siempre una señal crítica que no hayas tocado. Si esa señal se lee mal, nada en la pantalla es fiable.

    Conclusión: El software no se gasta, la memoria se desplaza

    Como automatistas, nuestra responsabilidad es asegurar que la interfaz hombre-máquina sea un reflejo fiel de la lógica. Un error de sincronización no es solo una molestia, es un riesgo de seguridad.

    ¡Únete a la comunidad OneDoor!

    ¿Te ha pasado alguna vez que una alarma "fantasma" te ha tenido horas buscando un fallo eléctrico que no existía? ¡Cuéntanos tu experiencia en los comentarios!

    Estamos trabajando en un nuevo curso de TIA Portal donde aclararemos esta y muchas otras dudas sobre la arquitectura de memoria y las mejores prácticas de programación.

    👉 Suscríbete a nuestra Newsletter para ser el primero en enterarte del lanzamiento

    Publicar un comentario

    0Comentarios

    Publicar un comentario (0)