ParamManagerScripts/backend/script_groups/TwinCat/README.md

5.0 KiB

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.