Lo que la IEC 61869-9 realmente exige y dónde está la frontera entre "aún sincronizado" y "ya no sincronizado"

Este artículo utiliza la terminología IEC para las fuentes del flujo SV:

  • SAMU — Stand-Alone Merging Unit (dispositivo independiente que produce un flujo SV a partir de entradas analógicas convencionales);
  • NCIT — Non-Conventional Instrument Transformer (transformador de corriente o tensión con salida digital propia conforme a IEC 61869-9).

Por brevedad, escribimos SAMU/NCIT para referirnos a la fuente genérica de un flujo SV.

Por función de protección compleja entendemos una función que cumple simultáneamente dos condiciones:

  1. el protection IED recibe varios flujos SV independientes provenientes de diferentes SAMUs/NCITs (por ejemplo, un SAMU por separado para corrientes y un NCIT por separado para tensiones; o corrientes de ramas de SAMUs distintos);
  2. el algoritmo de protección compara vectorialmente las señales entre estos flujos — es decir, el resultado depende de su alineamiento mutuo en tiempo y ángulo.

A esta categoría pertenecen, en particular, las protecciones de distancia, diferenciales, direccionales, etc. Si, en cambio, todas las señales necesarias (corrientes y tensiones) vienen del mismo SAMU/NCIT, el estado de su sincronización externa no afecta al funcionamiento de la protección — la Sección 6.904.6 de la IEC 61869-9 lo afirma de forma directa:

Original: Regardless of whether the merging unit is synchronized to an external time source or not, all sampled values from the same merging unit shall be synchronized to each other.

Traducción: Independientemente de si el SAMU/NCIT está sincronizado a una fuente de tiempo externa o no, todas las muestras del mismo SAMU/NCIT deben estar sincronizadas entre sí. (IEC 61869-9, §6.904.6)

Es decir, el problema que aborda este artículo es relevante precisamente en la arquitectura multiflujo — cuando la protección reconstruye su panorama a partir de muestras producidas por diferentes dispositivos físicos SAMU/NCIT.

Planteamiento del problema

Dos preguntas relacionadas surgen con frecuencia entre proyectistas y comisionadores de protección. Las resumimos aquí:

  • Escenario 1. Todos los flujos SV portaban inicialmente la marca de sincronización global (SmpSynch=2). En cierto momento, un SAMU/NCIT continúa publicando SmpSynch=2 mientras que otro pasa a SmpSynch=1. ¿Pueden estos SVs considerarse mutuamente sincronizados durante algún tiempo?
  • Escenario 2. A un protection IED que ejecuta una protección compleja le llegan dos flujos SV: corrientes — con SmpSynch=2 (global), tensiones — con SmpSynch=1 (local). ¿Debe bloquearse la función correspondiente, o las medidas se siguen combinando correctamente durante algún tiempo?

La respuesta a ambas preguntas se desprende directamente de la Sección 6.904 "Synchronization" de la IEC 61869-9. A continuación analizamos sus disposiciones y las contrastamos con malentendidos comunes.

Cómo describe el estándar el SmpSynch

El atributo SmpSynch está presente en cada ASDU del mensaje SV e indica al suscriptor a qué fuente de tiempo están atadas las muestras. La IEC 61869-9, §6.904.4, define cuatro clases de valores:

SmpSynch Fuente de tiempo Qué significa para el suscriptor
0 No sincronizado Las muestras no están atadas ni a relojes globales ni locales con la precisión requerida. La señal de sincronización nunca se recibió, el holdover expiró o se perdió la referencia.
1 Reloj local (fuente desconocida) El SAMU/NCIT está sincronizado a un reloj local, pero el identificador de ese reloj no se transmite. Por ejemplo, en sincronización por 1PPS — simplemente no hay campo para el ID de la fuente.
2 Reloj global (UTC/TAI traceable) El SAMU/NCIT está sincronizado a una fuente que es a su vez trazable a referencias nacionales de tiempo (GPS/GLONASS, servidores NTP del NIST, etc.). Todos los flujos con SmpSynch=2 son mutuamente sincronizados.
5–254 Reloj local con ID único Un reloj local específico. Los flujos con el mismo ID son mutuamente sincronizados; con IDs distintos no hay garantía.

Las prescripciones clave del §6.904.4 en su forma original (inglés) y traducidas:

Original: While sampled values are synchronized to a global area clock to the degree required to meet the measuring accuracy class phase displacement limit, the value of the "SmpSynch" attribute in the SV messages shall be 2.

Traducción: Mientras las muestras estén sincronizadas a un reloj de área global en el grado requerido para cumplir el límite de desplazamiento de fase de la clase de precisión de medición, el valor del atributo "SmpSynch" en los mensajes SV debe ser 2. (IEC 61869-9, §6.904.4)

Original: All sampled values synchronized to any global area clock are synchronized to each other.

Traducción: Todas las muestras sincronizadas a cualquier reloj de área global están sincronizadas entre sí. (IEC 61869-9, §6.904.4)

Original: While sampled values are synchronized to a local area clock to the degree required to meet the measuring accuracy class phase displacement limit, the value of the "SmpSynch" attribute in the SV messages shall be the unique identifier of the specific local area clock if known, or 1 if the identifier is not known.

Traducción: Mientras las muestras estén sincronizadas a un reloj de área local en el grado requerido para cumplir el límite de desplazamiento de fase de la clase de precisión, el valor del atributo "SmpSynch" debe ser el identificador único del reloj local específico si se conoce, o 1 si el identificador no se conoce. (IEC 61869-9, §6.904.4)

