Lenguaje de programación de PLC

 Tipos de Lenguajes de Programación de PLC 

Los lenguajes de programación de un PLC están estandarizados por la norma internacional IEC 61131-3. Esta norma define cinco lenguajes principales, diseñados para diferentes propósitos y estilos de programación.

Aquí se detalla cada uno de ellos:

1. Diagrama de Escalera (Ladder Diagram - LD / LAD)

  • Es, con diferencia, el lenguaje más popular y ampliamente utilizado en la programación de PLC. Su diseño se basa en la representación gráfica de circuitos de control con relés electromecánicos. Se ve como una serie de "escaleras" con dos rieles verticales (uno para el positivo de la alimentación y otro para el negativo) y "peldaños" horizontales que contienen la lógica.
  • Elementos principales:
    • Contactos (contactos de entrada): Representan el estado de una entrada (sensor, pulsador) o una salida interna. Pueden ser normalmente abiertos (NO) o normalmente cerrados (NC).
    • Bobinas (bobinas de salida): Representan la activación de una salida física (motor, luz, válvula) o una variable interna (memoria).
    • Bloques de función: Instrucciones más complejas como temporizadores, contadores, operaciones matemáticas, etc., que se insertan en los peldaños.
  • Ventajas:
    • Muy intuitivo: Especialmente para electricistas y técnicos familiarizados con la lógica de relés, ya que se parece a un diagrama de cableado.
    • Fácil de depurar: La visualización del flujo de energía (o "power flow") en el software de programación facilita el seguimiento de la lógica y la identificación de problemas.
    • Ideal para control discreto: Excelente para lógica booleana simple (verdadero/falso) y secuencias.
  • Desventajas:
    • Puede volverse muy extenso y difícil de manejar para algoritmos complejos o cálculos matemáticos.
    • La modularidad es más limitada que en otros lenguajes.
  • Analogía: Piensa en encender una luz en tu casa. El interruptor es un "contacto" que, cuando lo cierras, permite que la "energía" fluya hacia el "foco" (la "bobina de salida"). 

2. Diagrama de Bloques de Función (Function Block Diagram - FBD)

  • Este lenguaje es un lenguaje gráfico que representa el flujo de señales y datos a través de bloques de función predefinidos. Cada bloque realiza una operación específica y tiene entradas y salidas que se conectan con otros bloques o variables del programa. 
  • Elementos principales:
    • Bloques de función: Son "cajas" que realizan operaciones lógicas (AND, OR, NOT), matemáticas (suma, resta), temporizadores, contadores, controles PID, etc.
    • Líneas de conexión: Unen las salidas de un bloque con las entradas de otro, mostrando cómo fluyen los datos.
  • Ventajas:
    • Modularidad: Promueve la reutilización de código, ya que puedes crear tus propios bloques de función y usarlos múltiples veces.
    • Claro para control de procesos: Excelente para visualizar el flujo de datos y el procesamiento de señales, ideal para control de procesos continuos (temperatura, presión).
    • Fácil de entender: Ingenieros con experiencia en electrónica digital o control de procesos lo encuentran muy natural.
  • Desventajas:
    • Puede ser menos intuitivo que el Ladder para lógica booleana muy simple.
    • La depuración del flujo de control complejo puede ser un desafío sin una buena organización.
  • Analogía: Imagina una receta de cocina donde cada paso es un bloque (ej., "Pelar papas", "Hervir agua", "Mezclar ingredientes"). La salida de un paso se convierte en la entrada del siguiente.

3. Texto Estructurado (Structured Text - ST)

  • Es un lenguaje de programación de alto nivel que se asemeja a lenguajes de programación textuales como Pascal, C o BASIC. Utiliza sentencias y estructuras de control para definir la lógica del programa.
  • Elementos principales:
    • Declaraciones de variables: Define las variables y sus tipos de datos.
    • Estructuras de control: IF-THEN-ELSE (condicionales), CASE (selección), FOR, WHILE, REPEAT-UNTIL (bucles o ciclos).
    • Operadores: Matemáticos (+, -, *, /), lógicos (AND, OR, NOT), de comparación (>, <, =, etc.).
    • Funciones y bloques de función: Se pueden llamar bloques de función predefinidos o creados por el usuario.
  • Ventajas:
    • Potente y flexible: Ideal para lógica compleja, cálculos matemáticos avanzados, algoritmos, manipulación de cadenas de texto y comunicación de datos.
    • Familiar para programadores de software: Los ingenieros con experiencia en programación de computadoras lo adoptan fácilmente.
    • Compacto: Permite escribir mucha lógica en relativamente pocas líneas de código.
  • Desventajas:
    • Menos visual para la depuración en tiempo real en comparación con LD o FBD.
    • Puede ser más difícil de entender para personal sin experiencia en programación textual.
  • Analogía: Es como escribir un programa en un lenguaje de computadora normal, donde das instrucciones paso a paso usando palabras y símbolos para controlar el flujo del programa.

