Mapa da aula
Aula 36 publicada. Mapa, exemplo, EX106.
flowchart TD
N0["36.1 O tempo de ciclo é cidadão de primeira classe"]
N1["36.2 Tráfego de avaliação"]
N2["36.3 Canários"]
N3["Nota prática"]
N4["36.1b Justiça e aquecimento"]
N5["Nota de campo — cronograma de aquecimento"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX106"]
Desenho lógico
flowchart LR
N0["36.1 O tempo de ciclo é cidadão de primeira classe"]
N1["36.2 Tráfego de avaliação"]
N2["36.3 Canários"]
N3["Nota prática"]
N4["36.1b Justiça e aquecimento"]
N5["Nota de campo — cronograma de aquecimento"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX106"]
[36.1 O tempo de ciclo é cidadão de primeira classe]
|
v
[36.2 Tráfego de avaliação]
|
v
[36.3 Canários]
|
v
[Nota prática]
|
v
[36.1b Justiça e aquecimento]
|
v
[Nota de campo — cronograma de aquecimento]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX106]
Objetivos de aprendizagem
Você vai (1) dimensionar os monitores dentro dos orçamentos de tempo de ciclo; (2) aplicar o raciocínio de token bucket ao tráfego de avaliação; (3) medir o impacto na planta com um canário.
36.1 O tempo de ciclo é cidadão de primeira classe
Metas de vazão que ignoram o orçamento de ciclo do CLP são defeitos. Dimensione os pipelines de decodificação para que o tempo de fio mais decodificação fique dentro do orçamento medido no Capítulo 3.
"""Lab: does a polling schedule fit the PLC scan/communication budget? (synthetic)"""
link_bps = 115200; bits_per_byte = 10 # RS-485 serial, 8N1 + start bit
polls = [("T-1 level", 8), ("T-2 level", 8), ("R-101 block", 40), ("pump status", 8), ("historian sweep", 120)]
overhead = 12 # bytes of request+framing per poll (assumed)
total = sum(n + overhead for _, n in polls)
t = total * bits_per_byte / link_bps
print(f"bytes per cycle={total} time per cycle={t*1000:.1f} ms")
for target in (100, 50):
print(f"cycle budget {target} ms -> {'fits' if t*1000 <= target else 'OVERRUN'}")
Saída esperada:
bytes per cycle=244 time per cycle=21.2 ms
cycle budget 100 ms -> fits
cycle budget 50 ms -> fits
Na ABP, o tronco RS-485 até o PLC-A roda um ciclo de polling de 21 ms dentro de um ciclo de controle de 100 ms, e a condição de parada dispara se o tempo de ciclo chegar a 50 ms. Lena dimensiona o monitor para que o tap, a decodificação e o logging não acrescentem nada ao tempo de fio, porque o tap é passivo e o decodificador roda no seu próprio host. Os testes de carga na bancada reproduzem um dia inteiro de tráfego capturado em velocidade dupla, para confirmar que o decodificador nunca fica atrás do tronco.
36.2 Tráfego de avaliação
Quando métodos ativos são autorizados, limite a sua taxa para que não possam esfomear o tráfego de controle. Prefira métodos somente de escuta; quando precisar fazer polling, compartilhe um orçamento global entre os scanners.
Durante as janelas de avaliação do CNHP na ABP, apenas uma ferramenta ativa pode fazer polling no tronco por vez, e a sua taxa de pedidos é escrita na permissão antes de ela começar. A descoberta passiva a partir do tap cobre a maior parte do inventário, então o polling ativo fica limitado aos poucos dispositivos que não falam por conta própria. Cada ferramenta informa a sua taxa ao orçamento compartilhado, e o líder da janela pode pausar todos os métodos ativos com um único interruptor se o tempo de ciclo subir.
36.3 Canários
Um pedido canário sintético ou uma sondagem de tempo de ciclo a cada minuto acompanha a saúde; as condições de parada disparam no limiar (Capítulo 33).
Caso sintético — Ashford Batch Plant. Com ciclos de 21 ms no tronco RS-485, Lena deixou folga abaixo de 50 ms para que um pico de decodificação não disparasse a parada.
O canário na ABP lê um registrador de status inofensivo do PLC-A a cada minuto e registra o tempo de resposta ao lado do tempo de ciclo do tronco. Se qualquer um dos dois se aproximar do seu limiar, o líder da janela é acionado antes de a condição de parada ser atingida, o que dá tempo para pausar o trabalho ativo com calma, em vez de reagir a uma parada automática.
36.4 Erros e limites
Scanners distribuídos precisam de um orçamento global coordenado, ou multiplicam o limite por N.
Na ABP, dois scanners certa vez rodaram de hosts diferentes, cada um dentro da sua própria taxa, e juntos excederam o orçamento do tronco. Lena moveu o orçamento para um único coordenador que concede tokens a todos os scanners, para que o total fique dentro da permissão não importa quantas ferramentas estejam rodando. Um scanner que não consegue alcançar o coordenador não pode enviar nada, o que mantém a falha segura, em vez de deixar cada ferramenta recorrer ao seu próprio limite.
Nota prática
Publique uma nota sobre a economia dos limites de taxa: o custo de esperar versus o custo da interrupção de um lote. A maioria dos argumentos para aumentar os limites se dissolve quando o custo da interrupção é escrito.
36.1b Justiça e aquecimento
Quando vários métodos compartilham um orçamento, um enumerador ruidoso pode esfomear uma revisão de configuração silenciosa. Pondere ou separe os orçamentos por classe de método. Aumente o tráfego gradualmente no início da janela e esvazie-o antes da parada definitiva. Esvaziar significa nenhum pedido novo nos últimos dez minutos, para que as respostas em trânsito cheguem antes da parada.
Documente quem pode aumentar um limite de taxa e qual tipo de ticket AUTH é exigido. Um limite aumentado expira no fim da janela, a menos que seja renovado por um novo ticket.
Lena impõe os dois orçamentos no coordenador.
Nota de campo — cronograma de aquecimento
O agendador agora aumenta os pollings de avaliação ao longo de cinco minutos no início da janela. Partidas instantâneas em taxa máxima tinham disparado alarmes de vibração sem relação num skid vizinho. O aquecimento é uma cortesia com o processo e com as pessoas que são donas dele.
36.5 Exemplo resolvido — medindo a carga do monitoramento no PLC-A (ABP sintética)
Um coletor de saúde de ativos proposto leria 120 registradores de retenção do PLC-A a cada segundo. No controlador de bancada, Lena mede o tempo de varredura com e sem o coletor: 18 ms de base, 23 ms com o polling, contra um watchdog de 50 ms. O aumento é aceitável na bancada, mas ela ainda limita o coletor a 120 registradores a cada 5 segundos em produção, acrescenta um canário numa linha antes da implantação em toda a planta e alarma se o tempo de varredura passar de 30 ms. O tráfego de avaliação recebe o mesmo tratamento: toda ferramenta de teste precisa declarar a sua taxa de pedidos, e a permissão define um máximo.
Exercícios
- EX106 — Laboratório. Bytes e tempo por ciclo a 115200 — relate os dois. Rubrica: 3 = 244 bytes, 21,2 ms; 2 = um; 1 = errado; 0 = nada.
- EX107 — Folga. Se o orçamento é de 50 ms e o ciclo é de 21 ms, que folga resta e por que mantê-la? Rubrica: 3 = ~29 ms para picos/novas tentativas; 2 = só o número; 1 = usar tudo; 0 = nada.
- EX108 — Global. Por que três coletores não coordenados quebram uma permissão de 2 req/s? Rubrica: 3 = 3× a taxa; 2 = vago; 1 = nega; 0 = nada.
Síntese
Orçamento primeiro, escala depois, canário sempre.