Original: All sampled values synchronized to the same local area clock are synchronized to each other, but may not be synchronized to sampled values synchronized to some other clock.

Traducción: Todas las muestras sincronizadas al mismo reloj de área local están sincronizadas entre sí, pero pueden no estarlo con muestras sincronizadas a otro reloj. (IEC 61869-9, §6.904.4)

Original: While sampled values are not synchronized to a global or local area clock to the degree required to meet the measuring accuracy class phase displacement limit, the value of the "SmpSynch" attribute in the SV messages shall be 0.

Traducción: Mientras las muestras no estén sincronizadas a un reloj de área global o local en el grado requerido para cumplir el límite de desplazamiento de fase de la clase de precisión, el valor del atributo "SmpSynch" debe ser 0. (IEC 61869-9, §6.904.4)

Conclusión principal: el valor de SmpSynch de un flujo aislado no permite afirmar si está sincronizado con otro. Un suscriptor que ejecute una protección compleja debe comparar los valores por pares entre todos los flujos que alimentan su algoritmo (en particular los IDs de reloj en sincronización local).

Holdover y el malentendido popular

A menudo se oye la interpretación: "tras la pérdida de la sincronización global, la bandera 2 se mantiene un rato y luego pasa a 1". Es incorrecto. El estándar describe otro comportamiento. Citamos el §6.904.5 textualmente:

Original: When the external synchronization signal is lost, the merging unit shall go into a holdover mode. For the duration of the holdover mode the merging unit shall continue to send samples maintaining the sample timing required for the measuring accuracy class. During holdover, the "SmpSynch" attribute in the SV messages shall remain unchanged, and the "SmpCnt" attribute in the SV messages shall increment and wrap as if a synchronization signal were present.

Traducción: Cuando se pierda la señal de sincronización externa, el SAMU/NCIT debe pasar a modo holdover. Durante el holdover, el SAMU/NCIT debe seguir enviando muestras manteniendo la precisión temporal exigida por la clase de precisión. Durante el holdover, el atributo "SmpSynch" en los mensajes SV debe permanecer inalterado, y el atributo "SmpCnt" debe incrementar y dar vuelta como si la señal de sincronización estuviera presente. (IEC 61869-9, §6.904.5)

Original: The minimum holdover duration shall be 5 seconds under stable temperature conditions.

Traducción: La duración mínima del holdover debe ser de 5 segundos bajo condiciones estables de temperatura. (IEC 61869-9, §6.904.5)

Es decir, durante el holdover el valor de SmpSynch permanece igual a 2. Al expirar el holdover, el SAMU/NCIT pasa a free-running (§6.904.6) y publica SmpSynch=0, no 1. El estándar enumera explícitamente las causas de SmpSynch=0:

  • la señal de sincronización nunca se recibió;
  • la señal fue interrumpida y el SAMU/NCIT opera más allá de su holdover declarado;
  • la señal no se ha adquirido;
  • la precisión de muestreo no cumple los requisitos de la clase.

En la práctica, los fabricantes declaran holdovers de decenas de segundos a horas — según la clase del oscilador interno (TCXO, OCXO, rubidio). 5 segundos es el límite normativo inferior.

Simetría de la regla de holdover

La fórmula "SmpSynch shall remain unchanged" es deliberadamente general y no se ata al valor 2. La regla es por tanto simétrica para cualquier valor inicial:

  • valor 2 (Global) → pérdida de señal → holdover con SmpSynch=2 → expira holdover → SmpSynch=0;
  • valor 1 (Local sin ID) → pérdida de señal → holdover con SmpSynch=1 → expira holdover → SmpSynch=0;
  • valor 5–254 (Local con ID) → pérdida de señal → holdover con el mismo ID → expira holdover → SmpSynch=0.

Lógica subyacente: SmpSynch refleja a qué clase de fuente estaba ligado el SAMU/NCIT y mantiene la precisión de la clase de medición a través de su propio oscilador interno. En holdover, el oscilador interno "recuerda" la referencia previa y la mantiene mientras su estabilidad lo permita.

Mapa completo de las transiciones de SmpSynch para un único SAMU/NCIT:

stateDiagram-v2
    direction LR
    [*] --> S0: arranque sin señal<br/>SmpSynch=0
    S0: SmpSynch = 0<br/>(no sincronizado)
    S2: SmpSynch = 2<br/>(Global / traceable)
    S1: SmpSynch = 1 / 5–254<br/>(Local)
    HOLD2: holdover (valor 2 sin cambios)<br/>dura T_h ≥ 5 s
    HOLD1: holdover (valor 1 sin cambios)<br/>dura T_h ≥ 5 s

    S0 --> S2: GM trazable apareció<br/>(timeTraceable=TRUE)
    S0 --> S1: GM no-trazable apareció<br/>(timeTraceable=FALSE)

    S2 --> HOLD2: señal PTP perdida
    HOLD2 --> S2: PTP restaurado antes de T_h
    HOLD2 --> S0: T_h expiró

    S1 --> HOLD1: señal PTP perdida
    HOLD1 --> S1: PTP restaurado antes de T_h
    HOLD1 --> S0: T_h expiró

    S2 --> S1: GM pasó a clockClass 52<br/>(timeTraceable: TRUE→FALSE)
    S1 --> S2: GM volvió a clockClass 6/7<br/>(timeTraceable: FALSE→TRUE)

