Cómo monitorear el estado de comunicación del PLC en SIMATIC WinCC V7.3

Para monitorear el estado de comunicación con un PLC en SIMATIC WinCC V7.3, se debe evaluar el estado o la calidad de una variable de controlador externa. Esto se puede lograr mediante cuatro métodos según el nivel de detalle requerido: utilizando valores sustitutos en las propiedades del tag, aplicando un Diálogo Dinámico (Dynamic Dialog) en un campo E/S, o leyendo el Quality Code y el Tag State mediante scripts en VBScript o ANSI-C.

Tabla de contenido

Requisitos previos

Antes de configurar cualquier método de diagnóstico de comunicación en WinCC V7.3, asegúrese de cumplir con las siguientes condiciones en el proyecto:

  • Tener instalado SIMATIC WinCC V7.3.
  • Contar con un proyecto de WinCC en ejecución con un enlace de comunicación configurado (por ejemplo, SIMATIC S7 Protocol Suite o Industrial Ethernet).
  • Contar con al menos una variable externa del PLC integrada en la tabla de tags de WinCC (por ejemplo, el byte de marcas MB0 o la variable PLC_Tag_1).
  • Disponer de una pantalla en Graphics Designer con objetos gráficos adecuados para representación visual (como campos E/S o indicadores de texto).

Método 1: Evaluación del valor sustituto de una variable PLC

Este enfoque representa la alternativa más sencilla cuando solo se requiere detectar una falla de conexión sin utilizar scripts adicionales.

Procedimiento

  1. En el WinCC Explorer, abra la gestión de variables (Tag Management) y seleccione la variable del PLC configurada (por ejemplo, MB0).
  2. Abra las propiedades del tag y navegue hasta la sección de límites y valores sustitutos:

    • Marque la casilla Utilizar valor sustituto en errores de conexión (Use substitute value on connection errors).
    • Asigne un valor fuera del rango operativo habitual en la propiedad Valor sustituto (Substitute value), por ejemplo: -1.
      3. Abra la pantalla deseada en Graphics Designer e inserte un campo E/S (IO Field).
      4. Enlace la variable del PLC al valor de proceso del campo E/S.

Resultado esperado: Durante la operación normal, el campo E/S mostrará el valor real enviado por el PLC. En caso de una falla en el enlace de red o apagar el controlador, WinCC reemplazará el valor del proceso por -1.

Verificación: Desconecte físicamente el cable de red del PLC o detenga el controlador y confirme que el valor en pantalla cambia inmediatamente a -1.

Limitación: Si el proceso real puede entregar válidamente el valor asignado como sustituto (por ejemplo, -1), no será posible distinguir entre una medición válida y un error de comunicación.

Método 2: Evaluación mediante Diálogo Dinámico en WinCC Graphics Designer

El Diálogo Dinámico (Dynamic Dialog) analiza directamente la validez del canal de comunicación y la calidad del tag en tiempo de ejecución.

Procedimiento

  1. Abra una pantalla en Graphics Designer e inserte un objeto gráfico (por ejemplo, un campo E/S o una lista de texto).
  2. En la ventana de propiedades del objeto, vaya a Propiedades → Entrada/Salida → Valor de proceso.
  3. Haga clic derecho sobre el icono de dinamización de la propiedad y seleccione Diálogo dinámico (Dynamic Dialog).
  4. Configure los siguientes parámetros dentro de la interfaz del diálogo:

    • Tipo de datos: Seleccione Directo (Direct).
    • Expresión/Fórmula: Asigne la variable del PLC que desea supervisar (PLC_Tag_1).
    • Active la opción Evaluar código de calidad (Evaluate Quality Code).
      5. Defina los valores de salida correspondientes para cada rango de validez asignado por WinCC (por ejemplo, Good, Bad, Uncertain).

Resultado esperado: El objeto actualizará su estado visual o texto de salida dinámicamente en función de la validez entregada por el driver de comunicación.

Método 3: Lectura del Quality Code mediante VBScript

Este método permite consultar mediante código en VBScript el estado detallado de la calidad de un tag (Quality Code), retornando un valor numérico normalizado.

Procedimiento

  1. En Graphics Designer, inserte un objeto capaz de dinamizarse mediante script (por ejemplo, el valor de proceso de un campo E/S).
  2. Asigne un desencadenador (Trigger) por ciclo de tiempo o por cambio de variable.
  3. Configure la siguiente función VBScript:

VB.Net

Function OutputValue_Trigger(ByVal Item)
    Dim objTag
    Set objTag = HMIRuntime.Tags("PLC_Tag_1")
    objTag.Read

    ' Retorna el Quality Code numérico del tag
    OutputValue_Trigger = objTag.QualityCode
End Function

