O comissionamento tem um cheiro. Quadros elétricos quentes, poeira de papelão, café frio às 2 da manhã. E tem um som que aprendi a temer: o silêncio numa linha de transportadores que deveria estar se movendo.
Na semana passada eu estava num go-live no Inland Empire — um 3PL de 80.000 pés quadrados que lida com devoluções de vestuário, com um novo WCS sendo conectado a um sistema de controle de transportadores já existente. Um pallet ficou morto num desvio. O monitor do WCS dizia, em letras verdes brilhantes, "RELEASED". O engenheiro de controle diante do painel do PLC olhava para as luzes de E/S e disse: "Nunca recebemos a liberação".
Perdemos dois dias por causa daquele pallet. A causa raiz era quase embaraçosa: o programador do WCS trabalhava com a revisão 7 da tabela de sinais. O PLC em campo rodava a revisão 9. No meio do caminho, a equipe do site tinha refeito a fiação duas vezes e adicionado duas fotocélulas, e ninguém atualizou a tabela. O pedido de liberação caiu num endereço livre que não significava nada para o programa do PLC. Ninguém estava ouvindo naquele canal.
Em vinte anos vi esse filme uma dúzia de vezes. O hardware está bem. Os dois softwares estão bem. O que mata a integração é o documento no meio — a tabela de sinais de E/S. É assim que construo uma que não volta para me assombrar.
Classifique cada sinal em três baldes antes de abrir o Excel
O erro de iniciante é abrir uma planilha e digitar linha após linha até ter cem sinais sem ideia do que metade deles faz. Eu classifico primeiro, depois listo.
Balde um: comandos, do WCS para o PLC. Iniciar, parar, liberar, reset, mudança de modo. Um comando que não precisa de resposta eu apago — se o PLC não precisa responder, você não tem nada para diagnosticar quando algo dá errado à meia-noite.
Balde dois: estados, do PLC para o WCS. Em posição, em operação, em falha, parada de emergência, modo manual/automático. Estados são somente leitura. O WCS olha; nunca escreve. Muitos projetos morrem bem aqui, quando um programador de WCS pega um atalho e escreve direto num bit de status que pertence ao PLC. Dois escritores, um bit, sinais piscando no comissionamento, e o bug acaba sendo fogo amigo.
Balde três: heartbeat. O WCS alterna um bit a cada um ou dois segundos; o PLC alterna um de volta. Cada lado monitora o pulso do outro e dispara alarme quando ele para. Este é o seguro mais barato da tabela inteira, e o que mais frequentemente é cortado para economizar. O argumento é sempre o mesmo: "o switch de rede vai alarmar se o link cair". Um alarme do switch diz que o cabo caiu. Um heartbeat diz se a máquina do outro lado está viva, morta ou morta cerebral com o programa travado. São fatos diferentes, e às 2 da manhã a diferença importa.
Tome "liberar um pallet" como exemplo. Você precisa de exatamente quatro sinais: pedido de liberação (WCS para PLC), pedido recebido (PLC para WCS), liberação concluída (PLC para WCS), mais o heartbeat. Quatro sinais, um trabalho, propriedade cristalina. Qualquer linha da tabela que não consiga responder "para que serve isto, quem escreve, quem lê" é apagada. Uma tabela de sinais não é melhor quando é mais longa. Cada sinal sem manutenção é mais um suspeito quando o comissionamento descarrila.

O handshake de três etapas, e por que duas etapas vão queimá-lo
Meu diagrama de temporização tem três etapas e nisto eu não negocio. O WCS ativa "pedido de liberação". O PLC vê e ativa "pedido recebido". O PLC executa a liberação, o pallet chega, e o PLC ativa "liberação concluída". O WCS vê "concluída" e desativa "pedido". O PLC vê "pedido" desaparecer e desativa "concluída". Círculo completo, de volta a um estado de repouso limpo.
Por que três etapas? Porque eu pessoalmente já paguei pelos dois atalhos. Atalho um: o WCS dispara e esquece. O pedido sai, o PLC perde num bounce de sinal, o pallet nunca é liberado — mas o WCS acha que foi e despacha a próxima tarefa. A linha inteira trava. Atalho dois: o PLC age mas nunca reporta. A liberação aconteceu, o WCS não sabe, estoura o timeout e reenvia o pedido, e o mesmo pallet é liberado duas vezes. O desvio mais abaixo vira um derby de demolição.
O ponto do handshake de três etapas é um laço fechado: nada avança até que a etapa anterior seja confirmada, e nada é resetado até que o reset seja visto. Há um bônus de que ninguém fala. Se qualquer um dos lados perder a rede ou travar, o handshake congela no meio de uma etapa — de forma visível, barulhenta, com alarme. Congelado está bem. O que mata é a falha silenciosa, aquela que você descobre três pallets depois quando o estrago já está feito.
O checklist de pré-comissionamento que rodo em cada site
Tabela pronta, código escrito — ainda não vá para a integração de linha completa. Rode primeiro estes testes de item único. Eles economizam aproximadamente metade das lágrimas na noite do comissionamento.
Debounce primeiro. Fotocélulas e sensores de proximidade oscilam na borda mecânica. Algumas dezenas de milissegundos de debounce de entrada no programa do PLC é a aposta mínima. E o lado do WCS também não deveria confiar numa única varredura — exija duas varreduras consecutivas antes de aceitar uma mudança de estado. O bounce é invisível nos testes e aparece exatamente quando o volume pica.
Audite os endereços. Pegue a tabela e confira cada sinal contra o endereço real no programa do PLC, um por um. Refiações em campo e adições de última hora acontecem em todo projeto; a revisão da tabela e a do programa precisam coincidir. Minha regra agora: a tabela carrega um número de revisão, e esse número aparece tanto nos comentários do programa do PLC quanto na configuração do WCS. O desastre da revisão-7-contra-9 da minha história inicial é exatamente o que isto evita.
Puxe o cabo. Desconecte um cabo de rede e cronometre quanto tempo o WCS leva para notar que o PLC sumiu — esse é seu teste de heartbeat. Acione a parada de emergência e verifique se o estado de "parada de emergência" que o WCS vê corresponde ao que a máquina realmente fez. Um princípio aqui: o circuito de parada de emergência em si roda em relés de segurança cabeados. O "status de parada de emergência" enviado ao WCS é apenas um espelho. Nunca pendure uma função de segurança num sinal de software.
Teste o sinal de modo. Quando o PLC vai para manual, o WCS precisa saber — e precisa parar de despachar tarefas. Uma vez vi um WCS continuar enviando liberações enquanto um técnico movimentava o transportador à mão. Um pallet foi empurrado para fora por um comando de liberação que ninguém esperava. Ninguém se feriu, mas foi sorte, não projeto. Modo é um item de segurança, não uma opção.
Depois deixe de molho. Duas horas de operação contínua, com uma parada de emergência aleatória, uma queda de rede aleatória e uma intervenção manual aleatória no meio. O tempo de comissionamento é o tempo mais caro do projeto. Ensaiar as falhas é melhor do que interpretá-las na frente do cliente.
Se você for entrar amanhã num site de comissionamento, leve uma coisa: uma tabela de sinais impressa, assinada pelos dois lados, com o número de revisão igual ao do código. Só isto bloqueia metade dos modos de falha. O checklist acima cuida do resto, um item de cada vez.
Traduzido do inglês. Em caso de divergência, prevalece a versão em inglês.






