O que a IEC 61869-9 realmente exige e onde está a fronteira entre "ainda sincronizado" e "já não sincronizado"

Este artigo utiliza a terminologia IEC para fontes de fluxo SV:

  • SAMU — Stand-Alone Merging Unit (dispositivo separado que produz um fluxo SV a partir de entradas analógicas convencionais);
  • NCIT — Non-Conventional Instrument Transformer (transformador de corrente ou tensão com saída digital própria conforme IEC 61869-9).

Por brevidade, escrevemos SAMU/NCIT para designar a fonte genérica de fluxo SV.

Por função de proteção complexa entendemos uma função que satisfaz simultaneamente as duas condições:

  1. o protection IED recebe vários fluxos SV independentes provenientes de diferentes SAMUs/NCITs (por exemplo, um SAMU separado para correntes e um NCIT separado para tensões; ou correntes de ramos vindas de SAMUs distintos);
  2. o algoritmo de proteção compara vetorialmente os sinais entre esses fluxos — ou seja, o resultado depende do alinhamento mútuo no tempo e no ângulo.

Pertencem a essa categoria, em particular, proteções de distância, diferenciais, direcionais, etc. Se, por outro lado, todos os sinais necessários (correntes e tensões) chegarem do mesmo SAMU/NCIT, o estado da sua sincronização externa não afeta o funcionamento da proteção — a Seção 6.904.6 da IEC 61869-9 afirma isso de forma explícita:

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.

Tradução: Independentemente de o SAMU/NCIT estar sincronizado a uma fonte de tempo externa ou não, todas as amostras de um mesmo SAMU/NCIT devem estar sincronizadas entre si. (IEC 61869-9, §6.904.6)

Em outras palavras, o problema deste artigo é relevante exatamente na arquitetura multifluxo — quando a proteção compõe seu quadro a partir de amostras produzidas por diferentes dispositivos físicos SAMU/NCIT.

Enunciado do problema

Duas perguntas relacionadas surgem com frequência entre projetistas e comissionadores de proteção. Resumimos seu conteúdo:

  • Cenário 1. Todos os fluxos SV inicialmente carregavam a marca de sincronização global (SmpSynch=2). Em determinado momento, um SAMU/NCIT continua publicando SmpSynch=2, enquanto outro passa para SmpSynch=1. É possível considerar esses SVs ainda mutuamente sincronizados durante algum tempo?
  • Cenário 2. Um protection IED que executa uma proteção complexa recebe dois fluxos SV: correntes — com SmpSynch=2 (global), tensões — com SmpSynch=1 (local). A função correspondente deve ser bloqueada, ou as medições ainda combinam corretamente por algum tempo?

A resposta a ambas as perguntas decorre diretamente da Seção 6.904 "Synchronization" da IEC 61869-9. A seguir analisamos suas disposições e as confrontamos com equívocos frequentes.

Como o padrão descreve o SmpSynch

O atributo SmpSynch está presente em cada ASDU da mensagem SV e informa ao subscritor a qual fonte de tempo estão atreladas as amostras. A IEC 61869-9, §6.904.4, define quatro classes de valores:

SmpSynch Fonte de tempo O que significa para o subscritor
0 Não sincronizado As amostras não estão atreladas a relógios globais nem locais com a precisão necessária. O sinal de sincronização nunca foi recebido, o holdover expirou ou a referência foi perdida.
1 Relógio local (fonte desconhecida) O SAMU/NCIT está sincronizado a um relógio local, mas o identificador desse relógio não é transmitido. Por exemplo, em sincronização por 1PPS — simplesmente não há campo para o ID da fonte.
2 Relógio global (UTC/TAI traceable) O SAMU/NCIT está sincronizado a uma fonte que é em si rastreável até referências nacionais de tempo (GPS/GLONASS, servidores NTP do NIST, etc.). Todos os fluxos com SmpSynch=2 são mutuamente sincronizados.
5–254 Relógio local com ID único Um relógio local específico. Fluxos com o mesmo ID são mutuamente sincronizados; com IDs diferentes não há garantia.

As prescrições principais do §6.904.4, em sua forma original em inglês, com tradução:

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.

Tradução: Enquanto as amostras estiverem sincronizadas a um relógio de área global no grau exigido para cumprir o limite de deslocamento de fase da classe de precisão de medição, o valor do atributo "SmpSynch" nas mensagens SV deve ser 2. (IEC 61869-9, §6.904.4)

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

