DNP3: guia completo para automação elétrica
Entenda DNP3 do meio físico ao SCADA: master e outstation, camadas, endereços, objetos, classes, eventos, tempo, unsolicited, comandos, transporte IP/serial e roteiro de comissionamento.
DNP3 serial: como ler o quadro e a pilha
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.
Mapa mental do DNP3 por camada e evidência
| Camada/tema | Pergunta de engenharia | Evidência útil |
|---|---|---|
| Meio físico | Os bits chegam sem degradação? | Erros, CRC, níveis, polaridade, counters, oscilação/ruído quando necessário |
| Transporte | Serial ou IP/TCP está estabelecido? | Baud/paridade ou SYN/SYN-ACK/ACK, rota, ACL, porta |
| Enlace DNP3 | Origem/destino e framing são válidos? | Source, Destination, Link Control, CRC |
| Aplicação | A função e os objetos pedidos são suportados? | Function Code, Group/Variation, Qualifier, IIN |
| Eventos | Mudanças são preservadas e coletadas? | Classes, event buffer, deadband, timestamps, overflow |
| Controle | A ordem chega, é autorizada e retorna estado coerente? | Select/Operate ou Direct Operate, CROB, status e logs do equipamento |
O mesmo sintoma no SCADA pode nascer em qualquer uma dessas camadas; localize a primeira divergência observável.
Checklist mínimo da folha de parâmetros DNP3
| Grupo | Registrar | Por quê |
|---|---|---|
| Identidade | IP/serial, endereço DNP3 master/outstation, porta/canal | Evita confundir endereçamento de rede com endereçamento DNP3 |
| Pontos | Índice, Group/Variation, classe, unidade, escala, qualidade | Preserva semântica de ponta a ponta |
| Eventos | Deadband, classe, buffer, política de polling/unsolicited | Dimensiona quantidade, latência e retenção de eventos |
| Tempo | Fonte, método de sincronismo, tolerância e timezone de apresentação | Mantém SOE e correlação entre sistemas |
| Controles | Objeto, modelo de operação, timeout, intertravamentos, autoridade | Impede comando tecnicamente válido mas operacionalmente inseguro |
DNP3 não é apenas uma porta TCP: é um protocolo de telecontrole completo
DNP3, Distributed Network Protocol, é um protocolo de comunicação projetado para supervisão e controle de sistemas distribuídos. Em automação elétrica ele aparece entre centros de operação, front-ends, gateways, RTUs, religadores, controladores e IEDs. A referência normativa central é a IEEE 1815. A primeira ideia que precisa ficar clara é que DNP3 não se resume à porta TCP 20000: o protocolo define funções de aplicação, objetos de dados, eventos, endereçamento, qualidade, tempo, confirmações, comandos e comportamento de uma estação remota diante de condições internas.
Uma integração pode ter Ethernet funcionando, IP alcançável e sessão TCP estabelecida e ainda assim falhar completamente em DNP3. O master pode estar consultando o endereço lógico errado; a outstation pode não suportar a Group/Variation pedida; o ponto pode estar em uma classe de evento não coletada; o comando pode exigir Select Before Operate; ou a resposta pode sinalizar em IIN que a função não é suportada. O diagnóstico profissional separa essas camadas em vez de chamar todo problema de “falha de comunicação”.
Arquitetura: master, outstation e o caminho até o processo
No modelo clássico, o master inicia a maior parte das transações e a outstation disponibiliza informações do processo e executa funções permitidas. Em uma arquitetura real, o master pode ser um front-end SCADA e a outstation pode ser um relé, RTU ou gateway que concentra vários equipamentos. O endereço IP identifica uma interface de rede; o endereço DNP3 identifica logicamente uma estação no protocolo. Esses identificadores pertencem a camadas diferentes e devem ser documentados separadamente.
O fluxo de engenharia deve ser lido de ponta a ponta: variável física ou lógica no equipamento, ponto interno do IED, objeto DNP3 correspondente, índice do ponto, classe de evento, timestamp e qualidade, transporte até o master, mapeamento no banco SCADA e uso pela operação. Se existir gateway, ele precisa ser tratado como equipamento ativo de tradução. O gateway pode mudar índice, qualidade, timestamp, deadband ou tipo de objeto; logo, não é um simples cabo.
- Master: cliente lógico que realiza READ, controles, sincronismo, integridade e gerenciamento da sessão conforme a implementação.
- Outstation: estação lógica que mantém dados estáticos, buffers de eventos, estados internos e serviços DNP3 expostos ao master.
- Ponto: instância de uma informação, normalmente identificada por tipo de objeto e índice.
- Device Profile: documento fundamental para saber o que cada implementação realmente suporta, evitando pressupor que todo equipamento implementa todo o padrão.
Objetos, Group, Variation e índice: onde o dado ganha significado
DNP3 organiza dados por objetos. Group identifica uma família de informação e Variation define uma representação específica daquela família. Um valor binário estático, um evento binário com tempo e um valor analógico com determinada largura ou representação não são “a mesma coisa com nomes diferentes”: cada representação possui estrutura e propósito próprios. O índice identifica qual ponto daquela família está sendo transportado.
Essa estrutura é uma das razões para DNP3 ser eficiente em telecontrole. O master pode solicitar integridade, dados estáticos, eventos ou objetos específicos. A outstation pode transportar apenas as mudanças registradas desde a coleta anterior, preservando timestamp quando o objeto de evento o suporta. Para comissionar corretamente, a tabela de pontos precisa registrar pelo menos índice, significado elétrico, Group/Variation esperado, classe, unidade, escala, deadband quando aplicável e comportamento de qualidade.
Class 0, Classes 1/2/3 e eventos: três conceitos que não devem ser misturados
Class 0 é usada para a visão estática configurada para uma leitura de integridade; Classes 1, 2 e 3 organizam eventos. Atribuir um ponto à Class 1 não significa que seu valor estático deixa de existir, nem que “classe menor é sempre mais rápida”. A prioridade operacional de cada classe é decisão de engenharia e depende de como o master faz polling ou habilita unsolicited.
Evento é uma mudança que a outstation registra para posterior entrega. Em um analógico, deadband determina quando uma mudança suficientemente significativa gera evento, conforme a implementação e o tipo de ponto. O buffer de eventos precisa sobreviver à indisponibilidade esperada do canal. Se o buffer estoura, o valor atual pode continuar correto, mas a sequência histórica de mudanças pode ter sido perdida. Para SOE e análise de ocorrências, essa diferença é decisiva.
Tempo, unsolicited e comandos: onde a integração deixa de ser superficial
DNP3 pode transportar timestamps associados a eventos e possui mecanismos para sincronização de tempo e indicação de necessidade de ajuste. Em aplicações de Sequence of Events, a hora deve ser avaliada como parte da cadeia completa: fonte de tempo, relógio da outstation, precisão, objeto usado, transporte do timestamp e tratamento no SCADA. Corrigir apenas o relógio do servidor não corrige um evento que foi timestampado incorretamente na origem.
Unsolicited Response permite que a outstation envie eventos sem aguardar uma consulta específica. Isso reduz latência de notificação, mas exige engenharia de classes, confirmações, retries, temporizações, buffers e comportamento após reconexão. Em comandos, o projeto deve saber se usa Direct Operate ou Select Before Operate, quais objetos de controle estão disponíveis, quais estados de retorno são aceitos e como intertravamentos locais se relacionam com a ordem remota.
Parâmetros que precisam aparecer na folha de engenharia
Não existe “configuração DNP3” representada por um único campo. A folha de engenharia precisa capturar parâmetros de várias camadas e registrar a origem de cada valor. Defaults de fabricante são ponto de partida, não prova de compatibilidade. Sempre compare master, outstation, rede e Device Profile.
- Endereço DNP3 local/remoto — O que é: identificador lógico de origem e destino. Efeito: endereço divergente impede a transação mesmo com TCP ativo. Validar: captura mostrando Source/Destination e configuração das duas pontas.
- Timeout e retries — O que é: limites de espera e repetição das transações. Efeito: valores agressivos criam retries falsos; valores excessivos atrasam detecção de falha. Validar: RTT real, captura temporal e logs do master.
- Classes de evento — O que é: associação de eventos às Classes 1/2/3. Efeito: determina como o master coleta ou recebe mudanças. Validar: gerar evento conhecido e acompanhar sua chegada e confirmação.
- Deadband — O que é: limiar para geração de evento analógico. Efeito: pequeno demais cria churn; grande demais esconde mudança relevante. Validar: variar o processo em passos conhecidos e observar eventos.
- Event buffer — O que é: capacidade de armazenar eventos ainda não entregues. Efeito: overflow pode destruir histórico. Validar: teste controlado de indisponibilidade e checagem de IIN/logs.
- Unsolicited — O que é: envio espontâneo de eventos pela outstation. Efeito: reduz latência, mas introduz confirmação e retries. Validar: enable/disable explícito, evento de teste e PCAP.
- Time sync — O que é: política de sincronização do relógio remoto. Efeito: afeta SOE e correlação temporal. Validar: comparar fonte, relógio da outstation, timestamp do evento e SCADA.
- Function/Control model — O que é: funções e métodos de controle aceitos. Efeito: determina se um comando será executado, recusado ou exigirá seleção prévia. Validar: Device Profile, resposta DNP3 e teste operacional autorizado.
Roteiro de comissionamento: prove cada camada em vez de procurar apenas “online”
Um bom comissionamento começa pela infraestrutura e avança para a semântica. Primeiro prove meio físico e enlace; depois IP/TCP quando houver; em seguida endereços DNP3, integridade, objetos, eventos, tempo, unsolicited e comandos. Para cada etapa salve evidência. O critério “o ponto apareceu na tela” é fraco porque não prova evento, qualidade, timestamp, recuperação nem controle.
Inclua pelo menos uma condição degradada: interrupção do canal, reboot controlado da outstation, perda de sincronismo ou retorno após indisponibilidade. Verifique se o master reconstrói o estado, coleta eventos pendentes, reconhece IIN, sincroniza tempo quando necessário e reabilita serviços configurados. O comportamento pós-falha é parte da interoperabilidade.
- 1. Registrar firmware, Device Profile, endereços, transporte e parâmetros atuais.
- 2. Provar conectividade física/rede sem ainda concluir que DNP3 está funcional.
- 3. Capturar uma transação válida e conferir Source, Destination, Function Code e resposta.
- 4. Executar integrity poll e confrontar quantidade/tipo de pontos com a lista de engenharia.
- 5. Forçar eventos digitais e analógicos conhecidos e verificar classe, timestamp e qualidade.
- 6. Testar unsolicited quando usado, incluindo confirmação e reconexão.
- 7. Testar controles apenas com autorização e matriz de causa/efeito disponível.
- 8. Salvar PCAP, logs, export de configuração e resultado esperado/obtido para cada caso.
Referências técnicas e normas
As explicações do Portal são autorais. Normas e fontes oficiais são priorizadas; materiais acadêmicos e documentação pública de fabricantes complementam a implementação e não substituem a edição normativa aplicável ao projeto.
- IEEE 1815-2012 — IEEE Standard for Electric Power Systems Communications—Distributed Network Protocol (DNP3) — IEEE Standards Association. Edição publicada de referência para estrutura, funções, opções interoperáveis e requisitos de conformidade do DNP3.
- IEEE P1815 — Draft Standard for Electric Power Systems Communications—Distributed Network Protocol (DNP3) — IEEE Standards Association. Página oficial do projeto de revisão da norma; útil para acompanhar a evolução do padrão sem substituir a edição publicada aplicável ao equipamento.
- Overview of DNP3 Protocol — DNP Users Group. Visão geral oficial do protocolo e do papel do DNP Users Group como mantenedor do DNP3/IEEE 1815.
- DNP Users Group — Public Documents — DNP Users Group. Documentos públicos, guias, boletins e materiais de implementação e interoperabilidade.
- Understanding DNP3 — Inductive Automation. Material didático complementar sobre conceitos e comportamento de DNP3; não substitui a norma.
- DNP3 — trabalho didático de Redes de Computadores — GTA/UFRJ. Material acadêmico introdutório útil para leitura guiada da arquitetura; deve ser confrontado com IEEE 1815 e documentação atual do fabricante.
- opendnp3 User Guide — Automatak / opendnp3. Guia público de uma implementação amplamente usada, útil para relacionar a norma a parâmetros reais de master e outstation.
- DNP3 Communication Protocol Solutions — Triangle MicroWorks. Referência de implementador para recursos como events, deadbands, unsolicited, time sync, file transfer e ferramentas de teste.
- DNP3 Application Layer Function Codes — Rockwell Automation. Exemplo público de fabricante para Function Codes, incluindo COLD_RESTART, WARM_RESTART e ENABLE/DISABLE_UNSOLICITED.
Continue estudando
Os próximos conteúdos foram escolhidos para formar uma sequência técnica, relacionando fundamento, configuração, diagnóstico e aplicação.