Resultado esperado: El script retorna el código de calidad del tag. Un valor igual a 192 (0xC0) indica que el tag tiene una calidad excelente (Good), mientras que un valor menor a 64 (0x40) señala una falla de comunicación (Bad).

Método 4: Lectura del Quality Code y Tag State mediante ANSI-C

Las funciones nativas de la API de WinCC C-Script permiten diagnosticar de manera precisa tanto el estado del enlace (Tag State) como la calidad del dato (Quality Code).

Opción A: Lectura aislada del Tag State con GetTagWordState

Utilice esta función cuando únicamente requiera evaluar el código de estado del tag en el Administrador de Datos (Data Manager).

C

#include "apdefap.h"

double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
    #define TAG_NAME "PLC_Tag_1"

    DWORD dwState = 0;

    // Lee el estado del tag desde WinCC Data Manager
    GetTagWordState(TAG_NAME, &dwState);

    // Retorna dwState (0 = OK; valores > 0 indican errores de enlace o servidor)
    return (double)dwState;
}

Opción B: Lectura combinada de Tag State y Quality Code con GetTagWordStateQC

Esta alternativa extrae simultáneamente el estado de la conexión y el código de calidad del proceso.

C

#include "apdefap.h"

double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
    #define TAG_NAME "PLC_Tag_1"

    DWORD dwState = 0;
    DWORD dwQualityCode = 0;

    // Obtiene el estado del tag y el Quality Code
    GetTagWordStateQC(TAG_NAME, &dwState, &dwQualityCode);

    // Para retornar el Quality Code (0xC0 = OK):
    return (double)dwQualityCode;

    // Nota: Para retornar el estado del tag en su lugar, use: return (double)dwState;
}

Verificación

El procedimiento de diagnóstico de comunicación se considera verificado correctamente cuando:

  • Con el PLC conectado y en línea, la función C-Script o el Diálogo Dinámico retornan un Quality Code equivalente a 192 (0xC0 - Good) y un Tag State igual a 0.
  • Al desconectar la interfaz de comunicación del PLC:

    • El método de valor sustituto muestra inmediatamente -1 en el campo E/S.
    • VBScript y C-Script retornan un Quality Code inferior a 64 (por ejemplo, 0 - Bad / Not Connected).
    • La variable dwState en C-Script cambia a un valor diferente de cero (indicando falla del servidor de tags o interrupción del canal).

Limitaciones y precauciones operativas

  • Frecuencia de lectura por script: Evite configurar ciclos de ejecución de VBScript o C-Script con intervalos inferiores a 250 ms en pantallas con múltiples objetos, ya que esto incrementa innecesariamente la carga de CPU en las estaciones de trabajo de WinCC.
  • Diferencia entre Quality Code y Tag State: El Tag State analiza el estado técnico del enlace en la gestión de variables de WinCC (Data Manager), mientras que el Quality Code refleja la validez del valor leído del proceso según los estándares OPC/WinCC.
  • Afectación de la lógica del proceso: Al utilizar valores sustitutos (Método 1), asegúrese de que ningún script ni lógica interna de WinCC interprete el valor sustituto (por ejemplo, -1) como un dato de medición real en cálculos o registros de archivo.

Preguntas frecuentes

¿Cuál es la diferencia entre supervisar el Tag State y supervisar el Quality Code?

El Tag State (obtenido mediante GetTagWordState) indica si la variable está disponible dentro del sistema de administración de datos de WinCC y si el driver de comunicación se encuentra enlazado. El Quality Code (obtenido mediante GetTagWordStateQC o VBScript) refleja directamente la calidad del valor leído, identificando escenarios donde el tag está conectado pero el dato entregado por el PLC no es válido.

¿Qué valor entrega el Quality Code cuando la comunicación con el PLC se interrumpe completamente?

En WinCC V7.3, una interrupción total de comunicación entrega típicamente un Quality Code igual a 0 (0x00 - Bad, non-specific) o 24 (0x18 - Bad, comm failure). Una comunicación correcta y plenamente operativa entrega el valor 192 (0xC0 - Good).

¿Se puede aplicar este monitoreo a cualquier tipo de driver de canal en WinCC?

Sí, las funciones GetTagWordState, GetTagWordStateQC y la propiedad QualityCode de VBScript son independientes del protocolo de comunicación utilizado (por ejemplo, SIMATIC S7 Suite, Modbus TCP o OPC Client).

Referencias técnicas

  • Siemens Support FAQ (ID 382120): How do you implement tag status monitoring or connection status monitoring in WinCC?
  • Siemens Manual (ID 102754925): WinCC V7.3: Working with WinCC
  • Siemens Scripting Manual (ID 102777678): WinCC V7.3 Scripting: VBS, ANSI-C, VBA

Artículos relacionados

Etiquetas relacionadas

Code: C163

6 respuestas