Conversor de CLP: ladder para texto estruturado, Siemens para Rockwell
Cole um programa do TIA Portal, do Studio 5000 ou do TwinCAT. O PLC Gym descobre de qual fabricante ele é, devolve no código do outro fabricante, executa as duas versões lado a lado e mostra o que é diferente, linha por linha. Um jeito de aprender o outro fabricante com o seu próprio código e um bom começo para uma migração. Ele converte só a lógica, então ainda precisa de testes na máquina real.
- Cada linha mapeada Passe o mouse sobre uma linha para ver de onde ela veio
- Verificado, sem adivinhação Os dois programas rodam com as mesmas entradas no nosso simulador, varredura por varredura
- Seu código não é guardado Vai para o nosso servidor para ser convertido e não é armazenado nem registrado em log
Conhece Siemens ou Rockwell, mas não os dois?
Cole seu próprio código e veja como o outro fabricante o escreve, com um resumo do que é diferente para você e as linhas em que está cada diferença. Depois execute no painel de controle e experimente em uma missão. É um jeito de aprender e um bom começo para uma migração, não código para uma planta em operação.
Siemens para Rockwell
TIA Portal para Studio 5000, e SCL para Structured Text
- Temporizador
#Delay(IN := #Start, PT := T#2s);Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);- Bit de concluído (DN)
#Delay.QDelay.DN- One shot
#Edge(CLK := #Eye);Edge.InputBit := Eye; OSRI(Edge);
Rockwell para Siemens
Studio 5000 para TIA Portal, e Structured Text para SCL
- Temporizador
Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);#Delay(IN := #Start, PT := T#2s);- Bit de concluído (DN)
Delay.DN#Delay.Q- One shot
Edge.InputBit := Eye; OSRI(Edge);#Edge(CLK := #Eye);
Folha de referência de Siemens, Rockwell e TwinCAT: uma instrução, três nomes
O conversor mapeia cada um destes para você. Também é uma folha de referência prática quando você muda de planta.
| O que faz | Rockwell Studio 5000 | Siemens TIA Portal | Beckhoff TwinCAT 3 texto estruturado |
|---|---|---|---|
| Contatos normalmente abertos e fechados | XIC, XIO | Contatos NA e NF | Escrito como lógica: A AND NOT B |
| Bobina, trava e destrava | OTE, OTL, OTU | Bobina, S, R | x := …, IF … THEN x := TRUE |
| Temporizador com retardo na energização | TON em um TIMER (.PRE .ACC .DN); TONR em um FBD_TIMER em ST | TON_TIME (PT, ET, Q) | TON (PT, ET, Q) |
| Temporizador com retardo na desenergização | TOF; TOFR em ST | TOF_TIME | TOF |
| Contador crescente | CTU em um COUNTER, reset com RES; CTUD em ST | CTU em um IEC_COUNTER (PV, CV, Q, R) | CTU (PV, CV, Q, RESET) |
| Borda de subida | ONS, OSR; OSRI em ST | Contato P, P_TRIG, R_TRIG | R_TRIG |
| Borda de descida | OSF; OSFI em ST | Contato N, N_TRIG, F_TRIG | F_TRIG |
| Mover um valor | MOVE (MOV antes da v36) | MOVE | x := y |
| Comparar | EQ, NE, LT, GT, LE, GE (EQU, NEQ, LES, GRT, LEQ, GEQ antes da v36) | CMP ==, <>, <, >, <=, >= | =, <>, <, >, <=, >= |
| Matemática | ADD, SUB, MUL, DIV, CPT | ADD, SUB, MUL, DIV, CALCULATE | +, -, *, / |
| Escalonar uma entrada analógica | SCP | NORM_X e depois SCALE_X | Escrito como uma fórmula |
| Números inteiros | DINT (INT existe, DINT é nativo) | Int, DInt | INT, DINT |
| Tempos | DINT milissegundos: 2000 | Tempo: T#2s | TIME: T#2S |
| Tags dentro de um bloco | Tags de programa, sem prefixo | #Name (block interface) | Sem prefixo (seções VAR) |
| Seu próprio tipo de dados | UDT (BOOLs empacotados em um SINT oculto) | Tipo de dados do CLP: TYPE … STRUCT | STRUCT em um DUT |
| Seu próprio bloco | Add-On Instruction (AOI) com uma tag de suporte | FB, chamado como multi-instância | FUNCTION_BLOCK com uma instância |
| Chamando-o | PumpCtl(Pump1, Start, Stop, Run): instância primeiro, parâmetros obrigatórios em ordem | #Pump1(Start := …, Run => …) | Pump1(Start := …, Run => …) |
| Um bloco cuja linha está desligada | EnableIn vai para falso: a lógica não executa (a rotina EnableInFalse dele executa, se tiver uma) | EN desligado: o FB não é chamado (ENO falso) | Não é chamado: ponha a chamada dentro de IF |
| Executar uma vez na partida | A rotina Prescan da AOI: executa durante o prescan, quando o controlador vai para Run | OB de partida (OB100), ou um flag de primeira chamada no FB | Um flag de primeira chamada no FB (ou FB_init) |
O que ele converte e o que não converte
Ele converte a lógica. Tudo o que não consegue levar é listado com a linha e o que fazer, nunca omitido em silêncio.
Converte
- Lógica ladder para Structured Text, sempre
- Structured Text para ladder, onde a lógica cabe no ladder: contatos, bobinas, set e reset, temporizadores, contadores, bordas, comparações, movimentos e matemática
- Siemens para Rockwell e de volta, em Structured Text ou ladder, e TwinCAT nos dois sentidos
- Membros de temporizadores e contadores (IN/PT/Q/ET para TimerEnable/PRE/DN/ACC), locais com #, tipos de dados, bordas, MOVE e MOV, comparações e matemática
- Declarações de tags com seus comentários, e os comentários no seu código
- Seus próprios blocos de função, Add-On Instructions e UDTs: as definições, as chamadas e cada Tag.Member, na forma própria de cada fabricante
- AOIs escritas em ladder, com suas rotinas Prescan e EnableInFalse: mantidas como linhas para um destino ladder, ou escritas como Structured Text
- Blocos LAD e FBD da Siemens, a partir da exportação XML do TIA Portal: cada network é lida como o SCL que faz o mesmo
- Programas inteiros de uma vez: uma fonte Siemens com seus blocos de dados, um programa do Studio 5000 cuja rotina principal chama as outras, e vários arquivos TwinCAT ou TIA Portal abertos juntos
- Linhas do Studio 5000 com cópias e preenchimentos (COP, CPS e FLL, até 64 elementos), um contador contado nos dois sentidos (CTU com CTD), lógica de bits, MOD, ABS, SQR e MVM
- Um temporizador de pulso (TP) indo para o Structured Text do Studio 5000, que não tem um: escrito em torno de um TONR e conferido com o original varredura por varredura
- Um relatório que você pode salvar como arquivo de texto: o que precisa de você, o que mudou e por quê, e o que a verificação lado a lado tentou e não tentou
Não converte
- Configuração de hardware, endereços de E/S, redes e comunicações (MSG, PUT/GET, EtherNet/IP, PROFINET)
- Tags de IHM, alarmes e telas
- Blocos de biblioteca de fabricantes, como PID, movimento e inversores
- AOIs cuja lógica é diagrama de blocos de funções ou SFC: sinalizadas, para você reescrever essa rotina em ladder ou Structured Text primeiro
- Métodos, propriedades, ações e uniões do TwinCAT
- Strings de texto: as linhas que as usam são sinalizadas e deixadas para você
- Laços FOR em ladder: são sinalizados com a linha e uma sugestão
- STL, IL, SFC e GRAPH, e diagrama de blocos de funções do Studio 5000
Como funciona a prova
Seu código é lido em uma forma neutra e depois escrito como o fabricante de destino o escreve: escritas de membro e TONR no Logix, uma chamada TON_TIME no SCL, T#2s ou 2000.
O simulador do PLC Gym executa o programa original e o convertido por 3.000 varreduras (60 segundos simulados). As entradas são pressionadas, seguradas e soltas, e os números cruzam todos os limites com que seu código compara.
Cada saída é comparada em cada varredura. Onde os fabricantes realmente diferem (um one-shot na primeira varredura, um reset de contador), o conversor escreve o código de modo que o comportamento continue igual, e avisa.
Roda no simulador do PLC Gym, então é uma verificação forte da lógica, não uma garantia para a sua planta: teste na máquina real, como a sua planta exige. Quer ver rodando? Pressione Executar para abrir o programa convertido no painel de controle do simulador de CLP online, ou teste seu código de CLP em uma máquina 3D.
Perguntas que engenheiros fazem
O que as pessoas verificam antes de confiar em um conversor.
Ele converte código Siemens do TIA Portal para Rockwell Studio 5000?
Sim. Cole SCL ou abra um arquivo .scl e ele vai para Rockwell por padrão, como Structured Text ou ladder. De SCL para Structured Text muda mais que os nomes das tags: chamadas TON_TIME viram TONR com .PRE e .TimerEnable, R_TRIG vira OSRI, .Q vira .DN, T#2s vira 2000 e INT vira DINT. Você pode baixar um .L5X para importar. Ele converte só a lógica, e esse arquivo até agora só foi testado ao ser lido de volta no PLC Gym, então confira a importação no Studio 5000.
Ele converte código Rockwell Studio 5000 para Siemens TIA Portal?
Sim. Cole Structured Text ou texto de linhas, ou abra uma exportação L5X, e ele vai para Siemens por padrão: SCL a partir de Structured Text, LAD a partir de ladder. Temporizadores TONR viram TON_TIME, contadores CTUD viram CTU, one shots OSRI viram R_TRIG, DN vira Q e ACC vira ET ou CV, e toda tag local recebe seu # no SCL.
Conheço Siemens, mas não Rockwell. Isso pode me ajudar a aprender?
Sim, e vice-versa. Cole o seu código e você recebe um resumo do que é diferente para você: como temporizadores, one shots e nomes de tags mudam, com as linhas do seu programa em que cada um está. Depois execute o programa convertido no painel de controle do PLC Gym, e jogue uma missão na linguagem desse fabricante. O guia rápido desta página cobre o resto.
O código convertido está pronto para uma planta em operação?
Não. Trate-o como um jeito de aprender e um empurrão inicial em uma migração. Ele converte só a lógica: configuração de hardware, endereços de E/S, comunicações, IHM, PID, movimento e inversores ficam com você. A verificação lado a lado roda no simulador do PLC Gym, não na sua máquina, e os arquivos precisam ser conferidos no software do próprio fabricante. Revise como faria com o código de um colega, e teste na máquina real como o seu local exigir.
Como ele sabe de qual fabricante é o meu código?
Ele lê o código, do jeito que um tradutor reconhece um idioma. Um # na frente dos nomes de tags indica Siemens, TONR ou .DN indica Studio 5000, e T#2s em tags sem # indica TwinCAT. Ele diz o que viu, e se o código puder ser de qualquer fabricante, avisa e deixa você escolher. Os arquivos dizem o que são: .scl, .L5X, .TcPOU e a exportação .xml do TIA Portal.
Ele lê ladder (LAD) e FBD da Siemens a partir do TIA Portal?
Sim, a partir da exportação XML do TIA Portal. Um bloco LAD ou FBD não tem fonte .scl, então o XML é o jeito de ele sair do TIA Portal: a partir da V16, adicione um workspace em Interface de controle de versão na árvore do projeto e traga o bloco para ele, e o TIA Portal grava o bloco como um arquivo .xml. Scripts Openness gravam o mesmo arquivo. Cada network é lida como o SCL que faz o mesmo, uma bobina como tudo o que está ligado à sua entrada e uma caixa como uma chamada, e converte a partir daí para Rockwell ou TwinCAT, em Structured Text ou ladder. Abra junto os blocos de dados e os tipos de dados do bloco e eles são lidos juntos. O leitor foi escrito a partir da descrição do formato feita pela Siemens e não foi testado em todas as versões do TIA Portal, então uma network com uma parte que ele não lê é apontada e deixada para você, e o resto do bloco é convertido em volta dela.
Vocês convertem lógica ladder para Structured Text?
Sim, sempre. Cada linha vira uma ou duas linhas de Structured Text: contatos viram AND e OR, bobinas viram atribuições, OTL e OTU viram IF … THEN, e temporizadores, contadores e one shots viram chamadas no estilo do próprio fabricante de destino. Os comentários das linhas vêm como comentários.
Qualquer Structured Text pode virar ladder?
A maior parte da lógica de controle pode: contatos, bobinas, set e reset, temporizadores, contadores, bordas, comparações, movimentos e matemática. Laços FOR não podem, porque o ladder executa cada linha uma vez por varredura, então o conversor sinaliza a linha e sugere escrever uma linha por elemento ou manter essa parte em Structured Text.
Ele converte meus próprios blocos de função, Add-On Instructions e UDTs?
Sim. Uma AOI do Studio 5000 vira um FB do TIA Portal ou um FUNCTION_BLOCK do TwinCAT, e vice-versa. AOIs escritas em ladder continuam ladder quando você converte para LAD do TIA Portal, e viram Structured Text nos outros casos. Uma UDT vira um tipo de dados do CLP ou um STRUCT do TwinCAT. As chamadas também mudam: o Studio 5000 passa a instância e depois os parâmetros obrigatórios em ordem, o TIA Portal e o TwinCAT nomeiam cada parâmetro. Estruturas de entrada entram em uma AOI como InOut, TIME vira DINT em milissegundos, e os valores padrão de uma UDT passam para as tags, porque as UDTs do Logix não podem guardar valores padrão. Cada mudança é listada no relatório, e a execução de prova compara também cada membro das estruturas.
O que acontece com as rotinas EnableInFalse e Prescan de uma AOI no TIA Portal ou no TwinCAT?
Nenhum dos dois tem rotinas de modo de varredura, então o bloco de função faz esse trabalho por conta própria. EnableInFalse vira uma entrada EnableIn: o bloco é chamado em toda varredura com EnableIn definido pela sua linha, e o IF … ELSE dele executa a lógica de EnableInFalse quando a linha está desligada. Prescan vira um código que executa uma vez, no início da primeira chamada do bloco. Postscan só executa quando uma ação de SFC termina, então é mantido para o Studio 5000 e anotado nos outros. A execução de prova confere que as duas versões se comportam igual.
Como sei que o código convertido faz a mesma coisa?
O PLC Gym executa o seu programa original e o convertido lado a lado no simulador por milhares de varreduras, alimentando os dois com as mesmas entradas, e compara cada saída em cada varredura. As entradas numéricas são levadas além dos limites do seu código e por toda a faixa do tipo delas, e a página mostra a faixa que tentou. Ela só diz coincide quando cada linha do seu programa executou, toda saída que liga e desliga mudou, e todo temporizador e contador chegou ao fim durante a execução. O que não conseguiu tentar é apontado, e o resultado diz parcial. Coincidir quer dizer que concordaram nesses testes, então não é uma garantia. Você vê o resultado como um traçado de analisador lógico. Pressione Executar para abrir o programa convertido no painel de controle do PLC Gym, com botões, chaves e luzes feitos a partir das suas tags, e experimente você mesmo. Teste sempre na máquina real como o seu local exigir.
O conversor é grátis?
Os exemplos prontos são abertos a todos, sem conta. Toda conta recebe um teste grátis do Pro até 5 de dezembro de 2026, então até lá uma conta grátis converte quanto do seu código você quiser. Depois disso, uma conta grátis converte 3 dos seus programas, e converter o mesmo código de novo ou para outro fabricante não consome outro.
Meu código é enviado para algum lugar?
Seu código vai para o nosso servidor por uma conexão criptografada para ser convertido, e o resultado volta direto. Não o armazenamos nem o registramos, e ele fica oculto das gravações de sessão que usamos para melhorar o site. Em uma conta grátis, guardamos uma impressão digital embaralhada de até 3 programas, para que o mesmo código não conte duas vezes. Ela não pode ser transformada de volta no seu código, e some quando a sua conta some.
Posso importar o resultado no TIA Portal, no Studio 5000 ou no TwinCAT?
Sim. Baixe uma fonte .scl e use Gerar blocos a partir da fonte no TIA Portal, um .L5X para importar no Studio 5000, ou um .TcPOU para adicionar a um projeto TwinCAT 3. Seus próprios tipos e blocos vêm junto: no .scl e no .L5X, ou como um zip de arquivos .TcDUT e .TcPOU para o TwinCAT. O TIA Portal não tem formato de texto para ladder, então, para LAD da Siemens, você redesenha as networks mostradas, ou usa o arquivo SCL. Trate esses arquivos como beta: o .L5X até agora só foi testado ao ser lido de volta no PLC Gym, então confira cada importação no software do próprio fabricante.
O que ele não converte?
Só a lógica: não a configuração de hardware, as comunicações, as tags de IHM nem os blocos de biblioteca de fabricantes, como PID e movimento. Seus próprios blocos de função, AOIs e UDTs são convertidos, desde que a lógica deles seja ladder ou Structured Text. Tudo o que ele não consegue levar é listado com a linha e o que fazer, nunca deixado de fora em silêncio.
Convertendo entre fabricantes? Troque dicas no Vestiário.