Detalhes de implementação do protocolo de sincronização de tempo PTPv2

Introdução

O conceito de construção de uma "Subestação Digital" no setor de energia elétrica requer sincronização com uma precisão de 1 μs. As transações financeiras também exigem precisão de microssegundos. Nessas aplicações, a precisão do tempo NTP não é mais suficiente.

O protocolo de sincronização PTPv2, descrito pelo padrão IEEE 1588v2, permite precisão de sincronização de várias dezenas de nanossegundos. O PTPv2 permite enviar pacotes de sincronização em redes L2 e L3.

As principais áreas em que o PTPv2 é usado são:

  • Engenharia de Energia;
  • equipamento de controle e medição;
  • complexo industrial militar;
  • Telecom
  • setor financeiro.

Esta publicação analisa como o protocolo de sincronização PTPv2 funciona.

Temos mais experiência no setor e geralmente encontramos esse protocolo em aplicações de energia. Nesse sentido, faremos a revisão de olho na energia .

Por que isso é necessário?

Atualmente, o STO 34.01-21-004-2019 do PJSC Rosseti e o STO 56947007-29.240.10.302-2020 do PJSC FGC UES contêm requisitos para organizar um barramento de processo com sincronização de tempo via PTPv2.

Isso se deve ao fato de os terminais de proteção de relé e os dispositivos de medição estarem conectados ao barramento de processo, que transmitem valores instantâneos de corrente e tensão usando os chamados fluxos SV (fluxos multicast) através do barramento de processo.

Os terminais de proteção de relé usam esses valores para implementar a proteção de conexão. Se a precisão das medições ao longo do tempo for pequena, algumas proteções podem funcionar falsamente.

Por exemplo, a proteção da seletividade absoluta pode se tornar vítima de sincronização de tempo "fraca". Freqüentemente, a lógica de tais defesas se baseia na comparação de dois valores. Se os valores divergem para um valor suficientemente grande, a proteção é acionada. Se esses valores forem medidos com uma precisão de 1 ms, você poderá obter uma grande diferença onde os valores são realmente normais, se você medi-los com uma precisão de 1 μs.

Versões de PTP

O protocolo PTP foi originalmente descrito em 2002 no padrão IEEE 1588-2002 e foi chamado de "Padrão para um Protocolo de Sincronização de Relógio de Precisão para Sistemas de Medição e Controle em Rede". Em 2008, foi lançado o padrão IEEE 1588-2008 atualizado, que descreve a versão 2. do PTP. Nesta versão do protocolo, a precisão e a estabilidade foram aprimoradas, mas a compatibilidade com a primeira versão do protocolo não foi preservada. Além disso, em 2019, foi lançada uma versão do padrão IEEE 1588-2019 que descreve o PTP v2.1. Esta versão adiciona pequenas melhorias ao PTPv2 e é compatível com o PTPv2.

Em outras palavras, temos a seguinte imagem com as versões:
PTPv1
(IEEE 1588-2002)
PTPv2
(IEEE 1588-2008)
PTPv2.1
(IEEE 1588-2019)
PTPv1 (IEEE 1588-2002)
-Incompatível
Incompatível
PTPv2 (IEEE 1588-2008)


PTPv2.1 (IEEE 1588-2019)



Mas, como sempre, existem nuances.

A incompatibilidade entre PTPv1 e PTPv2 sugere que um dispositivo com suporte a PTPv1 não poderá sincronizar a partir do relógio exato em execução no PTPv2. Eles usam diferentes formatos de mensagem para sincronização.

Mas você ainda pode combinar dispositivos com PTPv1 e dispositivos com PTPv2 na mesma rede. Para isso, alguns fabricantes permitem selecionar a versão do protocolo nas portas do relógio de borda. Ou seja, o relógio de limite pode ser sincronizado via PTPv2 e, ao mesmo tempo, sincronizar outros relógios conectados a ele por PTPv1 e PTPv2.

Dispositivos PTP. O que são e como eles diferem?

