Protocolos / DNP3

DNP3: guia completo para automação elétrica

Guia completo de DNP3 para automação elétrica: arquitetura, parâmetros, eventos, configuração, comissionamento e diagnóstico em redes OT.

15 min de leituraPublicado em 25/08/2026
Ilustração técnica autoral para DNP3: guia completo para automação elétrica, destacando o fluxo e os elementos centrais do assunto.
Ilustração técnica autoral do Portal da Automação, criada para o foco específico deste artigo.

DNP3 serial: como ler o quadro e a pilha

Diagrama do quadro DNP3 serial com Start, Length, Link Control, endereços, CRC, User Data e pilha de funções.
Diagrama próprio do Portal da Automação. Use-o como mapa durante configuração, captura e troubleshooting.

Como ler esta figura

Start 0x05 0x64

Delimita o início de um frame DNP3. É a primeira evidência de que o receptor está vendo um quadro com framing DNP3 válido.

Na implementação: Se a sequência não aparece onde deveria, verifique serial, direção TX/RX, conversor e captura antes de mexer em objetos ou polling.

Length

Define o comprimento indicado pelo frame. Tamanho incoerente ou quadro truncado costuma revelar problema abaixo da aplicação.

Na implementação: Compare o valor declarado com os bytes realmente recebidos quando houver timeouts somente em respostas maiores.

Link Control

Indica direção e função da camada de enlace. Não confunda esse campo com o Function Code da camada de aplicação.

Na implementação: Use-o para separar falha de enlace, confirmação e estado de link de uma falha de READ/OPERATE/UNSOLICITED.

Destination / Source

São endereços lógicos DNP3. Eles continuam existindo mesmo quando o transporte é TCP/IP.

Na implementação: Uma conexão TCP pode estar estabelecida e ainda assim não haver resposta de aplicação se os endereços DNP3 não coincidirem.

CRC

Protege o cabeçalho e blocos de dados contra corrupção.

Na implementação: CRC recorrente pede análise de ruído, polaridade RS-485, aterramento, baud/paridade e comportamento de conversores/radios.

User Data

Transporta fragmentos que chegam à aplicação: objetos, eventos, confirmações, comandos e informações internas.

Na implementação: Depois de provar o enlace, é aqui que Group/Variation/Qualifier, classes, IIN e Function Codes passam a dominar o diagnóstico.

Objetos DNP3 frequentes no campo

GroupUsoO que conferir na captura
G1 / G2Binary Input estático / eventoVariation, flags, índice e timestamp do evento quando aplicável.
G10 / G12Binary Output Status / CROBEstado retornado, Function Code de controle e status da operação.
G20 / G22Counter estático / eventoLargura do contador, flags, índice e transição que gerou evento.
G30 / G32Analog Input estático / eventoFormato inteiro/float, flags, deadband e timestamp quando previsto.
G50Time and DateValor temporal, origem do sincronismo e coerência com SOE.
G60Class dataClasses solicitadas, eventos pendentes e relação com IIN1.1–IIN1.3.

Matriz específica — DNP3 / visão geral

Campo/elementoValor ou representaçãoComo fechar a evidência
Source / Destination · visão geralendereço DNPConfirmar master/outstation corretos.
TCP/UDP 20000 · visão geraltransporte típicoConfirmar porta efetivamente configurada.
Function Code · visão geralação de aplicaçãoRelacionar request/response e efeito.
Group/Variation + IIN · visão geralobjeto + estadoExplicar dado e condição da outstation.

A matriz foi escolhida pelo foco “DNP3” e pela lente “visão geral”; referências normativas e limites de fabricante continuam prevalecendo.

SCADA/IED — campos obrigatórios para “DNP3”

Campo/etapaExemplo de evidênciaFalha concreta
Valor brutocontador/registro/objeto recebidoEscala errada mascarada pela IHM.
Scaling + unidadeganho, offset, EUValor numericamente plausível porém incorreto.
Qualitygood/bad/invalid/blocked/substituted conforme protocoloSCADA exibe dado sem indicar validade.
Source timestamptempo gerado no IED/RTUSOE fora de ordem por relógio ou perda de timestamp.
Receive/display timetempo no FEP/SCADALatência de transporte/processamento.
Command lifecycleenvio, ack, atuação e retornoAck de protocolo sem atuação física.

