ParamManagerScripts/backend/script_groups/TwinCat
Miguel 26bc892243 Actualización de directorios de trabajo y logs en el script de obtención de IO de TIA Portal
- Se modificaron los directorios de trabajo en `script_config.json` y `work_dir.json` para apuntar a la nueva ubicación de los archivos del proyecto 98050.
- Se actualizaron los logs de ejecución en `log_x1.txt` y `log_x4.txt` para reflejar las nuevas fechas, duraciones y resultados de los procesos de exportación.
- Se registraron errores en `log_x4.txt` relacionados con el acceso al proyecto, indicando que ya estaba abierto por otro usuario.
2025-06-19 19:07:49 +02:00
..
.doc Actualización de directorios de trabajo y mejora en la gestión de logs 2025-06-19 18:05:47 +02:00
README.md Primera Version TwinCat Converter 2025-06-19 14:30:15 +02:00
test_arraytoreal.py Actualización de directorios de trabajo y logs en el script de obtención de IO de TIA Portal 2025-06-19 19:07:49 +02:00
test_arraytoreal_indent.scl Actualización de directorios de trabajo y logs en el script de obtención de IO de TIA Portal 2025-06-19 19:07:49 +02:00
test_converter.py Eliminación de archivos de ejemplo en el convertidor LAD de TwinCAT. Se han eliminado múltiples archivos .EXP que ya no son necesarios, optimizando así la estructura del proyecto y reduciendo la confusión en la gestión de ejemplos. Se mantiene la funcionalidad principal del convertidor en `x1_lad_converter.py` para la conversión de archivos .EXP a .SCL. 2025-06-19 18:39:04 +02:00
test_filling_head_debug.scl Eliminación de archivos de ejemplo en el convertidor LAD de TwinCAT. Se han eliminado múltiples archivos .EXP que ya no son necesarios, optimizando así la estructura del proyecto y reduciendo la confusión en la gestión de ejemplos. Se mantiene la funcionalidad principal del convertidor en `x1_lad_converter.py` para la conversión de archivos .EXP a .SCL. 2025-06-19 18:39:04 +02:00
test_output.scl Eliminación de archivos de ejemplo en el convertidor LAD de TwinCAT. Se han eliminado múltiples archivos .EXP que ya no son necesarios, optimizando así la estructura del proyecto y reduciendo la confusión en la gestión de ejemplos. Se mantiene la funcionalidad principal del convertidor en `x1_lad_converter.py` para la conversión de archivos .EXP a .SCL. 2025-06-19 18:39:04 +02:00
test_pattern_output.scl Eliminación de archivos de ejemplo en el convertidor LAD de TwinCAT. Se han eliminado múltiples archivos .EXP que ya no son necesarios, optimizando así la estructura del proyecto y reduciendo la confusión en la gestión de ejemplos. Se mantiene la funcionalidad principal del convertidor en `x1_lad_converter.py` para la conversión de archivos .EXP a .SCL. 2025-06-19 18:39:04 +02:00
test_specific_file.py Eliminación de archivos de ejemplo en el convertidor LAD de TwinCAT. Se han eliminado múltiples archivos .EXP que ya no son necesarios, optimizando así la estructura del proyecto y reduciendo la confusión en la gestión de ejemplos. Se mantiene la funcionalidad principal del convertidor en `x1_lad_converter.py` para la conversión de archivos .EXP a .SCL. 2025-06-19 18:39:04 +02:00
x1_lad_converter.py Actualización de directorios de trabajo y logs en el script de obtención de IO de TIA Portal 2025-06-19 19:07:49 +02:00

README.md

Convertidor LAD a Pseudocódigo Estructurado

Descripción

Este proyecto proporciona herramientas para convertir código LAD (Ladder Diagram) de TwinCAT a pseudocódigo estructurado compatible con IEC61131-3. El convertidor mantiene la semántica original del código LAD mientras lo transforma a un formato más legible y estructurado.

Características

  • Parsing completo de LAD: Analiza la estructura completa de archivos .EXP de TwinCAT
  • Conversión semántica: Mantiene la lógica original del diagrama ladder
  • Formato estructurado: Genera código pseudo estructurado con IF-THEN-END_IF
  • Manejo de contactos: Convierte contactos normales y negados correctamente
  • Function blocks: Identifica y convierte llamadas a bloques de función
  • Operadores matemáticos: Maneja operaciones aritméticas y lógicas
  • Comentarios: Preserva comentarios de las redes originales

Archivos del Proyecto

Convertidores Principales

  1. simple_lad_converter.py - Convertidor simplificado y robusto (recomendado)
  2. lad_to_pseudocode_converter.py - Convertidor básico inicial
  3. lad_to_pseudocode_converter_enhanced.py - Versión avanzada con más características

Archivos de Prueba

  • test_simple.py - Script de prueba para el convertidor simple
  • ejemplo_conversion.py - Ejemplo de uso del convertidor básico
  • test_enhanced_converter.py - Prueba para el convertidor avanzado

Uso Rápido

Método Simple (Recomendado)

python test_simple.py

Este comando procesará el archivo .example/INPUT.EXP y generará output_simple.txt con el código convertido.

Uso Directo del Convertidor

from simple_lad_converter import SimpleLadConverter

converter = SimpleLadConverter()
converter.parse_file("mi_archivo.EXP")
structured_code = converter.save_to_file("salida.txt")

Línea de Comandos

python lad_to_pseudocode_converter.py archivo_entrada.EXP archivo_salida.txt

Estructura del Código LAD Soportada

El convertidor puede procesar las siguientes estructuras de TwinCAT:

Elementos LAD Reconocidos

  • _NETWORK - Inicio de red
  • _LD_ASSIGN - Asignaciones
  • _LD_CONTACT - Contactos (entradas)
  • _LD_AND / _LD_OR - Operaciones lógicas
  • _FUNCTIONBLOCK - Bloques de función
  • _OPERATOR - Operadores matemáticos
  • _COMMENT / _END_COMMENT - Comentarios
  • _OUTPUT - Variables de salida

Operadores Soportados

  • Aritméticos: ADD, SUB, MUL, DIV
  • Lógicos: AND, OR
  • Comparación: LT, GT, EQ
  • Especiales: SEL, MOVE

Ejemplo de Conversión

Código LAD Original

_NETWORK
_COMMENT
Verificación de presión CO2
_END_COMMENT
_LD_ASSIGN
_LD_CONTACT
DI_Air_InletPress_OK
_NEGATIV
_FUNCTIONBLOCK
mAirPressOk
_OUTPUT
gInLinePressAirOk

Código Estructurado Generado

// Red 5
// Verificación de presión CO2
IF NOT DI_Air_InletPress_OK THEN
    gInLinePressAirOk := mAirPressOk();
END_IF;

Estructura del Archivo de Salida

El código generado sigue esta estructura:

// Código pseudo estructurado generado desde LAD TwinCAT
// Compatible con IEC61131-3
PROGRAM Input_Converted

    // Red 1
    IF condicion1 AND condicion2 THEN
        variable_salida := funcion_bloque(parametros);
    END_IF;
    
    // Red 2
    variable := operando1 ADD operando2;
    
    // Red N...

END_PROGRAM

Resultados de la Conversión

El convertidor ha procesado exitosamente el archivo INPUT.EXP que contiene:

  • 86 redes LAD en total
  • Múltiples tipos de elementos: contactos, function blocks, operadores
  • Preservación de comentarios originales
  • Conversión correcta de lógica condicional con IF-THEN-END_IF

Estadísticas del Ejemplo

  • Archivo de entrada: .example/INPUT.EXP (4,611 líneas)
  • Redes procesadas: 86
  • Archivo de salida: ~235 líneas de código estructurado
  • Reducción de complejidad: ~95%

Ventajas del Código Convertido

  1. Legibilidad: Más fácil de leer que el formato LAD textual
  2. Mantenibilidad: Estructura clara con comentarios preservados
  3. Debugging: Lógica condicional explícita
  4. Documentación: Comentarios de red integrados
  5. Portabilidad: Formato pseudo-código universal

Limitaciones Conocidas

  • Algunos parámetros internos pueden aparecer como _POSITIV, _NEGATIV
  • Estructuras complejas de LAD pueden requerir revisión manual
  • El convertidor es específico para el formato de TwinCAT

Desarrollo Futuro

  • Mejorar el parsing de parámetros de function blocks
  • Añadir soporte para más tipos de operadores
  • Implementar validación de sintaxis
  • Crear interfaz gráfica para conversión
  • Soporte para otros formatos de PLC

Contribuciones

Este convertidor fue desarrollado para facilitar el análisis y mantenimiento de código LAD en proyectos de automatización industrial. Las contribuciones y mejoras son bienvenidas.


Nota: Este es un proyecto de código abierto para ayudar en la migración y análisis de código LAD de TwinCAT a formatos más estructurados.