O padrão IEEE 1588v2 descreve vários tipos de dispositivos. Todos eles são apresentados na tabela.

Os dispositivos se comunicam via LAN usando PTP.

Os dispositivos PTP são chamados de relógios. Todos os relógios levam a hora exata do relógio grandmaster.

Existem 5 tipos de relógios:
Relógio Grandmaster
A principal fonte de tempo preciso. Frequentemente equipado com uma interface para conectar o GPS.
Relógio comum
Um dispositivo de porta única que pode ser um mestre (relógio mestre) ou um escravo (relógio mestre)
Horas principais (mestre)
Eles são a fonte do horário exato em que outros relógios são sincronizados.
Relógio Escravo (Escravo)
O dispositivo final que sincroniza a partir do relógio principal
Relógio de limite
Um dispositivo com várias portas, que pode ser um mestre ou um escravo.

Ou seja, este relógio pode sincronizar a partir de um relógio mestre mais alto e sincronizar um relógio escravo mais baixo.
End-to-end Transparent Clock ( , End-to-End)
, , . PTP .

PTP-.

.
Peer-to-Peer Transparent Clock ( , Peer-to-Peer)
Um dispositivo com várias portas que não é um relógio principal nem um escravo.
Ele transmite dados PTP entre duas horas.

Ao transmitir dados, o relógio transparente corrige todas as mensagens PTP Sync e Follow_Up (mais sobre elas são descritas abaixo).

A correção é alcançada adicionando ao campo do ajuste do pacote de atraso transmitido no dispositivo transmissor e o atraso no canal de dados.
Nó de Gerenciamento
Um dispositivo que configura e diagnostica outros relógios

Os relógios mestre e escravo são sincronizados usando carimbos de hora nas mensagens PTP. Existem dois tipos de mensagens no protocolo PTP:

  • As mensagens de evento são mensagens sincronizadas que envolvem a geração de um registro de data e hora no momento em que uma mensagem é enviada e no momento em que é recebida.
  • General Messages – ,

Event Messages
General Messages
Sync
Delay_Req
Pdelay_Req
Pdelay_Resp
Announce
Follow_Up
Delay_Resp
Pdelay_Resp_Follow_Up
Management
Signaling

A seguir, consideraremos todos os tipos de mensagens com mais detalhes.

Principais problemas de sincronização

Ao transmitir um pacote de sincronização por uma rede local, o atraso é feito no comutador e no canal de transmissão de dados. Qualquer opção fornecerá um atraso de cerca de 10 μs, o que é inaceitável para o PTPv2. Afinal, precisamos obter uma precisão de 1 μs no dispositivo final. (É quando se trata de energia. Outras aplicações podem exigir mais precisão.) O

IEEE 1588v2 descreve vários algoritmos de operação que permitem registrar o atraso e ajustá-lo.

Algoritmo operacional
Durante a operação normal, o protocolo opera em duas fases.

  • Fase 1 - Estabelecimento da hierarquia “Leading Clock - Slave Clock”.
  • Fase 2 - sincronização do relógio usando o mecanismo de ponta a ponta ou ponto a ponto.

Fase 1 - Configuração da hierarquia do escravo mestre

Cada porta de um relógio regular ou de fronteira tem um certo número de estados (relógio escravo e relógio mestre). O padrão descreve o algoritmo de transição entre esses estados. Na programação, esse algoritmo é chamado de máquina de estado ou máquina de estado (mais no Wiki).

Esta máquina de estado usa o Melhor algoritmo de relógio mestre (BMCA) para definir o mestre quando duas horas estiverem conectadas.

Esse algoritmo permite que o relógio assuma as obrigações de um relógio grandmaster quando um relógio grandmaster superior perde seu sinal de GPS, se desconecta da rede etc.

As transições de estado de acordo com o BMCA são mostradas brevemente no diagrama a seguir:


As informações sobre o relógio na outra extremidade do “fio” são enviadas em uma mensagem especial (Anunciar mensagem). Quando essas informações são recebidas, o algoritmo da máquina de estados processa e compara qual relógio é melhor. A porta dos melhores relógios se torna o principal relógio.