Mapa técnico de DNP3: quem produz, quem consome e o que pode falhar

DNP3 Secure Authentication adiciona mecanismos para autenticar operações sensíveis e reduzir risco de comandos forjados ou repetidos. Ele não substitui segmentação, hardening, controle de acesso e proteção do transporte/rede.

Para aprender DNP3 sem depender de uma tela específica de fabricante, separe função, entradas, saídas e dependências. Em DNP3, os pontos mais próximos deste recorte são retry, keepalive, reconnect. O leitor iniciante deve conseguir dizer quem produz a informação e quem a usa; o leitor experiente deve conseguir apontar o limite entre comportamento normal, exceção e implementação particular do equipamento.

A cadeia causal de DNP3: o que muda e onde observar

Documente versão/perfil suportado, usuários/roles quando aplicável, material de chave, ciclo de troca, armazenamento e procedimento de recuperação. Segurança deve fazer parte da engenharia de interoperabilidade desde o início.

Implemente primeiro uma troca mínima e conhecida entre as duas pontas. Depois acrescente eventos, exceções, temporização e funções opcionais. Uma sessão estabelecida não é critério suficiente: o dado precisa manter tipo, qualidade, endereço, sequência e tempo até o destino. Durante o estudo, acompanhe porta TCP padrão 20000, retry, keepalive, reconnect como uma cadeia causal. Para cada item, pergunte o que o altera, como aparece no tráfego ou no equipamento e qual seria o primeiro sintoma se estivesse incorreto.

  • porta TCP padrão 20000 — defina primeiro o que representa em DNP3 e qual elemento produz ou consome essa informação; depois identifique em que condição ele muda.
  • retry — relacione o valor ou estado ao efeito sobre DNP3; registre também qual campo permite confirmar que a interpretação está correta.
  • keepalive — na configuração, verifique dependências nas duas pontas e evite copiar valor de outro projeto sem comparar topologia, versão e capacidade do equipamento.
  • reconnect — no diagnóstico, associe pelo menos um sintoma de configuração errada e uma evidência que diferencie esse sintoma de falha física ou de rede.
  • Secure Authentication — no comissionamento, crie um estímulo que faça o item mudar de forma previsível e registre antes/depois, horário e resposta observada.

Do primeiro contato ao modelo mental correto

Se você está conhecendo DNP3 agora, não comece decorando parâmetros. Primeiro localize o elemento dentro de DNP3 e responda quatro perguntas: quem produz a informação, quem a consome, o que muda durante uma transação e qual evidência aparece quando algo falha. Para este assunto, use porta TCP padrão 20000, retry, keepalive como marcos do fluxo.

Neste recorte de DNP3, trate porta TCP padrão 20000, retry e keepalive como três pontos de prova. Explique o que cada um representa, o que deveria acontecer antes e depois de uma mudança e qual evidência seria incompatível com a hipótese inicial. Assim o texto permanece útil para implementação e troubleshooting.

  • Desenhar o fluxo de DNP3 sem consultar a tela do fabricante
  • Explicar onde porta TCP padrão 20000 entra e que evidência deixa
  • Explicar onde retry entra e que evidência deixa
  • Explicar onde keepalive entra e que evidência deixa

Da bancada à operação: um cenário para aplicar DNP3

Imagine uma integração nova em que DNP3 precisa funcionar entre equipamentos de fabricantes diferentes dentro de DNP3. Comece por uma transação mínima e observável nas duas pontas. Acompanhe porta TCP padrão 20000, retry e keepalive, além de endereço/identidade, sequência e tempo. Depois introduza uma única exceção — perda do enlace, reinício, evento pendente ou função não suportada — e observe qual estado muda primeiro. Esse exercício mostra se a interoperabilidade existe no mecanismo ou apenas na condição ideal.

O aceite de DNP3 precisa responder quem inicia a transação, qual resposta confirma porta TCP padrão 20000, como retry se comporta em exceção e qual log ou captura prova keepalive. Esses critérios tornam o artigo útil tanto na configuração inicial quanto anos depois, quando outra equipe precisar comparar a ocorrência com o baseline.

  • Definir uma condição normal de DNP3 e salvar a evidência associada a porta TCP padrão 20000.
  • Escolher uma única variável relacionada a retry e prever o efeito antes de alterar.
  • Repetir o mesmo teste e comparar keepalive nas mesmas medições ou campos.
  • Registrar o critério que permite aceitar, rejeitar ou reverter a configuração de DNP3.