Fig. 1. Estados y transiciones del atributo SmpSynch para un único SAMU/NCIT. Observación clave: la transición 2 → 1 no es posible "internamente" durante el holdover — solo surge por un cambio en el estado del grandmaster.

Entonces, ¿cuándo aparece SmpSynch=1?

La transición 2 → 1 es ciertamente posible, pero no es consecuencia de que el propio SAMU/NCIT pierda GPS — proviene del cambio de estado del grandmaster (servidor de tiempo) del dominio PTP al que está conectado.

El §6.904.2 de la IEC 61869-9 prescribe interpretar la señal de sincronización con base en la bandera timeTraceable del Power Profile:

Original: A synchronizing signal received with the Power Profile timeTraceable flag TRUE shall be deemed to be sourced by a global area clock. A synchronizing signal received with the Power Profile timeTraceable flag FALSE shall be deemed to be sourced by a local area clock.

Traducción: Una señal de sincronización recibida con la bandera timeTraceable del Power Profile en TRUE debe considerarse procedente de un reloj de área global. Una señal recibida con timeTraceable en FALSE debe considerarse procedente de un reloj de área local. (IEC 61869-9, §6.904.2)

La correspondencia con el valor de SmpSynch resulta así:

  • señal con timeTraceable=TRUE → el SAMU/NCIT publica SmpSynch=2;
  • señal con timeTraceable=FALSE → el SAMU/NCIT publica SmpSynch=1 (o 5–254 si en el TLV GRANDMASTER_ID se transmite un identificador de byte).

Cuando el grandmaster pierde GPS/GLONASS y entra en su propio holdover, según las reglas del Power Profile pasará tras un cierto tiempo a fijar timeTraceable=FALSE. A partir de ahí, los SAMUs/NCITs conectados a él pasarán a SmpSynch=1 — siguiendo físicamente sincronizados entre sí, ya que toman el tiempo de la misma fuente.

Cuando hay un grandmaster de respaldo, parte de los SAMUs/NCITs puede permanecer en el grandmaster "trazable" (SmpSynch=2) y otra parte puede pasar a uno "no trazable" (SmpSynch=1). La sincronización entre esos dos grupos ya no se garantiza.

Dónde se transmiten timeTraceable y clockClass

Ambos valores llegan al suscriptor dentro del mismo mensaje PTP Announce. Este mensaje lo envía cada grandmaster (Ordinary Clock) y cada Boundary Clock; bajo Power Profile se repite a 1 Hz. Además del propio sello de tiempo, Announce transporta información sobre la calidad de la fuente que el BMCA (Best Master Clock Algorithm) usa para elegir el mejor grandmaster del dominio, y que el SAMU/NCIT usa para derivar el SmpSynch.

timeTraceable: un bit en flagField

La bandera timeTraceable no es un mensaje aparte — es uno de los bits del flagField en la cabecera del mensaje Announce. Concretamente, el byte bajo del flagField, bit 4 (denotado PTP_TIMETRACEABLE según IEEE 1588-2008/2019, máscara 0x10). En el mismo flagField está adyacente la bandera frequencyTraceable (máscara 0x20), que indica si la referencia de frecuencia es trazable; bajo Power Profile su valor suele coincidir con timeTraceable.

El valor de timeTraceable lo establece el propio grandmaster según su estado interno:

  • está enganchado a una referencia externa (por ejemplo, GNSS) con la precisión exigida por Power Profile → timeTraceable=TRUE;
  • está en su propio holdover y la precisión sigue dentro de los límites → timeTraceable normalmente permanece TRUE;
  • la precisión salió de los límites normativos del Power Profile → timeTraceable=FALSE.

clockClass: un byte en grandmasterClockQuality

El atributo clockClass se transmite en el cuerpo del mensaje Announce, dentro de la estructura grandmasterClockQuality (según IEEE 1588-2008/2019, §13.5). Esta estructura ocupa 4 bytes y contiene tres campos:

  • clockClass — 1 byte (UInteger8); la "clase de calidad" del grandmaster — la que nos interesa;
  • clockAccuracy — 1 byte (Enumeration8); estimación gruesa de la precisión real (valores como "mejor que 100 ns", "mejor que 1 µs", etc.);
  • offsetScaledLogVariance — 2 bytes (UInteger16); característica de la estabilidad del oscilador.

El Power Profile (IEC/IEEE 61850-9-3 e IEEE C37.238) usa solo cuatro valores normativos de clockClass:

  • 6 — reloj enganchado a un PRC (Primary Reference Clock; típicamente GNSS), precisión real ≤ 250 ns;
  • 7 — reloj en holdover tras enganche previo a un PRC, precisión aún dentro del perfil (≤ 250 ns respecto al último enganche);
  • 52 — en holdover, la precisión derivó al rango 250 ns – 1 µs;
  • 187 — en holdover, precisión peor que 1 µs.

Un valor menor de clockClass corresponde a una fuente de mayor calidad, y el BMCA, en igualdad de condiciones, elige el grandmaster con menor clockClass.

Relación entre clockClass y timeTraceable

clockClass y timeTraceable son dos campos independientes del mismo mensaje Announce, así que en teoría un grandmaster puede fijarlos en cualquier combinación. Pero el Power Profile los relaciona normativamente: timeTraceable=TRUE solo puede fijarse cuando la precisión real cumple los requisitos de trazabilidad del perfil. De ahí la correspondencia estándar que siguen tanto los grandmasters como los suscriptores:

clockClass Estado del grandmaster Precisión timeTraceable
(en Announce)
SmpSynch en SAMU/NCIT
6 capturado por PRC (típicamente GNSS) ≤ 250 ns TRUE 2 (Global)
7 holdover, precisión dentro del perfil ≤ 250 ns TRUE → FALSE tras la ventana normativa 2 → 1 tras expirar la ventana
52 holdover, precisión fuera del perfil 250 ns – 1 µs FALSE 1 (o 5–254 si hay TLV GMID)
187 holdover, precisión críticamente degradada > 1 µs FALSE 0 (mediante holdover propio del SAMU/NCIT)

Tabla 1. Correspondencia entre clockClass del grandmaster, bandera timeTraceable en Announce y valor SmpSynch en el suscriptor SAMU/NCIT, según Power Profile (IEC/IEEE 61850-9-3 e IEEE C37.238).

Por eso, la transición de un flujo de SmpSynch=2 a SmpSynch=1 es, en esencia, un indicador de que el grandmaster pasó de clockClass 6/7 a clockClass 52: timeTraceable cae a FALSE, y el SAMU/NCIT debe cambiar el SmpSynch en consecuencia.

Qué más se transmite en Announce y dónde es visible

Además de timeTraceable y clockClass, el suscriptor recibe en Announce un campo más relevante:

  • GMID (Grandmaster ID) — se transmite como TLV del Power Profile en el mensaje Announce. Su byte bajo, según §6.904.2 de la IEC 61869-9, se copia al SmpSynch en valores 5–254 — es decir, el ID local que ve la protección compleja proviene físicamente de este TLV.

Un SAMU/NCIT suscriptor (y cualquier protection IED con pila PTP propia) no reenvía estos campos hacia afuera — los usa internamente para derivar el SmpSynch. Por tanto, durante el comisionamiento de una subestación digital, la cadena "Announce → SmpSynch" se verifica cómodamente con analizadores PTP estándar capaces de decodificar mensajes Announce byte a byte (Wireshark con el disector PTPv2, instrumentos dedicados IEEE 1588 Time Test Set, software profesional de prueba PTP/SV, etc.).

La cadena causal resultante es: "estado del grandmaster → su clockClass y timeTraceable en Announce → su interpretación en la pila PTP del SAMU/NCIT → SmpSynch en el mensaje SV → decisión de la protección compleja".

flowchart TB
    GM["Grandmaster<br/><i>estado del oscilador interno</i>"]
    ANN["Mensaje Announce de PTP<br/>(1 Hz por Power Profile)"]
    FF["flagField · bit timeTraceable<br/>TRUE / FALSE"]
    CC["grandmasterClockQuality.clockClass<br/>6 · 7 · 52 · 187"]
    GMID["TLV GRANDMASTER_ID<br/>(IEEE C37.238)"]
    PTP["Pila PTP del SAMU/NCIT<br/>interpretación del Announce"]
    SV["Mensaje SV<br/>atributo SmpSynch"]
    DEF["Protección compleja<br/>comparación de pares SmpSynch<br/>entre todos los flujos"]
    DEC{"¿Todos los flujos<br/>mutuamente sincronizados?"}
    OK["Precisión completa<br/>función opera"]
    BLK["Bloqueo / paso<br/>a algoritmo de respaldo"]

    GM --> ANN
    ANN --> FF
    ANN --> CC
    ANN --> GMID
    FF --> PTP
    CC --> PTP
    GMID --> PTP
    PTP --> SV
    SV --> DEF
    DEF --> DEC
    DEC -->|sí| OK
    DEC -->|no| BLK

    style GM fill:#e8f4fd,stroke:#4a90d9
    style ANN fill:#fff8e1,stroke:#e6a23c
    style PTP fill:#f3e5f5,stroke:#9c27b0
    style SV fill:#e8f5e9,stroke:#67c23a
    style DEF fill:#fde8e8,stroke:#f56c6c
    style OK fill:#e8f5e9,stroke:#67c23a
    style BLK fill:#fde8e8,stroke:#f56c6c

Fig. 2. Cadena causal desde el estado del grandmaster hasta la decisión de la protección compleja. Cada eslabón es un punto de fallo separado y un objeto de prueba separado.

Vuelta a los escenarios de la discusión

Escenario 1: un SAMU/NCIT permanece en 2, otro pasó a 1

Respuesta formal del estándar: tales flujos no pueden considerarse mutuamente sincronizados. El suscriptor no tiene cómo saber si la fuente local del segundo SAMU/NCIT coincide físicamente con la fuente global del primero.

Físicamente, esta situación suele significar una de dos cosas:

  • Ambos SAMUs/NCITs están en el mismo grandmaster, que perdió GPS y ahora indica timeTraceable=FALSE. En ese caso los dos flujos siguen estando sincronizados de hecho (fuente común), pero el segundo SAMU/NCIT también debió pasar a SmpSynch=1 — si no lo hizo, hay un fallo en uno de los dispositivos.
  • Los SAMUs/NCITs están en grandmasters distintos, uno aún con GPS y el otro ya no. En ese caso, entre los flujos surge una deriva de fase del oscilador local y la precisión del alineamiento se degrada.

Como el suscriptor no puede distinguir estos dos casos por el contenido del SV, lo seguro es tratar el par "2 + 1" como no sincronizado y bloquear la protección compleja.

Escenario 2: corrientes SmpSynch=2, tensiones SmpSynch=1

Es la situación típica en la que las corrientes y las tensiones las producen SAMUs/NCITs distintos — exactamente la arquitectura multiflujo para la que la pregunta de la sincronización tiene sentido. Una protección compleja (por ejemplo, de distancia) calcula sus magnitudes mediante la comparación vectorial de corriente y tensión, y cualquier error de fase entre ellas se traslada directamente al resultado.

La IEC 61869-9 no describe el comportamiento del protection IED — solo proporciona al suscriptor un medio (el atributo SmpSynch) para tomar la decisión. La decisión la rigen los requisitos de la función de protección y la lógica del protection IED. La práctica habitual:

  • si ambos flujos tienen SmpSynch=2 — la función opera;
  • si ambos flujos tienen SmpSynch=N (mismo ID local 5–254) — la función opera;
  • si un flujo es =2 y otro =1, o los IDs locales difieren, o al menos uno es =0 — las funciones de protección complejas se bloquean.

Cuándo la pregunta "combinar o no combinar" ni siquiera surge

Si la protección compleja trabaja con un flujo de un único SAMU/NCIT (es decir, corrientes y tensiones provienen del mismo dispositivo), la cuestión de la sincronización externa desaparece — por el §6.904.6 ya citado, las muestras del mismo dispositivo son siempre mutuamente sincronizadas, independientemente del estado de su sincronización externa. La sincronización externa, en este caso, se necesita solo para el alineamiento "global" con otros subsistemas (por ejemplo, sincrofasores), pero no afecta al funcionamiento de la propia función de protección.

Qué debe hacer el SAMU/NCIT al perder la fuente

Resumen de los requisitos de §6.904.5–6.904.6 y del ensayo §7.2.902 de la IEC 61869-9:

  • al perder la sincronización externa, el SAMU/NCIT debe entrar en holdover y seguir emitiendo SVs con el SmpSynch anterior y SmpCnt incrementándose como si nada se hubiera perdido;
  • la duración del holdover se declara en la ficha técnica del dispositivo (atributo hold en PhyNam.d, ver §6.903.5); el mínimo es 5 s;
  • al expirar el holdover, el SAMU/NCIT pasa a free-running, fija SmpSynch=0 y mantiene la tasa de muestreo dentro de ±100 ppm del nominal;
  • al restaurar la señal antes de expirar el holdover, el flujo continúa de forma transparente; al restaurar después — el estándar admite un salto en SmpCnt y/o cambio de SmpSynch en ASDUs adyacentes, y el suscriptor debe detectarlo (NOTA 912 en §6.904.7).

Gráficamente:

{
  "title": {
    "text": "Comportamiento del SAMU/NCIT al perder señal PTP",
    "subtext": "SmpSynch y |Δt| acumulado · IEC 61869-9 §6.904.5 / 7.2.902",
    "left": "center", "top": 8,
    "textStyle": { "fontSize": 14, "fontWeight": "bold" },
    "subtextStyle": { "fontSize": 11, "color": "#888" }
  },
  "tooltip": { "trigger": "axis" },
  "legend": { "bottom": 8, "itemGap": 24, "data": ["SmpSynch", "|Δt| / límite de clase"] },
  "grid": { "left": 70, "right": 70, "top": 75, "bottom": 70 },
  "xAxis": {
    "type": "value",
    "name": "Tiempo (en fracciones de T_h nominal)",
    "nameLocation": "middle", "nameGap": 32,
    "min": -0.4, "max": 1.6,
    "axisLabel": { "formatter": "{value}·T_h" },
    "splitLine": { "show": false }
  },
  "yAxis": [
    {
      "type": "value", "name": "SmpSynch",
      "nameLocation": "middle", "nameGap": 38, "nameRotate": 90,
      "nameTextStyle": { "color": "#409EFF", "fontWeight": "bold" },
      "min": -0.3, "max": 2.6, "interval": 1,
      "position": "left",
      "axisLabel": { "color": "#409EFF" },
      "splitLine": { "show": false }
    },
    {
      "type": "value", "name": "|Δt| / límite de clase",
      "nameLocation": "middle", "nameGap": 40, "nameRotate": -90,
      "nameTextStyle": { "color": "#E6A23C", "fontWeight": "bold" },
      "min": 0, "max": 1.6,
      "position": "right",
      "axisLabel": { "color": "#E6A23C" },
      "splitLine": { "show": false }
    }
  ],
  "series": [
    {
      "name": "SmpSynch",
      "type": "line", "step": "end", "yAxisIndex": 0,
      "data": [[-0.4, 2], [0, 2], [0.95, 2], [0.95, 0], [1.6, 0]],
      "lineStyle": { "width": 4, "color": "#409EFF" },
      "symbol": "circle", "symbolSize": 8, "z": 10,
      "markLine": {
        "silent": true, "symbol": ["none", "none"],
        "label": { "show": false },
        "data": [
          { "xAxis": 0, "lineStyle": { "color": "#F56C6C", "type": "dashed", "width": 2 } },
          { "xAxis": 0.95, "lineStyle": { "color": "#F56C6C", "type": "dashed", "width": 2 } }
        ]
      },
      "markArea": {
        "silent": true,
        "label": { "fontSize": 12, "fontWeight": "bold", "color": "#555", "position": "insideTop", "distance": 6 },
        "data": [
          [{ "name": "Normal", "xAxis": -0.4, "itemStyle": { "color": "rgba(103,194,58,0.12)" } }, { "xAxis": 0 }],
          [{ "name": "Holdover", "xAxis": 0, "itemStyle": { "color": "rgba(230,162,60,0.18)" } }, { "xAxis": 0.95 }],
          [{ "name": "Free-running", "xAxis": 0.95, "itemStyle": { "color": "rgba(245,108,108,0.18)" } }, { "xAxis": 1.6 }]
        ]
      }
    },
    {
      "name": "|Δt| / límite de clase",
      "type": "line", "smooth": true, "yAxisIndex": 1,
      "data": [[-0.4, 0.04], [0, 0.04], [0.15, 0.10], [0.30, 0.22],
               [0.50, 0.40], [0.70, 0.62], [0.85, 0.85], [0.95, 0.98],
               [1.10, 1.18], [1.30, 1.32], [1.6, 1.45]],
      "lineStyle": { "width": 2, "color": "#E6A23C" },
      "areaStyle": { "color": "rgba(230,162,60,0.18)" },
      "showSymbol": false,
      "markLine": {
        "silent": true, "symbol": ["none", "none"],
        "data": [{
          "yAxis": 1,
          "lineStyle": { "color": "#909399", "type": "dotted", "width": 1.5 },
          "label": {
            "formatter": "límite de clase de precisión", "position": "middle",
            "fontSize": 11, "fontWeight": "bold", "color": "#555",
            "backgroundColor": "rgba(255,255,255,0.9)",
            "borderColor": "#909399", "borderWidth": 1, "borderRadius": 3,
            "padding": [3, 8]
          }
        }]
      }
    }
  ]
}