Uma hierarquia simples é apresentada no diagrama abaixo. Os caminhos 1, 2, 3, 4, 5 podem conter um relógio transparente (relógio transparente), mas eles não participam do estabelecimento da hierarquia “Relógio principal - relógio escravo”.



Fase 2 - Sincronização de um relógio normal e de limite

Imediatamente após o estabelecimento da hierarquia “Horas iniciais - Horas escravas”, é iniciada a fase de sincronização de um relógio regular e limite.

Para sincronização, o relógio mestre envia uma mensagem contendo um carimbo de hora para o relógio escravo.

Os principais horários podem ser:

  • estágio único;
  • duas etapas.

Um relógio de estágio único para sincronização envia uma mensagem de sincronização.

Um relógio de dois estágios usa duas mensagens para sincronização - Sync e Follow_Up.

Dois mecanismos podem ser usados ​​para a fase de sincronização:

  • Atraso no mecanismo de solicitação-resposta.
  • Mecanismo de medição de atraso de pares.

Para começar, consideraremos esses mecanismos no caso mais simples - quando relógios transparentes não forem usados.

Atraso no mecanismo de solicitação-resposta

O mecanismo possui duas etapas:

  1. Medição do atraso na transmissão de uma mensagem entre um relógio principal e um escravo. É realizado usando o mecanismo de solicitação-resposta de atraso.
  2. O deslocamento exato da hora é corrigido.

Medição de retardo


t1 - Sincronize o tempo de envio da mensagem pelo relógio principal; t2 - Sincronizar o tempo de recepção da mensagem pelo relógio escravo; t3 - Atraso no tempo de envio da solicitação (Delay_Req) ​​por hora do escravo; t4 - Atraso_Req da hora de recepção pelo relógio principal.

Quando o relógio secundário conhece o tempo t1, t2, t3 e t4, ele pode calcular o atraso médio na transmissão da mensagem de sincronização (tmpd). É calculado da seguinte forma:



Ao transmitir uma mensagem Sync e Follow_Up, o atraso de tempo do mestre para o escravo é calculado - t-ms.

Ao transmitir mensagens Delay_Req e Delay_Resp, o atraso de tempo do escravo para o mestre, t-sm, é calculado.

Se ocorrer alguma assimetria entre esses dois valores, aparecerá um erro na correção da partida do horário exato. O erro é causado pelo fato de o atraso calculado ser a média dos atrasos t-ms e t-sm. Se os atrasos não forem iguais, ajustaremos a hora incorretamente.

Corrigindo o deslocamento da hora exata

Depois que o atraso entre o relógio principal e o relógio secundário é conhecido, o relógio secundário executa a correção da hora.



O relógio escravo usa a mensagem Sync e a mensagem opcional Follow_Up para calcular o deslocamento exato do tempo ao transmitir o pacote do relógio mestre para o escravo. O deslocamento é calculado usando a seguinte fórmula:



Mecanismo de medição de atraso de pares

Esse mecanismo também usa duas etapas para sincronizar:

  1. . peer delay mechanism.
  2. .

Medição de atraso

ponto a ponto O atraso entre dispositivos ativados ponto a ponto é medido usando as seguintes mensagens:



Quando a porta 1 sabe os tempos t1, t2, t3 e t4, pode calcular o atraso médio (tmld ) É calculado usando a seguinte fórmula:



Em seguida, a porta usa esse valor para calcular o campo de ajuste para cada mensagem de sincronização ou mensagem opcional de Follow_Up que passa por este dispositivo.

O atraso total será igual à soma do atraso durante a transmissão através deste dispositivo, o atraso médio durante a transmissão através do canal de dados e o atraso já contido nesta mensagem, incluído nos dispositivos superiores.

As mensagens Pdelay_Req, Pdelay_Resp e Pdelay_Resp_Follow_Up opcionais permitem obter um atraso do mestre para o escravo e do escravo para o mestre (circular).

