IEC 104 t0, t1, t2, t3, k e w: como dimensionar e diagnosticar a sessão
Entenda os temporizadores e janelas do IEC 60870-5-104, sua relação com I/S/U frames, N(S)/N(R), ACKs, latência, carga e sintomas de configuração incompatível.
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.
IEC 104 — t0/t1/t2/t3/k/w: função, sintoma e medição
| Parâmetro | Referência comum | Função | Sintoma de ajuste/problema | Como medir |
|---|---|---|---|---|
| t0 | 30 s | Timeout de estabelecimento da conexão | Conexão não completa ou cai durante abertura | Tempo entre tentativa TCP/sessão e estabelecimento/abandono. |
| t1 | 15 s | Espera por confirmação de APDU enviada/teste | Reconexões ou timeout com I-frame sem ack | Delta entre envio e avanço de N(R) / confirmação esperada. |
| t2 | 10 s | Atraso máximo para confirmação S-frame | Acks excessivamente tardios | Tempo do primeiro I-frame recebido até S-frame quando w não é atingido antes. |
| t3 | 20 s | Supervisão de enlace ocioso com TESTFR | Sessão silenciosa sem teste ou testes frequentes demais | Tempo de ociosidade até TESTFR ACT e retorno TESTFR CON. |
| k | 12 | Máximo de I-frames enviados sem confirmação | Janela trava sob perda/latência | Maior diferença observada entre N(S) enviado e N(R) confirmado. |
| w | 8 | Quantidade de I-frames recebidos antes de confirmar | S-frames demais ou confirmação tardia | Contar I-frames recebidos entre confirmações S-frame. |
Os números são valores de referência amplamente adotados em perfis IEC 104; confirme a edição, o perfil de interoperabilidade e o equipamento.
Primeiro entenda I, S e U antes dos timers
IEC 104 usa TCP, mas adiciona controle próprio no APCI. I-frames carregam ASDUs e usam N(S)/N(R); S-frames confirmam recebimento sem ASDU; U-frames controlam STARTDT, STOPDT e TESTFR. Os temporizadores e janelas existem para impedir que uma sessão fique indefinidamente em estado incompleto e para limitar quantos I-frames podem permanecer sem confirmação.
Quando alguém aumenta todos os timers para “parar timeout”, perde justamente a capacidade de detectar problema. O objetivo é escolher valores compatíveis com latência e carga reais, mantendo detecção de falha dentro do requisito operacional.
t0, t1, t2 e t3 em linguagem operacional
t0 está associado ao estabelecimento da conexão. t1 limita espera por confirmação de uma APDU enviada; por isso precisa ser maior que atrasos normais do caminho e processamento, mas não tão grande que uma sessão quebrada demore a ser detectada. t2 controla quanto uma estação pode adiar uma confirmação quando recebeu I-frames e ainda não atingiu o limiar de janela. t3 é usado para supervisão em períodos de inatividade, tipicamente provocando TESTFR.
A relação entre t1 e t2 é importante: a confirmação do receptor precisa ocorrer antes que o transmissor conclua que houve falha. Em links de alta latência ou congestionados, meça distribuição de RTT; em LAN rápida, timers enormes podem esconder travamentos por minutos.
k e w: janelas que limitam mensagens não confirmadas
k limita quantos I-frames um transmissor pode manter sem confirmação. w define um limiar de I-frames recebidos que leva o receptor a enviar confirmação. Eles participam do controle de fluxo acima do TCP e precisam ser coerentes com buffers, carga e implementação das duas pontas.
Durante diagnóstico, acompanhe N(S) e N(R). Se N(S) avança e N(R) não acompanha, localize o ponto em que as confirmações deixam de evoluir. Se o problema aparece apenas em rajadas, suspeite de janela, processamento, filas ou rede antes de aumentar k indefinidamente.
Comissionamento dos timers e janelas
Faça baseline sem carga e sob rajada controlada de eventos. Registre RTT TCP, intervalo entre I-frames, S-frames, TESTFR e qualquer reconexão. Depois simule perda temporária e confirme quanto tempo o sistema leva para declarar falha e recuperar STARTDT. O resultado precisa atender à filosofia de supervisão.
Documente os valores nas duas pontas e a justificativa. Quando fabricantes usam nomes diferentes na interface, mapeie o nome comercial para t0/t1/t2/t3/k/w no documento de engenharia. Isso reduz erros em futuras substituições e upgrades.
Como dimensionar sem copiar defaults: use latência, janela e comportamento observado
Os temporizadores e janelas precisam formar um conjunto coerente. Comece medindo o round-trip em condição normal e degradada, depois observe quanto tempo a aplicação e a rede podem legitimamente levar para reconhecer uma APDU. t1 precisa permitir a confirmação dentro do pior cenário esperado sem esconder uma sessão realmente travada. t2 deve possibilitar confirmação atrasada antes de atingir t1; t3 supervisiona o período ocioso e se relaciona ao uso de TESTFR. t0 atua no estabelecimento da conexão. Os valores exatos devem seguir o perfil aplicável e a documentação das duas pontas, mas a justificativa de engenharia deve estar ligada às medições do caminho.
As janelas k e w controlam quantas APDUs I podem ficar sem confirmação e quando o receptor deve reconhecer tráfego acumulado. Se k é grande demais para a capacidade de buffers e w/t2 são incompatíveis, uma rajada pode aumentar fila e tempo de recuperação. Se os limites são excessivamente pequenos em um caminho com latência variável, a sessão pode produzir confirmações/reconexões desnecessárias. No comissionamento, gere uma sequência contínua de eventos, acompanhe N(S) e N(R), meça quando aparecem S-frames e compare com k, w e temporizadores configurados nas duas pontas.
- Medir RTT normal e degradado antes de justificar t1/t2.
- Confirmar que t2 permanece coerente com t1 e a política de ACK.
- Observar TESTFR e o comportamento associado a t3 durante ociosidade.
- Gerar rajada e acompanhar N(S), N(R), I-frames e S-frames em relação a k/w.
- Testar perda temporária para distinguir timeout de aplicação de retransmissão TCP.
Leitura da captura: diferenciar timeout IEC 104 de comportamento TCP
Quando a sessão cai, não conclua que t1 ou t3 estão incorretos olhando apenas a mensagem do SCADA. No PCAP, separe primeiro o estado TCP: SYN/SYN-ACK, retransmissões, RST, zero window e perda de segmento pertencem ao transporte. Depois acompanhe APDUs IEC 104, números N(S)/N(R), S-frames, STARTDT/STOPDT/TESTFR e os intervalos entre eles. Um atraso causado por retransmissão TCP pode empurrar a aplicação para um timeout; aumentar t1 pode esconder o sintoma sem remover a perda da rede.
Para validar k e w, crie uma rajada reproduzível de ASDUs e acompanhe quantos I-frames ficam pendentes antes do reconhecimento. Marque o momento em que surge S-frame e compare a configuração das duas pontas. Se uma implementação possui limites diferentes, a janela efetiva pode ser determinada pelo comportamento mais restritivo. Registre também CPU/fila do front-end e do RTU/gateway, porque o receptor pode atrasar ACK de aplicação mesmo quando a rede entrega os segmentos rapidamente. Esse cruzamento impede que toda lentidão seja tratada como “problema de link”.
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.
- IEC 60870-5-104:2006+AMD1:2016 CSV — IEC. Companion standard consolidado para acesso em rede usando perfis de transporte padrão.
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.