1.   Gráfico de Funciones Secuenciales (Sequential Function Chart - SFC)

  • SFC no es un lenguaje de programación en el sentido estricto, sino una estructura organizativa que describe el comportamiento secuencial de un proceso. Se basa en el concepto de estados (pasos) y transiciones entre esos estados. Cada paso puede tener acciones asociadas, y cada transición tiene una condición que debe cumplirse para pasar al siguiente paso.
  • Elementos principales:
    • Pasos (Steps): Representan un estado particular del proceso, donde se ejecutan ciertas acciones.
    • Transiciones (Transitions): Conectan los pasos y solo se activan cuando una condición lógica específica es verdadera, permitiendo el avance al siguiente paso.
    • Acciones: Lógicas que se ejecutan cuando un paso está activo (pueden ser programadas en LD, FBD o ST).
    • Convergencias/Divergencias: Permiten la ejecución paralela de ramas o la selección de una única rama.
  • Ventajas:
    • Excelente para procesos secuenciales: Ideal para visualizar y gestionar procesos por lotes, máquinas de estados o cualquier aplicación donde el orden de las operaciones es crítico.
    • Facilita el diseño y la depuración: Ayuda a dividir un proceso complejo en etapas lógicas y permite ver claramente dónde se encuentra el proceso en un momento dado.
    • Simplifica el mantenimiento: Al tener la secuencia bien definida, es más fácil identificar dónde falló un proceso.
  • Desventajas:
    • No es adecuado para lógica combinacional o cálculos puros.
    • Las acciones dentro de los pasos aún deben programarse en LD, FBD o ST.
  • Analogía: Piensa en un flujograma o un proceso de fabricación paso a paso. "Paso 1: Calentar horno". Una vez que "Horno alcanza temperatura" (transición), entonces "Paso 2: Hornear pan". 

2.   Lista de Instrucciones (Instruction List - IL)

  • Es un lenguaje de programación de bajo nivel, similar al lenguaje ensamblador. Consiste en una serie de instrucciones nemotécnicas (abreviaturas de operaciones, como LD para cargar, ST para almacenar, AND, OR, etc.) que se ejecutan de forma secuencial.
  • Ventajas:
    • Control muy granular: Ofrece un control muy preciso sobre las operaciones del PLC.
    • Eficiencia: Puede ser muy eficiente en términos de uso de memoria y velocidad de ejecución, aunque en PLCs modernos esto ya no es una ventaja tan significativa.
  • Desventajas:
    • Muy difícil de leer y mantener: Es el menos amigable para el ser humano y el más propenso a errores, especialmente en programas grandes.
    • No visual: No ofrece la ayuda visual de los lenguajes gráficos.
    • Uso decreciente: Aunque forma parte del estándar IEC 61131-3, su uso ha disminuido considerablemente y muchos programadores lo consideran obsoleto. Las herramientas de programación modernas rara vez lo exponen directamente al usuario, aunque el PLC internamente lo compile a un código similar.
  • Analogía: Es como dar instrucciones muy específicas a un robot, una por una, usando códigos abreviados, sin una visión general de la tarea.

ERRORES DE COMUNES DE PROGRAMACION

La programación de un PLC (Controlador Lógico Programable) es una disciplina crucial en la automatización industrial, y como cualquier programación, está sujeta a una serie de errores comunes que pueden generar desde un mal funcionamiento menor hasta fallas críticas en el sistema. A continuación, se detallan los errores más frecuentes:

1. Errores de Diseño y Estructura del Programa:

 

·         Falta de organización y modularidad: Escribir todo el programa en un solo bloque o sin una estructura clara hace que sea muy difícil de entender, depurar y mantener. La ausencia de módulos o subrutinas para funciones específicas complica enormemente las modificaciones futuras.

·         Documentación deficiente: No documentar el código de manera adecuada (comentarios, descripciones de variables, etc.) es un error grave. Si otra persona (o incluso el mismo programador meses después) necesita entender o modificar el programa, la falta de documentación puede generar confusión y errores.

·         Uso excesivo de etiquetas y variables redundantes: Crear múltiples etiquetas o variables para la misma función o dato, o no eliminarlas cuando ya no son necesarias, consume memoria innecesariamente y hace el programa más complejo.

·         No reutilizar programas existentes o bloques de funciones: Reinventar la rueda cada vez que se necesita una funcionalidad similar es una pérdida de tiempo y aumenta la probabilidad de introducir nuevos errores. La creación y el uso de bloques de funciones reutilizables son fundamentales.