Fig. 3. SmpSynch y el error acumulado de marca de tiempo |Δt| en función del tiempo tras la pérdida de la señal PTP. Zona verde — operación normal, naranja — holdover (SmpSynch=2 inalterado, precisión aún dentro de la clase), roja — free-running (SmpSynch=0). Punto clave: el SmpSynch cambia a 0 antes de que |Δt| supere efectivamente el límite de la clase de precisión (según §7.2.902).

Cómo se verifica el valor declarado de holdover

El procedimiento para confirmar la duración declarada de holdover de un SAMU/NCIT está descrito en §7.2.902 "Loss of synchronization tests" de la IEC 61869-9 — uno de los ensayos de tipo obligatorios. El estándar lo formula muy brevemente, conviene citarlo textualmente:

Original: Verify under worst-case conditions that on loss of synchronizing signal, the merging unit continues to send samples maintaining the sample timing required for the measuring accuracy class for the published duration of the holdover period. Verify that over this period, the SmpSynch attribute in the SV messages remains unchanged, and the SmpCnt attribute in the SV messages increments and wraps as if synchronization signal were present. Verify that before the sample timing fails to meet that required for the measuring accuracy class, the SmpSynch attribute changes to zero.

Traducción: Verificar, en condiciones de peor caso, que al perderse la señal de sincronización el SAMU/NCIT sigue enviando muestras manteniendo la precisión temporal exigida por la clase de precisión durante la duración declarada del holdover. Verificar que, en ese periodo, el atributo SmpSynch permanece inalterado, y el atributo SmpCnt incrementa y da vuelta como si la señal de sincronización estuviera presente. Verificar que, antes de que la precisión del tiempo deje de cumplir la clase, el atributo SmpSynch pasa a cero. (IEC 61869-9, §7.2.902)

De esta formulación se desprenden cuatro afirmaciones que la verificación debe confirmar cuantitativamente: (1) la precisión de las marcas de tiempo de las muestras permanece dentro de la clase durante todo el holdover declarado T_h; (2) en ese intervalo, el SmpSynch no cambia; (3) el SmpCnt incrementa sin saltos ni huecos; (4) cuando el error de tiempo se aproxima al límite de la clase, el SmpSynch cambia a 0 — antes de que la precisión salga efectivamente del límite.

Banco de prueba

La idea del banco es alimentar al dispositivo bajo prueba simultáneamente con una señal analógica estable y un PTP controlado, romper el PTP en t = 0 y registrar el flujo SV de salida con referencia a un reloj externo. Luego, en post-procesamiento, se calcula el error de marca de tiempo de cada ASDU, se compara con el límite de clase y se verifican los valores de SmpSynch y SmpCnt.

flowchart LR
    REF["Referencia de tiempo<br/>Cs/Rb u<br/>oscilador disciplinado por GNSS"]
    GM["PTP grandmaster<br/>Power Profile<br/>(IEC/IEEE 61850-9-3)"]
    CUT["Punto de corte de PTP<br/>(ACL en switch o<br/>ruptura física)"]
    SW["Switch de red<br/>compatible con PTP"]
    AN["Fuente analógica<br/>(I/U calibrado)"]
    DUT["DUT — SAMU/NCIT<br/>holdover declarado T_h"]
    SVA["Analizador SV<br/>(timestamping en hardware)"]
    PP["Post-procesamiento<br/>según criterios §7.2.902"]

    REF -- "1 PPS / 10 MHz" --> GM
    REF -- "1 PPS / 10 MHz" --> SVA
    GM -- PTP --> CUT
    CUT -- PTP --> SW
    SW -- PTP --> DUT
    AN -- "I, U" --> DUT
    DUT -- "SV stream" --> SVA
    SVA --> PP

    style REF fill:#e8f4fd,stroke:#4a90d9
    style GM fill:#fff8e1,stroke:#e6a23c
    style CUT fill:#fde8e8,stroke:#f56c6c
    style DUT fill:#f3e5f5,stroke:#9c27b0
    style SVA fill:#e8f5e9,stroke:#67c23a
    style PP fill:#e8f5e9,stroke:#67c23a

Fig. 4. Estructura del banco para el ensayo de tipo de holdover (IEC 61869-9, §7.2.902).

Elementos clave:

  • Referencia de tiempo — fuente Cs/Rb u oscilador disciplinado por GNSS, con estabilidad 1–2 órdenes de magnitud mejor que la del SAMU/NCIT bajo prueba. Permanece como verdad de fondo incluso cuando se quita la sincronización al DUT.
  • Grandmaster PTP controlado, sincronizado desde la misma referencia. Alimenta PTP Power Profile (IEC/IEEE 61850-9-3) al dispositivo bajo prueba.
  • Punto de corte de PTP — switch con ACL, filtro programable o ruptura física de la línea PTP. Importante: el corte debe afectar solo al PTP, no al canal SV del DUT (de lo contrario, también se interrumpiría la recepción del SV).
  • Fuente analógica — fuente calibrada de corriente/tensión con fase conocida. La estabilidad de fase debe ser mejor que el error de la clase del canal bajo prueba.
  • DUT — el propio SAMU/NCIT con holdover declarado T_h.
  • Analizador SV con timestamping en hardware, atado a la referencia mediante PPS/10 MHz. Registra cada ASDU con marca de tiempo de recepción. En la práctica, esto se hace con un instrumento dedicado de prueba PTP/SV o con una NIC con soporte PHC + Wireshark con el disector PTPv2/SV (este último alcanza típicamente ~50–100 ns).
  • Post-procesamiento — calcula el error de tiempo Δt = t_capture − (t_SmpCnt + t_d) para cada ASDU y lo compara con el límite de clase. Aquí t_d es el retardo declarado del SAMU/NCIT (atributo "delay" en PhyNam.d, ver §6.903.5).

Escenario de prueba

El escenario básico de §7.2.902 cabe en cuatro pasos:

  • Paso 1. Estabilización. Se aplican sincronización y señal analógica al DUT. Esperar Lock, comprobar que el flujo SV tiene SmpSynch correcto (típicamente 2 para el caso "Global") y que Δt está dentro del límite de clase.
  • Paso 2. Corte del PTP. En el instante t = 0, en el punto de corte, se rompe el PTP. La señal analógica y el canal SV en sí no se tocan. El instante exacto de corte se registra contra la referencia.
  • Paso 3. Captura. Se captura el flujo SV durante un intervalo ≥ T_h más margen (típicamente T_h × 1,5). En paralelo, el registro de referencia guarda marcas de PPS para asignar tiempos absolutos de recepción a cada registro.
  • Paso 4. Análisis. A partir de la grabación se verifican los cuatro criterios de §7.2.902: |Δt(t)| ≤ límite de clase para todo t ≤ T_h; SmpSynch inalterado en [0, T_h]; SmpCnt sin saltos; SmpSynch cambia a 0 antes de que |Δt| supere el límite de clase.

También resulta útil verificar cómo se comporta el dispositivo al restaurar la señal: si se restaura antes de expirar el holdover, el flujo debe continuar sin costuras; si después — se admite un salto en SmpCnt y/o cambio de SmpSynch en ASDUs adyacentes (NOTA 912, §6.904.7), y el suscriptor debe detectarlo.

Qué cuenta como "condiciones de peor caso"

§7.2.902 obliga a probar en condiciones de peor caso. En la práctica esto significa un conjunto de factores que aceleran la deriva del oscilador interno:

  • operación en los extremos del rango de temperatura especificado del DUT (típicamente en cámara térmica en los límites inferior y superior);
  • pre-acondicionamiento a la temperatura límite, para excluir la fase inicial de auto-calentamiento;
  • si procede — pruebas con solicitaciones de EMC (ver las secciones EMC correspondientes de la IEC 61869-9).

Si el T_h declarado lo es solo para "temperatura estable" (formulación explícitamente permitida por el §6.904.5), no es obligatoria la cámara térmica, pero la ausencia de esas condiciones debe registrarse en el informe.

Qué suele ocurrir en la práctica

Un ciclo completo de prueba de holdover es un ensayo de larga duración (para T_h de decenas de minutos u horas, el tiempo real de prueba es comparable) y se realiza en su totalidad solo en laboratorios acreditados (KEMA/DNV, VDE, KERI, etc.) durante la aprobación de tipo — el resultado queda en el certificado de tipo. En las pruebas de aceptación de fábrica y en el comisionamiento de subestación se usa por lo general una versión "corta": se desconecta el PTP durante 5–10 segundos y se confirma que durante ese tiempo el flujo SV continúa, el SmpSynch no cambia y el SmpCnt corre sin saltos. Esto confirma que el mecanismo de holdover funciona, pero no su duración declarada.

Una prueba larga (hasta el T_h completo) tiene sentido incluirla en la especificación técnica para prototipos, en el lanzamiento de una nueva generación y en investigaciones tras incidentes en los que el comportamiento real del holdover esté en duda. Nótese también que el propio grandmaster PTP tiene su propio holdover, verificado por un método análogo descrito en IEC/IEEE 61850-9-3.

Qué dicen la IEC 61850-9-3 y el PTP Power Profile

La IEC 61869-9 describe el comportamiento del SAMU/NCIT y los valores de SmpSynch, pero la calidad de la propia red de sincronización está regida por otro par de estándares: IEC/IEEE 61850-9-3 (Power Profile para PTP) e IEEE C37.238. Es importante mantener este nexo presente; de lo contrario, el atributo SmpSynch se percibe como "cosa en sí".