Qualquer assimetria entre esses dois valores introduzirá um erro preciso de correção do deslocamento no tempo.

Corrigindo o deslocamento da hora exata O



relógio escravo usa a mensagem Sync e a mensagem Follow_Up opcional para calcular o deslocamento da hora exata ao transmitir o pacote do relógio principal para o escravo. O deslocamento é calculado de acordo com a seguinte fórmula:



Vantagens do ajuste ponto a ponto - o atraso de tempo de cada mensagem de sincronização ou acompanhamento é calculado à medida que é transmitido na rede. Portanto, uma mudança no caminho da transmissão não afetará de maneira alguma a precisão do ajuste.

Ao usar esse mecanismo, a sincronização de tempo não exige o cálculo do atraso no caminho percorrido pelo pacote de sincronização, como é feito em uma troca básica. Essa. As mensagens Delay_Req e Delay_Resp não são enviadas. Nesse método, o atraso entre o relógio principal e os seguidores é simplesmente somado no campo de ajuste de cada mensagem de sincronização ou acompanhamento.

Outra vantagem é que o relógio de acionamento é descarregado devido à necessidade de processar mensagens Delay_Req.

Modos de operação de relógios transparentes

Assim, exemplos simples foram examinados. Agora, suponha que as opções apareçam no caminho de sincronização.

Se você usar comutadores sem suporte a PTPv2, o pacote de sincronização será atrasado em cerca de 10 µs no comutador.

Os comutadores com suporte a PTPv2 na terminologia IEEE 1588v2 são chamados de relógios transparentes. O relógio transparente não é sincronizado com o relógio principal e não participa da hierarquia "Relógio principal - Relógio secundário", mas ao transmitir mensagens de sincronização, eles lembram o quanto a mensagem foi atrasada por eles. Isso permite que você ajuste o atraso de tempo.

Um relógio transparente pode funcionar em dois modos:

  • De ponta a ponta.
  • Pessoa para pessoa.





Ponta a ponta (E2E) O relógio E2E transparente transmite mensagens de sincronização e mensagens de acompanhamento associadas a todas as portas. Mesmo aqueles que estão bloqueados por qualquer protocolo (por exemplo, RSTP).

O switch lembra o carimbo de data e hora quando o pacote Sync (Follow_Up) foi recebido na porta e quando foi enviado a partir da porta. Com base nesses dois registros de data e hora, o tempo de processamento do comutador para a mensagem é calculado. No padrão, esse tempo é chamado de tempo de permanência.

O tempo de processamento é adicionado ao campo correçãoField da mensagem Sincronizar (relógio de estágio único) ou Follow_Up (relógio de dois estágios).



O relógio transparente do E2E mede o tempo de processamento das mensagens Sync e Delay_Req que passam pelo comutador. Mas é importante entender que o atraso de tempo entre o relógio principal e o relógio escravo é calculado usando o mecanismo de solicitação-resposta de atraso. Se o relógio principal mudar ou o caminho do relógio principal para o escravo mudar, o atraso será medido novamente. Isso aumenta o tempo de transição no caso de alterações na rede.



O relógio P2P transparente, além de medir o tempo de processamento da mensagem pelo comutador, mede o atraso no canal de dados para o vizinho mais próximo, usando o mecanismo de medição de atraso do nó vizinho.

O atraso é medido em cada canal nas duas direções, incluindo os canais bloqueados por um protocolo (por exemplo, RSTP). Isso permite que você calcule imediatamente um novo atraso no caminho de sincronização se o relógio grandmaster ou a topologia de rede tiver sido alterada.

O tempo de processamento do switch e o tempo de atraso são acumulados ao transmitir mensagens Sync ou Follow_Up.

Tipos de suporte para comutadores PTPv2 Os

comutadores podem suportar PTPv2:

  • programaticamente;
  • hardware.

Na implementação de software do protocolo PTPv2, o switch solicita um carimbo de data / hora do firmware. O problema é que o firmware funciona ciclicamente e você terá que esperar até que ele termine o ciclo atual, levar a solicitação ao processamento e, após o próximo ciclo, emitir um carimbo de data / hora. Isso também levará tempo e receberemos um atraso, embora não seja tão significativo quanto sem o suporte de software para PTPv2.

Somente o suporte de hardware para PTPv2 permite manter a precisão necessária. Nesse caso, a emissão do registro de data e hora é realizada por um ASIC especial, instalado na porta.

Formato da mensagem

Todas as mensagens PTP consistem nos seguintes campos:

  • Cabeçalho - 34 bytes.
  • Corpo - o tamanho depende do tipo de mensagem.
  • Sufixo - opcional.



Cabeçalho

O campo Cabeçalho é o mesmo para todas as mensagens PTP. Seu tamanho é 34 bytes.

Formato do campo de cabeçalho:



messageType - contém o tipo de mensagem que está sendo enviada, por exemplo, Sincronização, Delay_Req, PDelay_Req, etc.

messageLength - contém o tamanho completo da mensagem PTP, incluindo cabeçalho, corpo e sufixo (mas excluindo bytes de preenchimento).

domainNumber - Determina a qual domínio PTP a mensagem pertence.

Um domínio são alguns relógios diferentes, reunidos em um grupo lógico e sincronizados a partir de um relógio principal, mas não necessariamente sincronizados com um relógio pertencente a outro domínio.

sinalizadores - este campo contém vários sinalizadores para identificar o status da mensagem.

correctField- contém o tempo de atraso em nanossegundos. O tempo de atraso inclui o atraso de transmissão através do relógio transparente, bem como o atraso de transmissão através do canal ao usar o modo Ponto a Ponto.

sourcePortIdentity - este campo contém informações sobre a porta de onde esta mensagem foi enviada originalmente.

sequenceID - contém o número de identificação para mensagens individuais.

controlField - campo de artefato =) Permanece da primeira versão do padrão e contém informações sobre o tipo desta mensagem. Essencialmente o mesmo que messageType, mas com menos opções.

logMessageInterval - este campo é determinado pelo tipo de mensagem.

Corpo

Como discutido acima, existem vários tipos de mensagens. Estes tipos são descritos abaixo:

Anunciar mensagem A mensagem de anúncio
é usada para "informar" outros relógios no mesmo domínio sobre suas configurações. Esta mensagem permite definir a hierarquia “Leading Clock - Slave Clock”.


Sincronização
mensagem uma mensagem de sincronização (Sync) é enviado pelo relógio mestre e contém a hora do relógio principal no momento que a mensagem de sincronização foi criado. Se o relógio principal for de dois estágios, o registro de data e hora na mensagem de sincronização será definido como 0 e o registro de data e hora atual será enviado na mensagem de acompanhamento emparelhada. A mensagem Sync é usada para ambos os mecanismos de medição de atraso.

A mensagem é transmitida usando multicast. Opcionalmente, você pode usar o Unicast.





Mensagem Delay_Req O formato da mensagem Delay_Req é idêntico à mensagem Sync. O relógio escravo envia Delay_Req. Ele contém a hora em que Delay_Req foi enviado pelo relógio escravo. Esta mensagem é usada apenas para o mecanismo de solicitação-resposta de atraso.

A mensagem é transmitida usando multicast. Opcionalmente, você pode usar o Unicast.



Mensagem Follow_Up A mensagem Follow_Up

é opcionalmente enviada pelo relógio principal e contém a hora em que o mestre enviou a mensagem de sincronização . A mensagem Follow_Up é enviada apenas por um relógio de duas etapas.

A mensagem Follow_Up é usada para os dois mecanismos de medição de atraso.

A mensagem é transmitida usando multicast. Opcionalmente, você pode usar o Unicast.



Delay_Resp da mensagem

A mensagem Delay_Resp é enviada pelo relógio principal. Ele contém a hora em que o Delay_Req é recebido pelo relógio principal. Esta mensagem é usada apenas para o mecanismo de solicitação-resposta de atraso.

A mensagem é transmitida usando multicast. Opcionalmente, você pode usar o Unicast. Mensagem



Pdelay_Req Uma

mensagem Pdelay_Req é enviada por um dispositivo que solicita um atraso. Ele contém o horário em que a mensagem foi enviada da porta deste dispositivo. Pdelay_Req é usado apenas para o mecanismo de medição de atraso do nó vizinho.



Mensagem Pdelay_Resp A mensagem Pdelay_Resp

é enviada pelo dispositivo que recebeu a solicitação de atraso. Ele contém o horário em que a mensagem Pdelay_Req foi recebida por este dispositivo. As mensagens Pdelay_Resp são usadas apenas para o mecanismo de medição de atraso do nó vizinho.



Mensagem Pdelay_Resp_Follow_Up A mensagem Pdelay_Resp_Follow_Up

é opcionalmente enviada pelo dispositivo que recebeu a solicitação de atraso. Ele contém o horário em que a mensagem Pdelay_Req foi recebida por este dispositivo. A mensagem Pdelay_Resp_Follow_Up é enviada apenas por um relógio principal de dois estágios.

Esta mensagem também pode ser usada para tempo de execução em vez de um carimbo de data / hora. O tempo de execução é o tempo desde o momento em que o Pdelay-Req é recebido até o envio do Pdelay_Resp.

Pdelay_Resp_Follow_Up são usados ​​apenas para o mecanismo de medição de atraso do nó vizinho.



Mensagens de controle (mensagem de gerenciamento) As

mensagens de controle PTP são necessárias para transferir informações entre um ou mais relógios e o nó de controle.



Transferir para LV

Uma mensagem PTP pode ser transmitida em dois níveis:

  • Rede - como parte dos dados IP.
  • Link - como parte de um quadro Ethernet.

Enviando uma mensagem PTP sobre UDP sobre IP sobre Ethernet Os perfis



PTP sobre UDP sobre Ethernet sobre PTP possuem muitos parâmetros "flexíveis" que precisam ser configurados. Por exemplo:







  • Opções de BMCA.
  • O mecanismo de medição de atraso.
  • Intervalos e valores iniciais de todos os parâmetros configuráveis, etc.

E, apesar do fato de que dissemos anteriormente que os dispositivos PTPv2 são compatíveis entre si, de uma maneira boa, não é. Os dispositivos devem ter as mesmas configurações para interagir.

Portanto, existem os chamados perfis PTPv2. Perfis são grupos de configurações definidas e certas restrições de protocolo para que você possa implementar a sincronização de horário para um aplicativo específico.

O próprio padrão IEEE 1588v2 descreve apenas um perfil - o “Perfil Padrão”. Todos os outros perfis são criados e descritos por várias organizações e associações.

Por exemplo, o Power Profile ou PTPv2 Power Profile foi criado pelo Comitê de Retransmissão de Sistemas de Potência e pelo Comitê de Subestação da Sociedade de Energia e Energia IEEE. O perfil em si é chamado IEEE C37.238-2011.

O perfil descreve que o PTP pode ser transmitido:

  • Somente através de redes L2 (ou seja, Ethernet, HSR, PRP, não IP).
  • As mensagens são transmitidas apenas pela lista de distribuição Multicast.
  • O mecanismo de medição de atraso de pares é usado como um mecanismo de medição de atraso.

O domínio padrão é 0, o domínio recomendado é 93.

A filosofia de criação do C37.238-2011 era o desejo de reduzir o número de recursos opcionais e deixar apenas as funções necessárias para uma interação confiável entre dispositivos e aumentar a estabilidade do sistema.

Além disso, a frequência de transmissão da mensagem é determinada:



De fato, apenas um parâmetro está disponível para seleção - o tipo do relógio principal (estágio único ou dois estágios).

A precisão não deve ser superior a 1 μs. Em outras palavras, um máximo de 15 relógios transparentes ou três horas limite podem estar contidos em um caminho de sincronização.


All Articles