·         No utilizar sistemas de control de versiones: No llevar un registro de los cambios realizados en el programa dificulta la reversión a versiones anteriores si se introduce un error, y complica el trabajo en equipo.

 

2. Errores de Lógica y Programación:

 

·         Errores de sintaxis: Similar a cualquier lenguaje de programación, los errores tipográficos, el uso incorrecto de símbolos o la omisión de elementos (paréntesis, puntos y comas, etc.) pueden impedir que el programa se compile o se ejecute correctamente.

·         Errores de lógica (los más difíciles de detectar): El programa puede compilar y ejecutarse, pero no produce el resultado deseado. Esto se debe a fallas en la lógica interna, como:

o    Condiciones incorrectas: Por ejemplo, un motor que debería detenerse después de un tiempo específico y sigue funcionando.

o    Conflictos de salidas: Dos o más ramas del programa intentando controlar la misma salida a estados opuestos en el mismo ciclo de escaneo.

o    Manejo incorrecto de temporizadores y contadores: No considerar los límites máximos/mínimos de los contadores, o que los temporizadores no se actualicen lo suficientemente rápido en programas grandes.

o    Lógica sobre complicada: Añadir condiciones o características innecesarias que hacen el código difícil de seguir y propenso a errores.

·         No manejar excepciones: Programar solo para el funcionamiento normal y no considerar posibles errores o situaciones inesperadas (por ejemplo, fallas de sensores, sobrecargas).

 

3. Errores de Configuración y Hardware:

 

·         Configuración incorrecta del hardware: Seleccionar un PLC o módulos de E/S que no tienen la capacidad necesaria (memoria, capacidad de procesamiento, cantidad de E/S) o utilizar dispositivos periféricos incompatibles.

·         Cableado incorrecto: Conexiones sueltas, polaridad invertida, tierra inadecuada o terminales mal etiquetados pueden causar lecturas erráticas, comportamiento impredecible de la máquina o fallos intermitentes.

·         Problemas de alimentación eléctrica: Fluctuaciones de voltaje, cortes o sobrecargas pueden dañar los componentes internos del PLC.

·         Factores ambientales: No considerar el entorno donde operará el PLC (temperatura extrema, humedad, polvo, sustancias corrosivas) puede llevar a fallas de hardware.

·         Falta de actualización de firmware: No mantener el firmware del PLC actualizado puede generar incompatibilidades, reducir el rendimiento y crear vulnerabilidades de seguridad.

 

1.    Errores de Pruebas y Mantenimiento:

 

·         Ignorar las pruebas y simulaciones adecuadas: No realizar pruebas exhaustivas con simulaciones o en condiciones controladas antes de la puesta en marcha puede llevar a problemas costosos y peligrosos en el campo.

·         Falta de mantenimiento y revisión periódica: No realizar pruebas y simulaciones de forma periódica, o no llevar a cabo un mantenimiento preventivo, puede pasar por alto problemas incipientes.

·         No realizar copias de seguridad: La pérdida de memoria del PLC o un programa corrupto puede ser devastador si no se tienen copias de seguridad periódicas.

 

Para evitar estos errores, se recomienda:

 

·         Planificación exhaustiva: Entender claramente los objetivos y requisitos del proyecto antes de empezar a programar.

·         Estructura y modularidad: Diseñar el programa con una arquitectura clara y modular.

·         Documentación rigurosa: Comentar el código a medida que se escribe y mantener una documentación actualizada.

·         Reutilización y estandarización: Crear y utilizar bloques de funciones y adherirse a convenciones de nombres y prácticas de programación estándar.

·         Control de versiones: Implementar un sistema de control de versiones para gestionar los cambios en el código.

·         Pruebas exhaustivas: Realizar pruebas y simulaciones completas en diferentes escenarios.

·         Mantenimiento preventivo: Establecer un plan de mantenimiento regular y realizar copias de seguridad periódicas.

·         Capacitación continua: Mantenerse actualizado con las últimas prácticas y tecnologías en programación de PLC. 

Evitar estos errores comunes no solo mejora la fiabilidad y eficiencia de los sistemas de automatización, sino que también reduce el tiempo de depuración y mantenimiento a largo plazo.

VER: CONTENIDOS

Lenguaje de Programación
Lenguaje de Programción

ENTRADAS POPULARES

Sensores Rejillas Fotoeléctricas guía y especificaciones.

Seguridad Industrial Información Util y Detallada

Tipos de Fusibles y Clasificación

Sensores y su influencia en la Industria...

Sensores Rejillas Fotoeléctricas

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *