Convertidor PLC de ladder a texto estructurado, de Siemens a Rockwell
Pega un programa de TIA Portal, Studio 5000 o TwinCAT. PLC Gym averigua de qué fabricante es, te lo devuelve en el código del otro fabricante, ejecuta las dos versiones lado a lado y te muestra qué cambia, línea por línea. Una forma de aprender el otro fabricante con tu propio código, y una ventaja para empezar una migración. Solo convierte la lógica, así que hay que probarlo en la máquina real.
- Cada línea, trazada Pasa el ratón por un renglón o una línea para ver de dónde viene
- Comprobado, no adivinado Los dos programas se ejecutan con las mismas entradas en nuestro simulador, escaneo a escaneo
- Tu código no se guarda Va a nuestro servidor para convertirse, y no se guarda ni se registra
¿Sabes Siemens o Rockwell, pero no los dos?
Pega tu propio código y míralo como lo escribe el otro fabricante, con un resumen de lo que cambia para ti y las líneas donde está cada diferencia. Luego ejecútalo en el panel de control y pruébalo en una misión. Es una forma de aprender y una ventaja para empezar una migración, no código para una planta en funcionamiento.
de Siemens a Rockwell
De TIA Portal a Studio 5000, y de SCL a texto estructurado
- Temporizador
#Delay(IN := #Start, PT := T#2s);Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);- Bit de terminado
#Delay.QDelay.DN- Impulso único
#Edge(CLK := #Eye);Edge.InputBit := Eye; OSRI(Edge);
De Rockwell a Siemens
De Studio 5000 a TIA Portal, y de texto estructurado a SCL
- Temporizador
Delay.PRE := 2000; Delay.TimerEnable := Start; TONR(Delay);#Delay(IN := #Start, PT := T#2s);- Bit de terminado
Delay.DN#Delay.Q- Impulso único
Edge.InputBit := Eye; OSRI(Edge);#Edge(CLK := #Eye);
Chuleta de Siemens, Rockwell y TwinCAT: una instrucción, tres nombres
El convertidor traduce cada una por ti. También es una chuleta práctica cuando pasas de una planta a otra.
| Qué hace | Rockwell Studio 5000 | Siemens TIA Portal | Texto estructurado de Beckhoff TwinCAT 3 |
|---|---|---|---|
| Contactos normalmente abiertos y cerrados | XIC, XIO | Contactos NA y NC | Escrito como lógica: A AND NOT B |
| Bobina, enclavar y desenclavar | OTE, OTL, OTU | Bobina, S, R | x := …, IF … THEN x := TRUE |
| Temporizador de retardo a la conexión | TON en un TIMER (.PRE .ACC .DN); TONR en un FBD_TIMER en ST | TON_TIME (PT, ET, Q) | TON (PT, ET, Q) |
| Temporizador de retardo a la desconexión | TOF; TOFR en ST | TOF_TIME | TOF |
| Contador ascendente | CTU en un COUNTER, reset con RES; CTUD en ST | CTU en un IEC_COUNTER (PV, CV, Q, R) | CTU (PV, CV, Q, RESET) |
| Flanco ascendente | ONS, OSR; OSRI en ST | Contacto P, P_TRIG, R_TRIG | R_TRIG |
| Flanco descendente | OSF; OSFI en ST | Contacto N, N_TRIG, F_TRIG | F_TRIG |
| Mover un valor | MOVE (MOV antes de v36) | MOVE | x := y |
| Comparar | EQ, NE, LT, GT, LE, GE (EQU, NEQ, LES, GRT, LEQ, GEQ antes de v36) | CMP ==, <>, <, >, <=, >= | =, <>, <, >, <=, >= |
| Matemáticas | ADD, SUB, MUL, DIV, CPT | ADD, SUB, MUL, DIV, CALCULATE | +, -, *, / |
| Escalar una entrada analógica | SCP | NORM_X y luego SCALE_X | Escrito como fórmula |
| Números enteros | DINT (INT existe, DINT es el nativo) | Int, DInt | INT, DINT |
| Tiempos | DINT en milisegundos: 2000 | Time: T#2s | TIME: T#2S |
| Variables dentro de un bloque | Variables de programa, sin prefijo | #Name (block interface) | Sin prefijo (secciones VAR) |
| Tu propio tipo de datos | UDT (BOOLs agrupados en un SINT oculto) | Tipo de datos PLC: TYPE … STRUCT | STRUCT en un DUT |
| Tu propio bloque | Add-On Instruction (AOI) con una variable asociada | FB, llamado como multiinstancia | FUNCTION_BLOCK con una instancia |
| Cómo llamarlo | PumpCtl(Pump1, Start, Stop, Run): primero la instancia, luego los parámetros obligatorios en orden | #Pump1(Start := …, Run => …) | Pump1(Start := …, Run => …) |
| Un bloque cuyo renglón está desactivado | EnableIn pasa a false: la lógica no se ejecuta (se ejecuta su rutina EnableInFalse, si tiene una) | EN desactivado: el FB no se llama (ENO false) | No se llama: pon la llamada dentro de un IF |
| Ejecutar una vez al arrancar | La rutina Prescan de la AOI: se ejecuta durante el preescaneo, cuando el controlador pasa a Run | OB de arranque (OB100), o un indicador de primera llamada en el FB | Un indicador de primera llamada en el FB (o FB_init) |
Qué convierte y qué no
Convierte la lógica. Todo lo que no puede trasladar aparece en una lista con la línea y lo que hay que hacer; nunca se omite en silencio.
Convierte
- De ladder a texto estructurado, siempre
- De texto estructurado a ladder, cuando la lógica cabe en ladder: contactos, bobinas, set y reset, temporizadores, contadores, flancos, comparaciones, movimientos y matemáticas
- De Siemens a Rockwell y al revés, en texto estructurado o ladder, y TwinCAT en ambos sentidos
- Miembros de temporizadores y contadores (de IN/PT/Q/ET a TimerEnable/PRE/DN/ACC), variables locales con #, tipos de datos, flancos, MOVE y MOV, comparaciones y matemáticas
- Declaraciones de variables con sus comentarios, y los comentarios de tu código
- Tus propios bloques de función, Add-On Instructions y UDT: las definiciones, las llamadas y cada Tag.Member, en la forma propia de cada fabricante
- AOI escritas en ladder, con sus rutinas Prescan y EnableInFalse: se mantienen como renglones para un destino ladder, o se escriben en texto estructurado
- Bloques KOP (LAD) y FUP (FBD) de Siemens, desde la exportación XML de TIA Portal: cada segmento se lee como el SCL que hace lo mismo
- Programas enteros de una vez: un fuente de Siemens con sus bloques de datos, un programa de Studio 5000 cuya rutina principal llama a las demás, y varios archivos de TwinCAT o de TIA Portal abiertos juntos
- Renglones de Studio 5000 con copias y rellenos (COP, CPS y FLL, hasta 64 elementos), un contador que cuenta en los dos sentidos (CTU con CTD), lógica de bits, MOD, ABS, SQR y MVM
- Un temporizador de impulso (TP) que va a texto estructurado de Studio 5000, que no tiene ninguno: se escribe alrededor de un TONR y se comprueba contra el original escaneo a escaneo
- Un informe que puedes guardar como archivo de texto: lo que te necesita, qué cambió y por qué, y qué probó y qué no la comprobación lado a lado
No convierte
- Configuración de hardware, direcciones de E/S, redes y comunicaciones (MSG, PUT/GET, EtherNet/IP, PROFINET)
- Variables, alarmas y pantallas de HMI
- Bloques de librería del fabricante, como PID, movimiento y variadores
- AOI cuya lógica es diagrama de bloques de funciones o SFC: se marcan, para que primero reescribas esa rutina en ladder o texto estructurado
- Métodos, propiedades, acciones y uniones de TwinCAT
- Cadenas de texto: las líneas que las usan se señalan y quedan para ti
- Bucles FOR a ladder: se marcan con la línea y una sugerencia
- STL, IL, SFC y GRAPH, y el diagrama de bloques de funciones de Studio 5000
Cómo funciona la prueba
Tu código se lee en una forma neutra y luego se escribe como lo escribe el fabricante de destino: escrituras de miembros y TONR en Logix, una llamada a TON_TIME en SCL, T#2s o 2000.
El simulador de PLC Gym ejecuta el programa original y el convertido durante 3,000 escaneos (60 segundos simulados). Las entradas se pulsan, se mantienen y se sueltan, y los números cruzan cada límite con el que compara tu código.
Cada salida se compara en cada escaneo. Donde los fabricantes de verdad difieren (un flanco en el primer escaneo, un reset de contador), el convertidor escribe el código para que el comportamiento siga coincidiendo, y lo indica.
Se ejecuta en el simulador de PLC Gym, así que es una comprobación sólida de la lógica, no una garantía para tu planta: prueba en la máquina real como exija tu planta. ¿Quieres verlo funcionar? Pulsa Ejecutarlo para abrir el programa convertido en simulador de PLC onliney su panel de control, o prueba tu código PLC en una máquina 3D.
Preguntas que hacen los ingenieros
Lo que la gente comprueba antes de fiarse de un convertidor.
¿Convierte código de Siemens TIA Portal a Rockwell Studio 5000?
Sí. Pega SCL o abre un archivo .scl y pasa a Rockwell por defecto, como texto estructurado o ladder. De SCL a texto estructurado cambian más cosas que los nombres de las variables: las llamadas TON_TIME pasan a TONR con .PRE y .TimerEnable, R_TRIG pasa a OSRI, .Q pasa a .DN, T#2s pasa a 2000 e INT pasa a DINT. Puedes descargar un .L5X para importarlo. Solo convierte la lógica, y ese archivo de momento solo se ha probado leyéndolo de vuelta en PLC Gym, así que revisa la importación en Studio 5000.
¿Convierte código de Rockwell Studio 5000 a Siemens TIA Portal?
Sí. Pega texto estructurado o texto de renglones, o abre una exportación L5X, y pasa a Siemens por defecto: SCL desde texto estructurado, LAD desde ladder. Los temporizadores TONR pasan a TON_TIME, los contadores CTUD pasan a CTU, los impulsos únicos OSRI pasan a R_TRIG, DN pasa a Q y ACC pasa a ET o CV, y cada variable local recibe su # en SCL.
Conozco Siemens pero no Rockwell. ¿Esto me ayuda a aprender?
Sí, y también al revés. Pega tu propio código y recibes un resumen de lo que cambia para ti: cómo cambian los temporizadores, los impulsos únicos y los nombres de las variables, con las líneas de tu programa donde aparece cada uno. Luego ejecuta el programa convertido en el panel de control de PLC Gym, y juega una misión en el lenguaje de ese fabricante. La guía rápida de esta página cubre el resto.
¿El código convertido está listo para una planta en servicio?
No. Úsalo para aprender y para adelantar una migración. Solo convierte la lógica: la configuración de hardware, las direcciones de E/S, las comunicaciones, la HMI, el PID, el movimiento y los variadores quedan a tu cargo. La comprobación lado a lado se ejecuta en el simulador de PLC Gym, no en tu máquina, y los archivos hay que revisarlos en el software del propio fabricante. Revísalo como revisarías el código de un colega, y pruébalo en la máquina real según exija tu planta.
¿Cómo sabe de qué fabricante es mi código?
Lee el código, como un traductor reconoce un idioma. Un # delante de los nombres de las variables indica Siemens, TONR o .DN indica Studio 5000, y T#2s en variables sin # indica TwinCAT. Te dice lo que vio, y si el código podría ser de cualquier fabricante, te lo dice y te deja elegir. Los archivos dicen lo que son: .scl, .L5X, .TcPOU y la exportación .xml de TIA Portal.
¿Lee el ladder (KOP) y el FUP de Siemens desde TIA Portal?
Sí, desde la exportación XML de TIA Portal. Un bloque KOP (LAD) o FUP (FBD) no tiene fuente .scl, así que el XML es la forma en que sale de TIA Portal: desde la V16, añade un área de trabajo en Version control interface en el árbol del proyecto y lleva el bloque a ella, y TIA Portal escribe el bloque como archivo .xml. Los scripts de Openness escriben el mismo archivo. Cada segmento se lee como el SCL que hace lo mismo, una bobina como todo lo que está cableado a su entrada y un cuadro como una llamada, y desde ahí se convierte a Rockwell o TwinCAT, en texto estructurado o en ladder. Abre con él los bloques de datos y los tipos de datos del bloque y se leen juntos. El lector se escribió a partir de la descripción del formato que da Siemens y no se ha probado con todas las versiones de TIA Portal, así que un segmento con una parte que no lee se nombra y queda para ti, y el resto del bloque se convierte a su alrededor.
¿Se puede convertir lógica ladder a texto estructurado?
Sí, siempre. Cada renglón se convierte en una o dos líneas de texto estructurado: los contactos pasan a AND y OR, las bobinas pasan a asignaciones, OTL y OTU pasan a IF … THEN, y los temporizadores, contadores e impulsos únicos pasan a llamadas al estilo propio del fabricante de destino. Los comentarios de los renglones pasan como comentarios.
¿Cualquier texto estructurado se puede pasar a ladder?
La mayoría de la lógica de control sí: contactos, bobinas, set y reset, temporizadores, contadores, flancos, comparaciones, movimientos y matemáticas. Los bucles FOR no, porque ladder ejecuta cada renglón una vez por escaneo, así que el convertidor marca la línea y sugiere escribir un renglón por elemento o dejar esa parte en texto estructurado.
¿Convierte mis propios bloques de función, Add-On Instructions y UDT?
Sí. Una AOI de Studio 5000 se convierte en un FB de TIA Portal o en un FUNCTION_BLOCK de TwinCAT, y al revés. Las AOI escritas en ladder siguen en ladder cuando conviertes a LAD de TIA Portal, y pasan a texto estructurado en los demás casos. Un UDT se convierte en un tipo de datos PLC o en un STRUCT de TwinCAT. Las llamadas también cambian: Studio 5000 pasa la instancia y luego los parámetros obligatorios en orden, mientras que TIA Portal y TwinCAT nombran cada parámetro. Las estructuras de entrada entran en una AOI como InOut, TIME pasa a DINT en milisegundos, y los valores por defecto de un UDT pasan a las variables, porque los UDT de Logix no pueden guardar valores por defecto. Cada cambio aparece en el informe, y la prueba de comprobación compara también cada miembro de la estructura.
¿Qué pasa con las rutinas EnableInFalse y Prescan de una AOI en TIA Portal o TwinCAT?
Ninguno de los dos tiene rutinas por modo de escaneo, así que el bloque de función hace ese trabajo por sí mismo. EnableInFalse pasa a ser una entrada EnableIn: el bloque se llama en cada escaneo con EnableIn tomado de su renglón, y su IF … ELSE ejecuta la lógica de EnableInFalse cuando el renglón está desactivado. Prescan pasa a ser código que se ejecuta una vez, al inicio de la primera llamada del bloque. Postscan solo se ejecuta cuando termina una acción SFC, así que se mantiene para Studio 5000 y se anota en los demás. La prueba de comprobación verifica que las dos versiones se comportan igual.
¿Cómo sé que el código convertido hace lo mismo?
PLC Gym ejecuta tu programa original y el convertido lado a lado en su simulador durante miles de escaneos, con las mismas entradas en los dos, y compara cada salida en cada escaneo. Las entradas numéricas se llevan más allá de los límites de tu código y por todo el rango de su tipo, y la página muestra el rango que probó. Solo dice que coinciden cuando durante la ejecución se ejecutó cada línea de tu programa, cambió cada salida de encendido y apagado, y cada temporizador y contador llegó hasta el final. Lo que no pudo probar se nombra, y entonces el resultado dice parcial. Que coincidan significa que estuvieron de acuerdo en esas pruebas, así que no es una garantía. Ves el resultado como una traza de analizador lógico. Pulsa Ejecutarlo para abrir el programa convertido en el panel de control de PLC Gym, con botones, interruptores y lámparas creados a partir de sus variables, y pruébalo tú mismo. Prueba siempre en la máquina real según exija tu planta.
¿El convertidor es gratis?
Los ejemplos ya preparados están abiertos para todos, sin cuenta. Cada cuenta tiene una prueba de Pro gratis hasta el 5 de diciembre de 2026, así que hasta entonces una cuenta gratis convierte todo el código propio que quieras. Después, una cuenta gratis convierte 3 programas propios, y convertir el mismo código otra vez o a otro fabricante no gasta otro.
¿Mi código se sube a algún sitio?
Tu código va a nuestro servidor por una conexión cifrada para poder convertirlo, y el resultado vuelve enseguida. No lo guardamos ni lo registramos, y queda oculto en las grabaciones de sesión que usamos para mejorar el sitio. En una cuenta gratis guardamos una huella cifrada de hasta 3 programas, para que el mismo código no cuente dos veces. No se puede convertir de nuevo en tu código, y se borra cuando se borra tu cuenta.
¿Puedo importar el resultado en TIA Portal, Studio 5000 o TwinCAT?
Sí. Descarga una fuente .scl y usa Generar bloques desde fuente en TIA Portal, un .L5X para importar en Studio 5000, o un .TcPOU para añadir a un proyecto de TwinCAT 3. Tus propios tipos y bloques también vienen: en el .scl y el .L5X, o como un zip de archivos .TcDUT y .TcPOU para TwinCAT. TIA Portal no tiene formato de texto para ladder, así que para LAD de Siemens vuelves a dibujar los segmentos que se muestran, o usas el archivo SCL. Trata estos archivos como una beta: el .L5X de momento solo se ha probado leyéndolo de vuelta en PLC Gym, así que revisa cada importación en el software del propio fabricante.
¿Qué no convierte?
Solo la lógica: no la configuración de hardware, las comunicaciones, las variables de HMI ni los bloques de librería del fabricante como PID y movimiento. Tus propios bloques de función, AOI y UDT sí se convierten, siempre que su lógica sea ladder o texto estructurado. Todo lo que no puede pasar se lista con la línea y qué hacer, nunca se omite sin avisar.
¿Conviertes entre fabricantes? Intercambia consejos en el Vestuario.