DNP3 vs IEC 60870-5-104: diferenças de arquitetura, eventos, comandos e diagnóstico
Compare DNP3 e IEC 104 em telecontrole: modelo de dados, classes e eventos, polling, espontâneo, timestamps, endereçamento, comandos, TCP e operação de SCADA.
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.
IEC 104: APDU, I/S/U e parâmetros que controlam a sessão
Como ler esta figura
APCI / Control Field
Controla formato I/S/U, estado lógico e numeração N(S)/N(R).
Na implementação: Sequência travada, ACK atrasado ou TESTFR repetitivo deve ser correlacionado com timers e janelas, não só com TCP.
I-format
Transporta ASDU e usa números de envio e recebimento para acompanhar a sequência.
Na implementação: Compare N(S) e N(R) nos dois sentidos para encontrar a primeira divergência ou ACK ausente.
S-format
Confirma recepção sem transportar uma ASDU.
Na implementação: É diretamente relacionado ao controle de fluxo e ao limiar w/t2.
U-format
Executa STARTDT, STOPDT e TESTFR para controlar/testar a transferência.
Na implementação: STARTDT não é comando de processo; é habilitação da transferência de dados IEC 104.
ASDU
Type ID, VSQ, COT, CA e IOA dão significado às medidas, estados, eventos e comandos.
Na implementação: TCP saudável com CA/IOA/COT errados continua sendo uma integração quebrada.
t0, t1, t2, t3, k e w
Definem estabelecimento, confirmações, ociosidade e janelas de mensagens.
Na implementação: Dimensione usando RTT real, carga e requisitos da aplicação; não copie defaults entre fabricantes sem validar.
Classes DNP3 e comportamento do master
| Classe | Conteúdo típico | Teste de campo |
|---|---|---|
| Class 0 | Dados estáticos atuais | Integrity/Class 0 poll após conexão/restart e conferência do estado completo. |
| Class 1 | Eventos de maior prioridade do projeto | Gerar evento crítico, observar IIN1.1 e tempo até leitura/ack. |
| Class 2 | Eventos operacionais intermediários | Gerar rajada e validar fila, ordem e esvaziamento. |
| Class 3 | Eventos de menor prioridade | Validar que não ficam indefinidamente pendentes sob carga. |
| Overflow | Capacidade de evento excedida | Correlacionar IIN2.3 com lacuna potencial de SOE e revisar polling/buffer. |
Dois protocolos para telecontrole, mas com filosofias diferentes
DNP3 e IEC 60870-5-104 ocupam espaço semelhante em arquiteturas de supervisão: ambos transportam medições, estados, eventos e comandos entre centros de controle, front-ends, gateways e equipamentos remotos. Isso não os torna equivalentes campo a campo. DNP3 organiza informação por grupos e variações de objetos, índices e classes de eventos. IEC 104 organiza ASDUs por Type Identification, Cause of Transmission, Common Address e Information Object Address. A engenharia precisa mapear significado, qualidade e tempo, não apenas converter números.
IEC 104 trabalha sobre TCP e usa APCI com quadros I, S e U para controlar transferência e estado da conexão. DNP3 pode operar sobre serial ou IP e mantém mecanismos próprios de enlace, transporte e aplicação. Em DNP3 sobre TCP, o TCP fornece transporte confiável, mas a semântica de objetos, confirmações, classes, eventos e funções continua sendo DNP3. Em ambos os casos, 'porta conectada' não significa aplicação interoperável.
- DNP3: objetos, variações, índices, classes e funções.
- IEC 104: ASDU, Type ID, COT, Common Address e IOA.
- Em gateways, documente o mapeamento semântico dos dois lados.
Eventos, polling e atualização espontânea
Uma das diferenças mais visíveis está no tratamento de eventos. DNP3 separa dados estáticos, frequentemente associados à Class 0, de eventos classificados em Classes 1, 2 e 3. O mestre pode executar integrity poll, class polls ou receber respostas unsolicited, dependendo da configuração e do perfil do equipamento. Isso permite equilibrar carga, criticidade e recuperação de eventos, mas exige atenção a filas, overflow, confirmações e política de polling.
IEC 104 também suporta transmissão espontânea e mecanismos de interrogação geral. A Cause of Transmission informa por que uma ASDU foi enviada, como espontânea, resposta a interrogação ou ativação de comando. A comparação correta não é 'unsolicited igual a espontâneo' de forma literal; são mecanismos com papéis semelhantes, mas regras e estados próprios. Ao migrar entre protocolos, valide o comportamento durante perda de comunicação e reconexão: quais eventos são preservados, em que ordem retornam e como timestamps antigos são tratados.
- Teste evento durante link indisponível e recuperação posterior.
- Verifique overflow e profundidade de buffer do equipamento.
- Não use polling agressivo para mascarar configuração ruim de eventos.
Tempo, qualidade e sequência de eventos
Em automação elétrica, um valor sem qualidade e tempo pode ser enganoso. DNP3 possui flags de qualidade e objetos de evento que podem carregar timestamps. IEC 104 também associa qualidade a tipos de informação e pode usar formatos temporais como CP56Time2a em ASDUs apropriadas. A origem do timestamp deve ser conhecida: IED, RTU, gateway ou SCADA. Se um gateway recalcula a hora na chegada, a sequência de eventos pode deixar de representar a ordem real de campo.
Para SOE, teste transições rápidas e eventos com horários próximos, não apenas pontos estáticos. Verifique resolução, sincronismo e comportamento quando o relógio do remoto perde qualidade. Em DNP3, observe time synchronization e IINs relacionados ao estado do outstation. Em IEC 104, observe ASDUs de sincronização de relógio quando aplicáveis e qualidade temporal do sistema. A precisão final depende tanto do protocolo quanto da fonte de tempo e da implementação.
- Correlacione captura de rede com SOE do IED e do SCADA.
- Registre timezone e política de UTC/local time.
- Teste qualidade inválida, offline e substituída quando suportadas.
Comandos e controles
Nos dois protocolos, comando deve ser tratado como uma transação operacional, não como simples escrita. DNP3 oferece mecanismos como Direct Operate e Select Before Operate, além de CROB para saídas binárias com funções pulse, latch on e latch off conforme objeto e implementação. IEC 104 possui tipos de comando simples, duplo, setpoint e outros, com causas de transmissão e confirmações de ativação/terminação.
A equivalência funcional depende do equipamento. Um gateway pode receber SBO em DNP3 e emitir uma sequência IEC 104 diferente, ou o contrário. O teste deve confirmar seleção, execução, timeout, rejeição por intertravamento, estado final e feedback de posição. Nunca valide somente a resposta positiva de protocolo: o resultado elétrico ou lógico precisa ser confirmado pelo ponto de retorno e, quando aplicável, por registro do IED.
- Teste comando aceito, rejeitado e expirado.
- Valide feedback de posição separado do comando.
- Confirme política de pulse, tempo e double command quando existente.
Qual escolher e como diagnosticar
A escolha é frequentemente determinada pelo ecossistema da concessionária, centro de controle, fabricante, região e requisitos de interoperabilidade. DNP3 é muito forte em telecontrole e distribuição em vários mercados; IEC 104 é amplamente usado em utilities e centros de controle baseados na família IEC 60870. Tecnicamente, ambos podem atender supervisão robusta quando projetados corretamente. O diferencial real aparece na compatibilidade com ativos existentes, ferramentas, perfis, segurança e competência operacional.
No diagnóstico, comece por transporte e sessão, depois avance para semântica. Em IEC 104, confira TCP, STARTDT, números de sequência I/S, timers e ASDUs. Em DNP3, confira endereços de enlace, funções, objetos, qualifiers, IINs, classes e confirmações. Se um ponto está 'errado', capture o frame e compare o identificador recebido com o cadastro do SCADA. Essa disciplina reduz muito o tempo perdido procurando defeito de rede quando a causa é mapeamento.
- IEC 104: observe APCI, números de sequência e COT.
- DNP3: observe funções, objetos, índices, qualifiers e IINs.
- Em ambos: preserve PCAP, logs e tabela de pontos da mesma ocorrência.
Migração e gateways: onde surgem as diferenças difíceis
Quando um gateway converte DNP3 para IEC 104, ele não transforma somente endereços. Precisa decidir como uma variação DNP3 corresponde a um Type ID, como flags de qualidade são representadas, como timestamps são preservados, como eventos antigos são enviados e como comandos com Select Before Operate se relacionam com a sequência IEC. Essas decisões devem estar em uma tabela de mapping controlada por versão. Se o gateway for substituído e o mapping for recriado manualmente, pequenas diferenças podem alterar operação sem quebrar a comunicação.
Também é importante testar saturação e reconexão do gateway. Uma fila de eventos pode existir no IED, outra no gateway e outra no front-end. Durante uma indisponibilidade longa, qual delas enche primeiro? Há descarte dos eventos mais antigos ou mais novos? A qualidade muda para overflow? O centro recebe uma avalanche na reconexão? Esses cenários distinguem uma integração realmente projetada de uma conversão que só foi testada com alguns pontos estáticos.
- Mantenha tabela de mapping DNP3↔IEC 104 como documento controlado.
- Teste indisponibilidade longa e retorno de comunicação.
- Confirme política de filas e overflow em cada camada.
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.
- Overview of DNP3 Protocol — DNP Users Group
- IEC 60870-5-104:2006+AMD1:2016 CSV — IEC
- DNP Users Group — Public Documents — DNP Users Group. Aplicações públicas, boletins e materiais técnicos para validar comportamento de implementações.
- 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.
- Wireshark User’s Guide — Wireshark Foundation. Documentação oficial de captura, filtros, estatísticas e interpretação da interface do analisador.
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.