Tradução: Todas as amostras sincronizadas a qualquer relógio de área global são sincronizadas entre si. (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.

Tradução: Enquanto as amostras estiverem sincronizadas a um relógio de área local no grau exigido para cumprir o limite de deslocamento de fase da classe de precisão, o valor do atributo "SmpSynch" deve ser o identificador único do relógio local específico, se conhecido, ou 1 se o identificador não for conhecido. (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.

Tradução: Todas as amostras sincronizadas ao mesmo relógio de área local são sincronizadas entre si, mas podem não estar sincronizadas com amostras sincronizadas a algum outro relógio. (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.

Tradução: Enquanto as amostras não estiverem sincronizadas a um relógio de área global ou local no grau exigido para cumprir o limite de deslocamento de fase da classe de precisão, o valor do atributo "SmpSynch" deve ser 0. (IEC 61869-9, §6.904.4)

A conclusão principal: o valor de SmpSynch de um único fluxo, isoladamente, não permite afirmar se ele está sincronizado com outro fluxo. Um subscritor que execute uma função de proteção complexa deve comparar os valores aos pares entre todos os fluxos que alimentam o seu algoritmo (em particular os IDs dos relógios no caso de sincronização local).

Holdover e o equívoco popular

Costuma-se ouvir a interpretação: "após a perda da sincronização global, o flag 2 permanece por algum tempo e depois passa a 1". Isso é incorreto. O padrão descreve outro comportamento. Citamos o §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.

Tradução: Quando o sinal de sincronização externa for perdido, o SAMU/NCIT deve entrar em modo holdover. Durante o modo holdover, o SAMU/NCIT deve continuar enviando amostras mantendo a precisão temporal exigida pela classe de precisão. Durante o holdover, o atributo "SmpSynch" nas mensagens SV deve permanecer inalterado, e o atributo "SmpCnt" deve incrementar e dar volta como se o sinal de sincronização estivesse presente. (IEC 61869-9, §6.904.5)

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

Tradução: A duração mínima do holdover deve ser de 5 segundos sob condições estáveis de temperatura. (IEC 61869-9, §6.904.5)

Ou seja, durante o holdover o valor de SmpSynch permanece igual a 2. Após expirar o holdover, o SAMU/NCIT passa ao modo free-running (§6.904.6) e publica SmpSynch=0, e não 1. O padrão enumera explicitamente as causas de SmpSynch=0:

  • o sinal de sincronização nunca foi recebido;
  • o sinal de sincronização foi interrompido e o SAMU/NCIT está operando além do seu holdover declarado;
  • o sinal de sincronização não foi adquirido;
  • a precisão de amostragem não atende aos requisitos da classe.

Na prática, fabricantes declaram holdover de dezenas de segundos a horas — dependendo da classe do oscilador interno (TCXO, OCXO, rubídio). 5 segundos é o limite inferior normativo.

Simetria da regra de holdover

A formulação "SmpSynch shall remain unchanged" é deliberadamente geral e não está atrelada ao valor 2. A regra é, portanto, simétrica para qualquer valor inicial:

  • valor 2 (Global) → perda do sinal → holdover com SmpSynch=2 → holdover expira → SmpSynch=0;
  • valor 1 (Local sem ID) → perda do sinal → holdover com SmpSynch=1 → holdover expira → SmpSynch=0;
  • valor 5–254 (Local com ID) → perda do sinal → holdover com o mesmo ID → holdover expira → SmpSynch=0.

Lógica subjacente: SmpSynch reflete a qual classe de fonte o SAMU/NCIT estava ligado e mantém a precisão da classe de medição através do seu próprio oscilador interno. Em holdover, o oscilador interno "lembra" da referência anterior e a sustenta enquanto sua estabilidade permitir.

Mapa completo das transições de SmpSynch para um único SAMU/NCIT:

stateDiagram-v2
    direction LR
    [*] --> S0: inicialização sem sinal<br/>SmpSynch=0
    S0: SmpSynch = 0<br/>(não sincronizado)
    S2: SmpSynch = 2<br/>(Global / traceable)
    S1: SmpSynch = 1 / 5–254<br/>(Local)
    HOLD2: holdover (valor 2 inalterado)<br/>dura T_h ≥ 5 s
    HOLD1: holdover (valor 1 inalterado)<br/>dura T_h ≥ 5 s

    S0 --> S2: GM rastreável apareceu<br/>(timeTraceable=TRUE)
    S0 --> S1: GM não-rastreável apareceu<br/>(timeTraceable=FALSE)

    S2 --> HOLD2: sinal PTP perdido
    HOLD2 --> S2: PTP restaurado antes de T_h
    HOLD2 --> S0: T_h expirou

    S1 --> HOLD1: sinal PTP perdido
    HOLD1 --> S1: PTP restaurado antes de T_h
    HOLD1 --> S0: T_h expirou

    S2 --> S1: GM passou para clockClass 52<br/>(timeTraceable: TRUE→FALSE)
    S1 --> S2: GM voltou para clockClass 6/7<br/>(timeTraceable: FALSE→TRUE)

Fig. 1. Estados e transições do atributo SmpSynch para um único SAMU/NCIT. Observação principal: a transição 2 → 1 não é possível "internamente" durante o holdover — ela só ocorre por mudança de estado do grandmaster.

Então, quando aparece SmpSynch=1?

A transição 2 → 1 é, sim, possível, mas não é consequência da perda de GPS pelo próprio SAMU/NCIT — decorre da mudança de estado do grandmaster (servidor de tempo) do domínio PTP ao qual o SAMU/NCIT está conectado.

O §6.904.2 da IEC 61869-9 prescreve interpretar o sinal de sincronização com base na flag timeTraceable do 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.

Tradução: Um sinal de sincronização recebido com a flag timeTraceable do Power Profile em TRUE deve ser considerado proveniente de um relógio de área global. Um sinal recebido com timeTraceable em FALSE deve ser considerado proveniente de um relógio de área local. (IEC 61869-9, §6.904.2)

O mapeamento ao valor de SmpSynch é o seguinte:

  • sinal com timeTraceable=TRUE → o SAMU/NCIT publica SmpSynch=2;
  • sinal com timeTraceable=FALSE → o SAMU/NCIT publica SmpSynch=1 (ou 5–254, se um identificador de fonte for transmitido no TLV GRANDMASTER_ID).

Quando o grandmaster perde GPS/GLONASS e ele próprio entra em holdover, conforme as regras do Power Profile, ele passará após algum tempo a sinalizar timeTraceable=FALSE. A partir desse momento, os SAMUs/NCITs conectados a ele passarão a SmpSynch=1 — permanecendo fisicamente sincronizados entre si, pois retiram o tempo da mesma fonte.

Quando há um grandmaster redundante, parte dos SAMUs/NCITs pode permanecer no grandmaster "traceable" (SmpSynch=2), enquanto outra parte muda para um "não-traceable" (SmpSynch=1). A sincronização entre os dois grupos não é mais garantida.

Onde timeTraceable e clockClass são transmitidos

Ambos os valores chegam ao subscritor dentro da mesma mensagem PTP Announce. Essa mensagem é enviada por todo grandmaster (Ordinary Clock) e todo Boundary Clock; pelo Power Profile, é repetida a 1 Hz. Além do próprio carimbo de tempo, o Announce traz informações sobre a qualidade da fonte que o BMCA (Best Master Clock Algorithm) utiliza para escolher o melhor grandmaster do domínio, e que o SAMU/NCIT utiliza para derivar o SmpSynch.

timeTraceable: um bit em flagField

A flag timeTraceable não é uma mensagem separada — é um dos bits do flagField no cabeçalho da mensagem Announce. Especificamente, é o byte inferior do flagField, bit 4 (denotado PTP_TIMETRACEABLE conforme IEEE 1588-2008/2019, máscara 0x10). Adjacente, no mesmo flagField, está a flag frequencyTraceable (máscara 0x20), que indica se a referência de frequência é rastreável; pelo Power Profile, seu valor normalmente coincide com timeTraceable.

O valor de timeTraceable é definido pelo próprio grandmaster conforme seu estado interno:

  • está travado a uma referência externa (por exemplo, GNSS) com a precisão exigida pelo Power Profile → timeTraceable=TRUE;
  • está em seu próprio holdover, com a precisão ainda dentro dos limites → timeTraceable normalmente permanece TRUE;
  • a precisão excedeu os limites normativos do Power Profile → timeTraceable=FALSE.

clockClass: um byte em grandmasterClockQuality

O atributo clockClass é transmitido no corpo da mensagem Announce, dentro da estrutura grandmasterClockQuality (conforme IEEE 1588-2008/2019, §13.5). Essa estrutura ocupa 4 bytes e contém três campos:

  • clockClass — 1 byte (UInteger8); o "classe de qualidade" propriamente dita do grandmaster — é a que nos interessa;
  • clockAccuracy — 1 byte (Enumeration8); estimativa grosseira da precisão real (valores como "melhor que 100 ns", "melhor que 1 µs", etc.);
  • offsetScaledLogVariance — 2 bytes (UInteger16); característica da estabilidade do oscilador.

O Power Profile (IEC/IEEE 61850-9-3 e IEEE C37.238) usa apenas quatro valores normativos de clockClass:

  • 6 — relógio travado a um PRC (Primary Reference Clock; tipicamente GNSS), precisão real ≤ 250 ns;
  • 7 — relógio em holdover após travamento prévio a um PRC, precisão ainda dentro do perfil (≤ 250 ns relativos ao último travamento);
  • 52 — em holdover, precisão derivou para a faixa 250 ns – 1 µs;
  • 187 — em holdover, precisão pior que 1 µs.

Um valor menor de clockClass corresponde a uma fonte de melhor qualidade, e o BMCA, em condições iguais, escolhe o grandmaster com menor clockClass.

Relação entre clockClass e timeTraceable

clockClass e timeTraceable são dois campos independentes da mesma mensagem Announce, então teoricamente um grandmaster pode defini-los em qualquer combinação. Mas o Power Profile relaciona-os normativamente: timeTraceable=TRUE só pode ser definido quando a precisão real atende aos requisitos do perfil de rastreabilidade. Daí a correspondência padrão seguida tanto pelos grandmasters como pelos subscritores:

clockClass Estado do grandmaster Precisão timeTraceable
(no Announce)
SmpSynch no SAMU/NCIT
6 capturado por PRC (geralmente GNSS) ≤ 250 ns TRUE 2 (Global)
7 holdover, precisão dentro do perfil ≤ 250 ns TRUE → FALSE após janela normativa 2 → 1 após a janela expirar
52 holdover, precisão fora do perfil 250 ns – 1 µs FALSE 1 (ou 5–254 se houver TLV GMID)
187 holdover, precisão criticamente degradada > 1 µs FALSE 0 (via holdover próprio do SAMU/NCIT)

Tabela 1. Correspondência entre clockClass do grandmaster, flag timeTraceable em Announce e valor SmpSynch no subscritor SAMU/NCIT, conforme Power Profile (IEC/IEEE 61850-9-3 e IEEE C37.238).

É exatamente por isso que a transição de um fluxo de SmpSynch=2 para SmpSynch=1 é, na essência, um indicador de que o grandmaster passou de clockClass 6/7 para clockClass 52: o timeTraceable cai para FALSE, e o SAMU/NCIT deve mudar o SmpSynch de acordo.

O que mais é transmitido em Announce e onde isso é visível

Além de timeTraceable e clockClass, o subscritor recebe via Announce mais um campo importante:

  • GMID (Grandmaster ID) — transmitido como TLV do Power Profile na mensagem Announce. Seu byte inferior, conforme §6.904.2 da IEC 61869-9, é copiado para SmpSynch nos valores 5–254 — ou seja, o ID local que a proteção complexa enxerga vem fisicamente desse TLV.

Um SAMU/NCIT subscritor (e qualquer protection IED com pilha PTP própria) não retransmite esses campos para fora — utiliza-os internamente para derivar o SmpSynch. Por isso, durante o comissionamento de uma subestação digital a cadeia "Announce → SmpSynch" é convenientemente verificada com analisadores PTP padrão capazes de decodificar mensagens Announce byte a byte (Wireshark com o dissecador PTPv2, instrumentos dedicados IEEE 1588 Time Test Set, software profissional de teste PTP/SV, etc.).

A cadeia causal resultante é: "estado do grandmaster → seu clockClass e timeTraceable em Announce → sua interpretação na pilha PTP do SAMU/NCIT → SmpSynch na mensagem SV → decisão da proteção complexa".

flowchart TB
    GM["Grandmaster<br/><i>estado do oscilador interno</i>"]
    ANN["Mensagem Announce do PTP<br/>(1 Hz pelo 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["Pilha PTP do SAMU/NCIT<br/>interpretação do Announce"]
    SV["Mensagem SV<br/>atributo SmpSynch"]
    DEF["Proteção complexa<br/>comparação de pares SmpSynch<br/>entre todos os fluxos"]
    DEC{"Todos os fluxos<br/>mutuamente sincronizados?"}
    OK["Precisão completa<br/>função opera"]
    BLK["Bloqueio / passagem<br/>para algoritmo reserva"]

    GM --> ANN
    ANN --> FF
    ANN --> CC
    ANN --> GMID
    FF --> PTP
    CC --> PTP
    GMID --> PTP
    PTP --> SV
    SV --> DEF
    DEF --> DEC
    DEC -->|sim| OK
    DEC -->|não| 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. Cadeia causal do estado do grandmaster até a decisão da proteção complexa. Cada elo é um ponto de falha distinto e um objeto de teste distinto.

Voltando aos cenários da discussão

Cenário 1: um SAMU/NCIT permanece em 2, outro passou a 1

Resposta formal do padrão: tais fluxos não podem ser considerados mutuamente sincronizados. O subscritor não tem como saber se a fonte local do segundo SAMU/NCIT coincide fisicamente com a fonte global do primeiro.

Fisicamente, esta situação significa, em geral, uma de duas coisas:

  • Ambos os SAMUs/NCITs estão no mesmo grandmaster, que perdeu GPS e agora indica timeTraceable=FALSE. Nesse caso, os dois fluxos permanecem de fato sincronizados (mesma fonte), mas o segundo SAMU/NCIT também deveria ter passado para SmpSynch=1 — se não passou, há defeito em um dos dispositivos.
  • Os SAMUs/NCITs estão em grandmasters distintos, um ainda com GPS, o outro já não. Aí surge entre os fluxos uma deriva de fase do oscilador local, e a precisão do alinhamento se degrada.

Como o subscritor não consegue distinguir esses dois casos pelo conteúdo do SV, é mais seguro tratar o par "2 + 1" como não sincronizado e bloquear a proteção complexa.

Cenário 2: correntes SmpSynch=2, tensões SmpSynch=1

É a situação típica em que correntes e tensões são produzidas por SAMUs/NCITs diferentes — exatamente a arquitetura multifluxo para a qual a questão da sincronização tem sentido. Uma proteção complexa (por exemplo, distância) calcula suas grandezas pela comparação vetorial de corrente e tensão, e qualquer erro de fase entre elas se propaga diretamente ao resultado.

A IEC 61869-9 não descreve o comportamento do protection IED — apenas fornece ao subscritor um meio (o atributo SmpSynch) para tomar a decisão. A decisão em si é regida pelos requisitos da função de proteção e pela lógica do protection IED. A prática usual:

  • se ambos os fluxos têm SmpSynch=2 — a função opera;
  • se ambos os fluxos têm SmpSynch=N (mesmo ID local 5–254) — a função opera;
  • se um fluxo está em =2 e outro em =1, ou os IDs locais diferem, ou pelo menos um está em =0 — as funções de proteção complexas são bloqueadas.

Quando a pergunta "combinar ou não combinar" sequer surge

Se a proteção complexa trabalha com um fluxo de um único SAMU/NCIT (ou seja, correntes e tensões são produzidas pelo mesmo dispositivo), a questão da sincronização externa desaparece — pelo §6.904.6 já citado, as amostras de um mesmo dispositivo são sempre mutuamente sincronizadas, independentemente do estado da sincronização externa. A sincronização externa, nesse caso, serve apenas para o alinhamento "global" com outros subsistemas (por exemplo, sincrofasores), mas não afeta o funcionamento da função de proteção em si.

O que o SAMU/NCIT deve fazer ao perder a fonte

Resumo dos requisitos de §6.904.5–6.904.6 e do teste §7.2.902 da IEC 61869-9:

  • ao perder a sincronização externa, o SAMU/NCIT deve entrar em holdover e continuar emitindo SVs com o SmpSynch anterior e SmpCnt incrementado, como se nada tivesse sido perdido;
  • a duração do holdover é declarada na ficha técnica do dispositivo (atributo hold em PhyNam.d, ver §6.903.5); o mínimo é 5 s;
  • ao expirar o holdover, o SAMU/NCIT passa a free-running, define SmpSynch=0 e mantém a taxa de amostragem dentro de ±100 ppm do nominal;
  • ao restaurar o sinal antes de expirar o holdover, o fluxo continua sem costuras; ao restaurar depois — o padrão admite um salto em SmpCnt e/ou alteração de SmpSynch em ASDUs adjacentes, e o subscritor deve detectar isso (NOTA 912 em §6.904.7).

Graficamente:

{
  "title": {
    "text": "Comportamento do SAMU/NCIT na perda do sinal PTP",
    "subtext": "SmpSynch e |Δ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| / limite da classe"] },
  "grid": { "left": 70, "right": 70, "top": 75, "bottom": 70 },
  "xAxis": {
    "type": "value",
    "name": "Tempo (em frações do 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| / limite da classe",
      "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| / limite da classe",
      "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": "limite de classe de precisão", "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 e o erro acumulado de carimbo de tempo |Δt| ao longo do tempo após a perda do sinal PTP. Zona verde — operação normal, laranja — holdover (SmpSynch=2 inalterado, precisão ainda dentro da classe), vermelha — free-running (SmpSynch=0). Ponto-chave: o SmpSynch comuta para 0 antes que |Δt| efetivamente exceda o limite da classe de precisão (conforme §7.2.902).

Como o valor declarado de holdover é verificado

O procedimento de confirmação da duração declarada de holdover de um SAMU/NCIT está descrito em §7.2.902 "Loss of synchronization tests" da IEC 61869-9 — um dos ensaios de tipo obrigatórios. O padrão é muito conciso, vale citá-lo na íntegra:

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.

Tradução: Verificar, em condições de pior caso, que ao perder o sinal de sincronização o SAMU/NCIT continua enviando amostras mantendo a precisão temporal exigida pela classe de precisão durante a duração declarada do holdover. Verificar que, nesse período, o atributo SmpSynch permanece inalterado, e o atributo SmpCnt incrementa e dá volta como se o sinal de sincronização estivesse presente. Verificar que, antes que a precisão do tempo deixe de atender a classe, o atributo SmpSynch passa a zero. (IEC 61869-9, §7.2.902)

Dessa formulação derivam quatro afirmações que o teste deve confirmar quantitativamente: (1) a precisão dos carimbos de tempo permanece dentro da classe durante todo o holdover declarado T_h; (2) nesse intervalo o SmpSynch não muda; (3) o SmpCnt incrementa sem saltos nem lacunas; (4) quando o erro de tempo se aproxima do limite da classe, o SmpSynch comuta a 0 — antes que a precisão saia efetivamente do limite.

Bancada de teste

A ideia da bancada é alimentar simultaneamente o dispositivo sob teste com um sinal analógico estável e um PTP controlado, romper o PTP em t = 0 e gravar o fluxo SV de saída com referência a um relógio externo. Em pós-processamento, calcula-se o erro do carimbo de tempo de cada ASDU, compara-se com o limite da classe e verificam-se os valores de SmpSynch e SmpCnt.

flowchart LR
    REF["Referência de tempo<br/>Cs/Rb ou<br/>oscilador disciplinado por GNSS"]
    GM["PTP grandmaster<br/>Power Profile<br/>(IEC/IEEE 61850-9-3)"]
    CUT["Ponto de corte do PTP<br/>(ACL no switch ou<br/>quebra física)"]
    SW["Switch de rede<br/>com suporte a PTP"]
    AN["Fonte analógica<br/>(I/U calibrado)"]
    DUT["DUT — SAMU/NCIT<br/>holdover declarado T_h"]
    SVA["Analisador SV<br/>(timestamping em hardware)"]
    PP["Pós-processamento<br/>conforme critérios §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. Estrutura da bancada para o ensaio de tipo de holdover (IEC 61869-9, §7.2.902).

Elementos-chave:

  • Referência de tempo — uma fonte Cs/Rb ou um oscilador disciplinado por GNSS, com estabilidade 1–2 ordens de magnitude melhor que a do SAMU/NCIT em teste. Permanece sendo a verdade absoluta mesmo quando se retira a sincronização do DUT.
  • Grandmaster PTP controlado, sincronizado a partir da mesma referência. Alimenta o PTP Power Profile (IEC/IEEE 61850-9-3) ao dispositivo em teste.
  • Ponto de corte do PTP — switch com ACL, filtro programável ou ruptura física da linha PTP. Importante: o corte deve afetar somente o PTP, não o canal SV do DUT (caso contrário, a recepção do SV também é interrompida).
  • Fonte analógica — fonte calibrada de corrente/tensão com fase conhecida. A estabilidade de fase deve ser melhor que o erro da classe do canal em teste.
  • DUT — o próprio SAMU/NCIT com holdover declarado T_h.
  • Analisador SV com timestamping em hardware, atrelado à referência via PPS/10 MHz. Registra cada ASDU com carimbo de tempo de recepção. Na prática, isso é feito com um instrumento dedicado de teste PTP/SV ou com uma NIC com suporte a PHC + Wireshark e o dissecador PTPv2/SV (este último tipicamente atinge ~50–100 ns).
  • Pós-processamento — calcula o erro de tempo Δt = t_capture − (t_SmpCnt + t_d) para cada ASDU e compara com o limite da classe. Aqui t_d é o atraso declarado do SAMU/NCIT (atributo "delay" em PhyNam.d, ver §6.903.5).

Roteiro do teste

O cenário básico do §7.2.902 cabe em quatro passos:

  • Passo 1. Estabilização. Sincronização e sinal analógico são aplicados ao DUT. Aguardar Lock, verificar que o fluxo SV tem SmpSynch correto (tipicamente 2 para o cenário "Global") e que Δt está dentro da classe.
  • Passo 2. Corte do PTP. No instante t = 0, no ponto de corte, rompe-se o PTP. O sinal analógico e o canal SV em si não são tocados. O instante exato de corte é registrado contra a referência.
  • Passo 3. Captura. O fluxo SV é capturado por um intervalo ≥ T_h mais margem (tipicamente T_h × 1,5). Em paralelo, o registro de referência salva marcas de PPS para que cada gravação receba um tempo absoluto de recepção.
  • Passo 4. Análise. A partir da gravação, verificam-se os quatro critérios do §7.2.902: |Δt(t)| ≤ limite da classe para todo t ≤ T_h; SmpSynch inalterado em [0, T_h]; SmpCnt sem saltos; SmpSynch comuta a 0 antes de |Δt| ultrapassar o limite da classe.

Também é útil verificar como o dispositivo se comporta na restauração do sinal: se restaurado antes do fim do holdover, o fluxo deve continuar sem costuras; se depois — admite-se salto em SmpCnt e/ou mudança de SmpSynch em ASDUs adjacentes (NOTA 912, §6.904.7), e o subscritor deve detectar.

O que conta como "condições de pior caso"

§7.2.902 exige o teste em condições de pior caso. Na prática, isso significa um conjunto de fatores que aceleram a deriva do oscilador interno:

  • operação nas extremidades da faixa de temperatura especificada para o DUT (geralmente em câmara térmica nos limites inferior e superior);
  • pré-condicionamento na temperatura limite, para excluir a fase inicial de auto-aquecimento;
  • se aplicável — teste com solicitações de EMC (ver as seções correspondentes da IEC 61869-9).

Se o T_h declarado for válido apenas para "temperatura estável" (formulação explicitamente permitida pelo §6.904.5), a câmara térmica não é obrigatória, mas a ausência dessas condições deve ser registrada no relatório.

O que costuma ocorrer na prática

O ciclo completo de teste de holdover é um ensaio de longa duração (para T_h de dezenas de minutos ou horas, o tempo real do teste é comparável) e é executado em sua íntegra somente em laboratórios acreditados (KEMA/DNV, VDE, KERI, etc.) durante a aprovação de tipo — o resultado fica registrado no certificado de tipo. Em testes de aceitação de fábrica e de comissionamento de subestação, geralmente usa-se uma versão "curta": o PTP é desligado por 5–10 segundos e confirma-se que durante esse tempo o fluxo SV continua, o SmpSynch não muda e o SmpCnt corre sem saltos. Isso confirma que o mecanismo de holdover funciona, mas não a sua duração declarada.

Um teste longo (até o T_h completo) faz sentido incluir nas especificações técnicas para protótipos, no lançamento de uma nova geração e em investigações pericial após incidentes em que o real comportamento do holdover esteja em dúvida. Note-se também que o próprio grandmaster PTP tem seu próprio holdover, verificado por método análogo descrito em IEC/IEEE 61850-9-3.

O que dizem a IEC 61850-9-3 e o PTP Power Profile

A IEC 61869-9 descreve o comportamento do SAMU/NCIT e os valores de SmpSynch, mas a qualidade da própria rede de sincronização é regida por outro par de padrões: IEC/IEEE 61850-9-3 (Power Profile para PTP) e IEEE C37.238. É importante manter essa ligação em mente, caso contrário o atributo SmpSynch é percebido como "coisa em si".

O Power Profile define o atributo clockClass no grandmaster (transmitido em Announce) e seus valores típicos para sistemas de potência:

  • clockClass = 6 — relógio travado a uma referência externa (tipicamente GNSS), precisão ≤ 250 ns. Os subscritores recebem sinal com timeTraceable=TRUE → o SAMU/NCIT publica SmpSynch=2.
  • clockClass = 7 — relógio em holdover após travamento anterior, precisão ainda ≤ 250 ns. timeTraceable normalmente permanece TRUE; SmpSynch no SAMU/NCIT permanece 2.
  • clockClass = 52 — holdover, precisão derivou para a faixa 250 ns – 1 µs. timeTraceable=FALSE; o SAMU/NCIT passa a SmpSynch=1 (ou 5–254 se houver GRANDMASTER_ID no TLV).
  • clockClass = 187 — holdover, precisão pior que 1 µs. O fluxo SV com tal sincronização já não atende à classe do canal de medição e deve ser publicado com SmpSynch=0.

Em outras palavras, a transição SmpSynch 2 → 1 (em vez de 2 → 0) em um fluxo não é "o SAMU/NCIT perdeu o sinal", mas sim "o grandmaster passou de clockClass 7 para clockClass 52". Se o grandmaster degrada-se a ponto de chegar a clockClass 187, entra em ação o holdover do próprio SAMU/NCIT, e SmpSynch=0 surge pela lógica descrita anteriormente.

Daí — recomendações típicas:

  • Grandmasters redundantes, cada um com seu receptor GNSS, com BMCA coordenada. A falha de um receptor ou de um dispositivo não deve levar o domínio a clockClass 52.
  • Boundary clocks em cada prédio de controle / sala GIS. Quando a conexão entre prédios cai, a referência de tempo local é preservada e o SAMU/NCIT não precisa trocar de SmpSynch.
  • Configuração uniforme do perfil PTP: número de domínio, mecanismo de atraso (E2E/P2P), taxas de Sync/Announce, prioridades BMCA, comportamento em holdover devem ser coordenados entre grandmasters, switches PTP-aware, SAMUs/NCITs e protection IEDs.
  • Folga de holdover na rede: dispositivos com OCXO termo-controlados mantêm clockClass 7 por dezenas de minutos; dispositivos com Rb, por horas. Crucial para instalações sujeitas a perda total de GNSS no lado da subestação.
  • Testar transições — não só perda de sinal no SAMU/NCIT (teste §7.2.902 da IEC 61869-9), mas também transições do grandmaster 6 → 7 → 52 → 187 — no lado do subscritor, testar a lógica de reação a 2 → 1 → 0 e a saltos em SmpCnt.

Recomendações práticas para projeto e comissionamento

  • Comparar pares de SmpSynch, não valores isolados. Um subscritor de proteção complexa deve verificar se as fontes de todos os fluxos do seu algoritmo coincidem.
  • Prever folga de holdover. Os 5 segundos mínimos do padrão são o limite inferior. Para que as proteções resistam a falhas transitórias de PTP/1PPS, escolha SAMUs/NCITs e grandmasters com holdover de dezenas de minutos.
  • Redundar a fonte de tempo. Duplicar o grandmaster, cada um com seu receptor GPS/GLONASS.
  • Buscar uma fonte única por proteção. Onde a topologia permitir, alimentar correntes e tensões da mesma proteção complexa a partir do mesmo SAMU/NCIT — assim a questão de combinar SmpSynch nem se coloca.
  • Configuração uniforme do perfil PTP: número de domínio, mecanismo de atraso (E2E/P2P), taxas de Sync/Announce, prioridades BMCA, comportamento em holdover — coordenados entre grandmasters, switches PTP-aware, SAMUs/NCITs e protection IEDs.
  • Boundary clocks em cada prédio de controle / sala GIS. Quando a conexão entre prédios cai, a referência de tempo local é preservada e o SAMU/NCIT não precisa trocar de SmpSynch.
  • Testar transições. O teste §7.2.902 é requisito para o SAMU/NCIT; no lado do subscritor, teste a lógica para 2→0, 2→1, saltos em SmpCnt; na rede — transições do grandmaster 6 → 7 → 52 → 187.

Conclusão

A imagem "2 → 1 → 0" às vezes formulada em discussões simplifica o comportamento real do SAMU/NCIT e leva a conclusões incorretas. A IEC 61869-9 descreve outra transição: "2 → (holdover, SmpSynch permanece 2) → 0", e o valor 1 surge em outro cenário — quando muda o estado do próprio grandmaster, o que é fisicamente comunicado pela flag timeTraceable nas mensagens Announce do domínio PTP.

Para um subscritor de proteção complexa, isso se traduz em uma regra simples: o par "SmpSynch=2 e SmpSynch=1", em geral, não é considerado sincronizado, e nessa combinação as funções de proteção que dependem de comparação entre fluxos devem ser bloqueadas.

E uma observação arquitetural final: a pergunta "ainda está sincronizado?" sequer surge quando a proteção complexa recebe sinais de um único SAMU/NCIT. Por isso, ao projetar uma subestação digital, olhe não apenas para o sistema de sincronização em si, mas também para a distribuição de funções entre os SAMUs/NCITs — quanto menos dependências entre dispositivos houver em uma proteção, menos pontos de falha relacionados ao estado do SmpSynch ela carrega.