Como demonstrar que DNP3 foi implementado corretamente

Teste autenticação válida, credencial/chave inválida, expiração e recuperação em ambiente controlado. Confirme logs dos dois lados e impacto sobre comandos.

Defina evidência antes de testar DNP3. Para esta categoria, sinais úteis incluem endereço, campo, estado, sequência, timestamp, qualidade. O teste deve ter estado inicial conhecido, estímulo reproduzível e resultado esperado. Quando houver dois equipamentos, registre os dois lados; quando houver gateway, registre também a transformação intermediária.

  • Validar porta TCP padrão 20000 em condição normal
  • Forçar uma condição degradada ligada a retry
  • Confirmar recuperação sem perder estado, evento ou evidência relevante
  • Salvar configuração, logs/captura e horário do teste como baseline

Árvore de falhas de DNP3: onde procurar antes de alterar parâmetros

Falha apenas em controles protegidos com telemetria normal direciona o diagnóstico para autenticação, chave, usuário ou política, não para conectividade básica.

Não conclua a partir do sintoma sozinho. Para DNP3, cruze pelo menos duas fontes de evidência e procure a primeira divergência. Se porta TCP padrão 20000, retry, keepalive estão corretos mas o resultado final continua errado, avance para a próxima fronteira do sistema em vez de alterar parâmetros já comprovados.

  • porta TCP padrão 20000: registre um caso saudável, um caso com falha e a diferença objetiva em estado.
  • retry: registre um caso saudável, um caso com falha e a diferença objetiva em sequência.
  • keepalive: registre um caso saudável, um caso com falha e a diferença objetiva em timestamp.
  • reconnect: registre um caso saudável, um caso com falha e a diferença objetiva em qualidade.

Como o conceito se encaixa na arquitetura

Para que DNP3 seja reproduzível em DNP3, transforme a definição em uma cadeia causa → estado → evidência. Compare porta TCP padrão 20000 em condição normal e degradada, verifique a dependência de retry e use keepalive como critério de encerramento. O objetivo é justificar a configuração sem depender de “valor que sempre usamos”.

Para entender DNP3, desenhe o fluxo completo dentro de DNP3: origem da informação, transformação, transporte, recepção e uso final. Marque em cada etapa quais identificadores, estados e temporizações são preservados. Esse mapa transforma uma definição abstrata em arquitetura de engenharia.

Uma boa visão geral também precisa declarar limites. Pergunte o que DNP3 resolve, o que não resolve e de quais serviços depende. Essa distinção evita usar um mecanismo fora do seu propósito e ajuda a escolher onde medir quando o comportamento real diverge do esperado.

DNP3: do conceito à configuração DNP3

Para implementar DNP3 sem decorar telas de fabricante, comece pelo modelo master/outstation e identifique em qual camada o mecanismo aparece. DNP3 mantém endereços lógicos próprios, objetos tipados, classes de evento, flags de qualidade, timestamps e Function Codes. O transporte pode ser serial ou IP, mas a semântica da aplicação continua existindo acima do meio. Antes de alterar qualquer parâmetro, registre Source/Destination Address, função do equipamento, transporte, perfil/capacidades e como o SCADA espera receber o dado.

A pergunta útil para cada ajuste de DNP3 é: “qual comportamento muda no fio e qual evidência prova que funcionou?”. Se a mudança não produz uma mensagem, contador, estado ou resultado observável, ela ainda não está validada. Em DNP3, uma sessão TCP ou um Request Link Status bem-sucedido prova apenas parte do caminho; leitura de objetos, eventos, confirmações, tempo e controles precisam de casos de teste próprios.

  • Endereço DNP3 — identifica logicamente master/outstation; endereço errado pode manter TCP conectado e ainda gerar silêncio de aplicação.
  • Group/Variation/Qualifier — define tipo, representação, faixa/índice, flags e timestamp; erro aqui costuma aparecer como ponto ausente, deslocado ou com tipo incorreto.
  • Class 0 — visão estática usada para reconstruir estado; não preserva sozinha a sequência histórica de eventos.
  • Classes 1/2/3 — filas/prioridades de eventos definidas pela engenharia; precisam casar com polling/unsolicited e tamanho de buffer.
  • Deadband — decide quando variação analógica vira evento; pequena demais cria chatter/carga, grande demais esconde mudança relevante.
  • Event buffer — precisa suportar a taxa de mudanças durante a indisponibilidade máxima plausível, não apenas a condição média.
  • Timeout/retry — deve refletir RTT, meio, serialização e capacidade do equipamento; aumentar sem medir pode apenas mascarar problema.

