No papel é uma conversão um para um. Nunca é.
Migrei um programa ladder Mitsubishi FX dos anos 1990 para blocos de funções no ABB 800xA. Foi vendido como troca igual por igual. Onde isso quebrou e como eu fiz o serviço.
Uma tradução no seu idioma ainda não está pronta — exibindo o original em inglês.
Este artigo foi escrito originalmente em inglês. A tradução foi feita por uma IA e pode conter erros.
Migrações assim são vendidas como um para um. Pegue o sistema antigo, faça a mesma coisa em hardware e software novos, devolva se comportando exatamente igual. Na capa parece um copiar e colar com um orçamento anexado.
Esse aqui era um CLP Mitsubishi FX antigo com um programa ladder dos anos 1990. O serviço era levá-lo para o ABB 800xA, reconstruído como módulo de controle em diagrama de blocos de funções (FBD). Mesmo comportamento, nova plataforma.

“Um para um” é uma frase de venda
Não acho que alguém esteja mentindo ao chamar isso de 1:1. Da cadeira do cliente é verdade: mesmos botões, mesma sequência, mesmas saídas, a linha roda como sempre rodou. É por isso que eles pagam. Da cadeira do engenheiro quase nada passa igual. Foi isso que eu encontrei pela frente.
O software é mais velho que eu
O projeto original não abria no GX Developer. Abriu no GX IEC Developer, o ramo europeu IEC 61131-3 das ferramentas da Mitsubishi, que nasceu do antigo software MEDOC dos anos 1990. Provavelmente o projeto foi escrito nessa linha desde o começo.
A primeira surpresa foi a configuração de hardware. Não é uma tela separada. É escrita como código em blocos dentro do próprio programa, normalmente bem no fim, para você não ter que garimpar tudo quando precisar mudar alguma coisa. Achei aquilo mais difícil de ler do que qualquer coisa com que já trabalhei. Os editores gráficos de hardware das ferramentas mais novas da ABB e da Siemens são simplesmente melhores.
Ladder e FBD não pensam do mesmo jeito
Ladder é contato e bobina, corrente correndo da esquerda para a direita, um retrato de um painel de relés. FBD é sinal passando por blocos. Um degrau óbvio em ladder pode virar um aglomerado desajeitado de blocos, e algo limpo em FBD viraria uma bagunça de degraus na volta. Você faz as saídas baterem, e a estrutura por baixo acaba sem nenhuma semelhança com a original. Para provar que o comportamento é o mesmo, você tem que entender o programa antigo muito mais a fundo do que lendo de cima a baixo.
As partes sem equivalente
Parte do que esses programas usam não tem gêmeo no 800xA. Você acha cada pedaço lendo com cuidado e reconstrói na mão.
O bloco DECO. O ladder decodifica um número em uma de várias saídas com uma única instrução. O 800xA não tem nada parecido. Acabei usando MOD e DIV para separar unidade e dezena, e dez blocos EQ contra as saídas.
Instruções de salto. Saltos condicionais, CJ, pulam seções inteiras de lógica.
Ajustes físicos dentro da lógica. Alguns pré-ajustes de temporizador eram ajustados na máquina por potenciômetros. No FX eles caem em registradores de dados especiais, D8030 e D8031, e o programa escala isso em um pré-ajuste. No módulo novo viram parâmetros.
Relés auxiliares especiais. Relés de sistema da série M8000 moldam partes da lógica. O M8028 troca a base de tempo de um bloco de temporizadores.
Endereçamento octal. As entradas e saídas do FX são numeradas em base 8, não em base 10. As entradas X000 a X007 estavam cabeadas a 20 válvulas, e o programa lê essas entradas para decidir quantas válvulas devem abrir. Uma contagem de “19” significa 20, é indexada a partir do zero. Acertar isso me custou um dia inteiro lendo sobre BCD, sobre como bits e bytes são armazenados nesses controladores antigos e sobre valores com sinal e sem sinal. Antes disso os degraus não faziam sentido.
O que não funcionou: pedir para a IA fazer tudo
A primeira coisa que fiz ao pegar o serviço, mais de brincadeira, foi entregar o programa ladder para uma IA e pedir um módulo de controle 800xA completo a partir dele, montado como documento HTML com os blocos FBD desenhados. Não funcionou. O resultado não estava correto por nenhum critério. Valeu os dez minutos para tirar a dúvida: não dá para jogar esse tipo de tarefa num modelo e esperar milagre.
O que funcionou
Tenho 21 anos e, quando escrevo isto, cerca de dois anos de profissão. Um programa ladder dos anos 1990 era completamente estranho para mim.
Em vez de pedir uma tradução, exportei o ladder para PDF e pedi para a IA transformar aquilo num documento que explicasse o programa parte por parte, passo a passo. Faça isso numa plataforma on-prem da empresa e só depois de estar liberado com a sua empresa e com o cliente. Li esse documento e foi ali que aprendi sobre BCD, endereçamento octal e como a memória é organizada nesses controladores. Transformou uma coisa que ninguém tocava havia décadas em uma coisa sobre a qual eu conseguia raciocinar. A IA erra às vezes, e chuta com confiança, às vezes com muita confiança, então sempre confira duas vezes qualquer coisa que não feche direito.
Depois papel. Imprimi o programa ladder inteiro em A3 e fui linha por linha a lápis, anotando e ligando os pontos com traços, até entender o que acontecia onde. Foi aí que a ficha caiu.
Aí comecei a escrever o FBD. Essa parte não é linear. Você não começa no canto superior esquerdo e escreve até o fim. Eu chegava num ponto em que não sabia como ligar uma coisa, deixava de lado, seguia em frente e mais adiante encontrava a lógica que me deixava voltar e terminar.
Quando o FBD ficou pronto, imprimi ele em A3 também, coloquei do lado do ladder e passei os dois com um marca-texto verde, marcando cada trecho que fazia logicamente a mesma coisa. Uma simulação na minha cabeça, no papel. Quando estava tudo verde, segui em frente.
Depois uma simulação de verdade. Montei um módulo de controle de simulação no Control Builder M com uma janela onde eu podia forçar cada entrada e ver cada saída, e rodei no soft controller do meu notebook. O programa antigo eu não conseguia simular. Nem sabia se o GX Developer conseguia, e o CLP original estava rodando uma planta em operação a uma hora do escritório, que não podia parar por minha causa. Então a comparação ficou no papel.
Por último, hardware. Os painéis novos da ABB chegaram e foram dois dias inteiros só para colocá-los para funcionar: um resistor de terminação faltando no sistema redundante, atualizações de firmware, nomes de estação, toda aquela configuração que só toma tempo. Depois que rodou, baixei o programa e pude ver tempo de ciclo e carga de memória de verdade. O AC 800M é um controlador de DCS, não um CLP rápido, mas esse programa precisava ser rápido, e consegui baixar o tempo de tarefa para 30 milissegundos, com sobra de processador e de memória.
A lição
Um para um é verdade da cadeira do cliente e ficção da do engenheiro. Quando um serviço é vendido assim, vá caçar cedo os três pontos em que ele não pode ser: onde os dois sistemas pensam de formas diferentes, as funções e blocos sem equivalente, e o hardware e os sinais em volta.
Veja como isso se alinha com a nossa visão e essência
Leia mais em tianengineering.com — https://tianengineering.com/articles/on-paper-its-one-to-one-pt/