El Power Profile define el atributo clockClass en el grandmaster (transmitido en Announce) y sus valores típicos para sistemas de potencia:

  • clockClass = 6 — reloj enganchado a una referencia externa (típicamente GNSS), precisión ≤ 250 ns. Los suscriptores reciben una señal con timeTraceable=TRUE → el SAMU/NCIT publica SmpSynch=2.
  • clockClass = 7 — reloj en holdover tras enganche previo, precisión aún ≤ 250 ns. timeTraceable normalmente sigue siendo TRUE; SmpSynch en el SAMU/NCIT permanece 2.
  • clockClass = 52 — holdover, precisión derivó al rango 250 ns – 1 µs. timeTraceable=FALSE; el SAMU/NCIT pasa a SmpSynch=1 (o 5–254 si en el TLV se transmite un GRANDMASTER_ID).
  • clockClass = 187 — holdover, precisión peor que 1 µs. El flujo SV con tal sincronización ya no cumple la clase del canal de medición y debe publicarse con SmpSynch=0.

Es decir, una transición SmpSynch 2 → 1 (en lugar de 2 → 0) en un flujo no es "el SAMU/NCIT perdió la señal", sino "el grandmaster pasó de clockClass 7 a clockClass 52". Si el grandmaster degrada hasta clockClass 187, entra en juego el holdover propio del SAMU/NCIT, y SmpSynch=0 aparece según la lógica descrita antes.

De ahí — recomendaciones típicas:

  • Grandmasters redundantes, cada uno con su receptor GNSS, con BMCA coordinada. El fallo de un receptor o de un dispositivo no debe llevar al dominio a clockClass 52.
  • Boundary clocks en cada edificio de control / sala GIS. Cuando se pierde el enlace entre edificios, la referencia local de tiempo se preserva y el SAMU/NCIT no necesita cambiar de SmpSynch.
  • Configuración uniforme del perfil PTP: número de dominio, mecanismo de retardo (E2E/P2P), tasas de Sync/Announce, prioridades BMCA, comportamiento en holdover deben estar coordinados entre grandmasters, switches PTP-aware, SAMUs/NCITs y protection IEDs.
  • Margen de holdover en la red: dispositivos con OCXO termo-controlados mantienen clockClass 7 durante decenas de minutos; con Rb, durante horas. Crítico para instalaciones expuestas a la pérdida total de GNSS en la subestación.
  • Probar transiciones — no solo pérdida de señal en el SAMU/NCIT (ensayo §7.2.902 de la IEC 61869-9), sino también transiciones del grandmaster 6 → 7 → 52 → 187 — en el lado del suscriptor, probar la lógica de reacción a 2 → 1 → 0 y a saltos en SmpCnt.

Recomendaciones prácticas para diseño y comisionamiento

  • Comparar pares de SmpSynch, no valores aislados. Un suscriptor de protección compleja debe verificar si las fuentes de todos los flujos usados por su algoritmo coinciden.
  • Prever margen de holdover. Los 5 segundos mínimos del estándar son el límite inferior. Para que las protecciones resistan fallos transitorios de PTP/1PPS, elija SAMUs/NCITs y grandmasters con holdover de decenas de minutos.
  • Redundar la fuente de tiempo. Duplicar el grandmaster, cada uno con su receptor GPS/GLONASS.
  • Buscar una fuente única por protección. Donde la topología lo permita, tomar las corrientes y tensiones de una protección compleja del mismo SAMU/NCIT — así la cuestión de combinar SmpSynch ni se plantea.
  • Configuración uniforme del perfil PTP: número de dominio, mecanismo de retardo (E2E/P2P), tasas de Sync/Announce, prioridades BMCA, comportamiento en holdover — coordinados entre grandmasters, switches PTP-aware, SAMUs/NCITs y protection IEDs.
  • Boundary clocks en cada edificio de control / sala GIS. Cuando se pierde el enlace entre edificios, la referencia local de tiempo se preserva y el SAMU/NCIT no necesita cambiar de SmpSynch.
  • Probar transiciones. El ensayo §7.2.902 es un requisito al SAMU/NCIT; en el lado del suscriptor, pruebe su propia lógica de reacción a 2→0, 2→1, saltos en SmpCnt; en la red — transiciones del grandmaster 6 → 7 → 52 → 187.

Conclusión

La imagen "2 → 1 → 0" que a veces se formula en discusiones simplifica el comportamiento real del SAMU/NCIT y conduce a conclusiones incorrectas. La IEC 61869-9 describe otra transición: "2 → (holdover, SmpSynch sigue siendo 2) → 0", y el valor 1 aparece en otro escenario — cuando cambia el estado del propio grandmaster, lo que se transmite físicamente mediante la bandera timeTraceable en los mensajes Announce del dominio PTP.

Para un suscriptor de protección compleja, esto se traduce en una regla simple: el par "SmpSynch=2 y SmpSynch=1", en general, no se considera sincronizado, y bajo tal combinación las funciones de protección que dependen de la comparación entre flujos deben bloquearse.

Y una observación arquitectónica final: la pregunta "¿sigue sincronizado?" ni se plantea cuando la protección compleja recibe señales de un único SAMU/NCIT. Por eso, al diseñar una subestación digital, mire no solo el sistema de sincronización en sí, sino también la distribución de funciones entre los SAMUs/NCITs — cuantas menos dependencias entre dispositivos tenga una protección, menos puntos de fallo relacionados con el estado de SmpSynch portará.