Estados especiais que um projeto DNP3 precisa prever

Mesmo quando DNP3 é o assunto principal, o canal precisa ser desenhado para restart, perda de tempo, fila cheia, perda de master e retorno da comunicação. IIN bits ajudam a comunicar essas condições. Restart informa que a outstation reiniciou; Need Time indica necessidade de sincronização; flags de classes mostram eventos pendentes; overflow revela que a trilha de eventos pode estar incompleta. Esses estados precisam gerar uma ação conhecida do master e uma evidência no comissionamento.

Cold Restart (Function Code 13/0x0D) e Warm Restart (14/0x0E) não devem ser usados como “reiniciar para ver se volta”. Cold pede reinicialização completa do hardware/software conforme a implementação; warm pede reinicialização parcial. O que é preservado ou reiniciado depende do fabricante. Após restart, valide integridade, classes, horário, unsolicited e permissões de comando em vez de considerar o canal recuperado apenas porque voltou a responder.

  • Unsolicited — valide ENABLE/DISABLE, classes, sequência, confirmação, retries e comportamento após reconexão.
  • Time sync — confirme origem do tempo, timezone/UTC, Need Time, qualidade e preservação do timestamp em gateways.
  • Select Before Operate — teste Select aceito, expiração, Operate, mudança de intertravamento entre etapas e perda do link.
  • Direct Operate — use somente quando a filosofia e o equipamento permitirem; comprove retorno de status separadamente da resposta de protocolo.
  • CROB — documente pulse/latch, duração, Trip/Close quando aplicável, feedback e permissões local/remoto.

Roteiro de implementação e troubleshooting DNP3

Implemente DNP3 em camadas. Primeiro prove o meio: serial com baud/paridade/polaridade/terminação ou IP com rota/ACL/TCP 20000. Depois prove o enlace e endereços DNP. Em seguida leia um conjunto pequeno de objetos conhecidos, compare valor bruto, flags e timestamps e só então habilite classes, unsolicited, controles e funções opcionais. Essa ordem torna o diagnóstico determinístico.

No Wireshark ou analisador DNP3, acompanhe a transação inteira: request, Function Code, objetos, sequence, IIN, response e confirmação quando exigida. Compare um caso bom e um ruim. Se valores estáticos estão certos mas eventos somem, investigue classe/buffer/overflow/deadband; se todos os objetos falham, volte a endereço, transporte e capacidade; se apenas comandos falham, separe resposta de protocolo, intertravamento local e feedback físico.

  • Aceite mínimo: leitura estática, eventos por classe, integridade, tempo, perda/retorno do link e comportamento pós-restart.
  • Quando houver comandos: testar permitido, bloqueado, timeout, retorno de status e repetição segura.
  • Preservar PCAP, logs, Device Profile, mapa de pontos e versão de configuração como baseline do canal.

DNP3: dados exclusivos deste recorte (visão geral)

Uma captura de DNP3 deve mostrar Source/Destination da Data Link, sequência de aplicação, Function Code, Group/Variation, qualifier/range e IIN. Em DNP3 sobre IP, TCP/UDP 20000 é a porta registrada normalmente usada, mas o valor real deve ser confirmado no projeto e na captura.

Na visão geral de DNP3, o leitor deve conseguir localizar Source / Destination e TCP/UDP 20000 no fluxo real e dizer qual componente produz cada evidência.

  • Source / Destination: endereço DNP. Confirmar master/outstation corretos.
  • TCP/UDP 20000: transporte típico. Confirmar porta efetivamente configurada.
  • Function Code: ação de aplicação. Relacionar request/response e efeito.
  • Group/Variation + IIN: objeto + estado. Explicar dado e condição da outstation.

DNP3: objeto DNP3 em Group/Variation, qualifier e índice — DNP3 / visão geral

No mapa funcional de DNP3, use Communication Lost para localizar onde o fenômeno nasce e em qual equipamento a evidência deve aparecer. O ponto DNP3 só é interpretável quando Group, Variation, qualifier e faixa/índice são lidos em conjunto. Group 1 representa Binary Input estático e Group 2 seus eventos; Group 10 representa Binary Output Status e Group 12 Control Relay Output Block; Group 20/22 tratam Counter estático/evento; Group 30/32 representam Analog Input estático/evento. A Variation define representação e presença de flags/timestamp, portanto dois equipamentos podem “ter o mesmo ponto” e ainda assim discordar do formato aceito. O critério de encerramento para DNP3 em visão geral é obter o mesmo resultado em novo teste de Communication Lost, mantendo o ponto de medição e a condição inicial.

Para entender DNP3 sem abstração excessiva, acompanhe Over Range da origem ao consumidor e marque a fronteira em que seu estado pode mudar. No diagnóstico de DNP3, capture a requisição e a resposta e confira Function Code, Group, Variation, qualifier e range. Object Unknown ou Parameter Error no IIN frequentemente nasce exatamente dessa combinação. Em gateway, preserve uma tabela explícita entre o objeto DNP3 recebido e o tipo/qualidade/timestamp entregue ao SCADA. Para este artigo de DNP3, a evidência ligada a Over Range deve ser armazenada com horário, origem e condição de teste, permitindo comparação posterior.

  • DNP3 · visão geral · Communication Lost: Exemplo: G1/G2 separa Binary Input estático de evento; G30/G32 faz o mesmo para Analog Input.
  • DNP3 · visão geral · Remote Forced: Conferir se a Variation usada no evento inclui flags e/ou tempo conforme a necessidade de SOE.
  • DNP3 · visão geral · Local Forced: Registrar qualifier e range porque eles definem como índices/contagens são codificados.
  • DNP3 · visão geral · Over Range: Em multivendor, validar objetos efetivamente suportados no Device Profile.

DNP3: valor, qualidade, tempo e ciclo de comando ponta a ponta — DNP3 / visão geral

Para entender DNP3 sem abstração excessiva, acompanhe serial da origem ao consumidor e marque a fronteira em que seu estado pode mudar. Um ponto SCADA não é apenas um valor. Para DNP3, registre endereço/tag de origem, valor bruto, escala/unidade, quality, timestamp de origem, timestamp de recepção e timestamp de apresentação. Deadband deve ser expressa na unidade ou porcentagem definida e testada em torno do limiar; SOE exige preservar a ordem pelo tempo de origem, não pela ordem de chegada ao servidor. Se serial não reproduzir o comportamento esperado em DNP3, a hipótese deve ser revista antes de alterar outra camada do sistema.

A visão geral de DNP3 fica útil quando keepalive é ligado ao fluxo físico/lógico real, e não apenas a uma definição de glossário. Comandos precisam ser separados em intenção, envio pelo protocolo, confirmação de protocolo, atuação do equipamento e retorno de posição. Em religador/IED/RTU, um “operate success” sem mudança do contato ou telemetria não encerra o teste. Em historian, preserve raw value, quality e source timestamp antes de qualquer agregação. Em alarmes, registre condição de entrada, prioridade, debounce/deadband, ack e retorno ao normal. O critério de encerramento para DNP3 em visão geral é obter o mesmo resultado em novo teste de keepalive, mantendo o ponto de medição e a condição inicial.

  • DNP3 · visão geral · TCP: Telemetria: raw → scaling → engineering unit → quality → source timestamp → SCADA timestamp.
  • DNP3 · visão geral · UDP: SOE: comparar timestamp de origem e sequência recebida em uma rajada de eventos.
  • DNP3 · visão geral · serial: Comando: request → protocol confirmation → physical action → indication/return.
  • DNP3 · visão geral · porta TCP padrão 20000: Historian: validar valor, quality e timestamp antes de compressão/agregação.

Referências técnicas

As explicações do Portal são autorais. Use as fontes oficiais e materiais públicos de implementação abaixo para confirmar edição, escopo, capacidades e comportamento do equipamento utilizado no seu projeto.

Continue estudando

Os próximos conteúdos foram escolhidos pelo mecanismo deste artigo. A ideia é formar uma sequência técnica, não apenas listar páginas do mesmo tema.

Ver todas as trilhas de estudo →