1. Historia
ClassicLadder es una implementación libre de un intérprete ladder, liberado bajo la LGPL. Escrito por Marc Le Douarain.
Él describe el inicio del proyecto en su sitio web:
Decidí programar un lenguaje ladder solo para propósitos de prueba en un principio, en febrero de 2001. Estaba planeado que participaría en un producto nuevo después de dejar la empresa para la que estaba trabajando en ese tiempo. Y pensé que tener un lenguaje ladder en esos productos sería una buena opción a considerar. Entonces comencé a escribir las primeras líneas de código para calcular un peldaño con elementos mínimos y desplegarlos dinámicamente en Gtk, para ver si mi primer idea a realizar funcionaba del todo.
Y tan pronto descubrí que avanzó bastante bien continué con elementos más complejos: temporizador, múltiples peldaños, etc…
Vualá, aquí esta éste trabajo… y más: he continuado añadiendo características desde entonces.
— Marc Le Douarain, de "Genesis" en el sitio web de ClassicLadder
ClassicLadder has sido adaptado para trabajar con la HAL de LinuxCNC, y actualmente se distribuye junto con LinuxCNC. Si hay asuntos/problemas/errores por favor repórtelos al proyecto LinuxCNC.
2. Introducción
Lógica Ladder o el lenguaje de programación Ladder es un método para dibujar esquemas lógicos eléctricos. Ahora es un lenguaje de programación gráfico muy popular para Controladores Lógicos Programables (PLCs). Se inventó originalmente para describir la lógica hecha con reveladores. El nombre se basa en la observación de que programas en este lenguaje asemejan escaleras, con dos rieles verticales y una serie de peldaños horizontales entre ellos. En Alemania y otras partes de Europa, se estila dibujar los rieles horizontalmente entre las partes superior e inferior de la página, mientras que los peldaños se dibujan verticalmente de izquierda a derecha.
Un programa en lógica Ladder, también llamado diagrama de escalera, es similar a un diagrama para un conjunto de circuitos relevadores. La lógica Ladder es útil por que una amplia variedad de ingenieros y técnicos pueden entenderlo y usarlo sin mucho entrenamiento adicional por su semejanza.
La lógica Ladder se usa ampliamente para programar PLCs, donde se requiere el control secuencial de un proceso u operación de manufactura. La lógica Ladder es útil para sistemas de control simples pero críticos, o para retrabajar viejos circuitos relevadores de cableado rígido. Así como los controladores lógicos programables se volvieron más sofisticados, también han sido usados en sistemas de automatización muy complejos.
Se puede pensar la lógica Ladder como un lenguaje basado en reglas, más que un lenguaje procedural. Un peldaño en la escalera representa una regla. Cuando se implementa con relevadores y otros dispositivos electromecánicos, las varias reglas se ejecutan simultáneamente e inmediatamente. Cuando se implementa en un controlador lógico programable, las reglas son típicamente ejecutadas secuencialmente por software, en un bucle. Ejecutando el bucle lo suficientemente rápido, típicamente varias veces por segundo, se obtiene el efecto de ejecución simultánea e inmediata.
La lógica Ladder sigue estos pasos generales para su operación.
-
Leer entradas
-
Resolver lógica
-
Actualizar salidas
3. Ejemplo
Los componentes más comunes de Ladder son contactos (entradas), estos son comúnmente NC (normalmente cerrados) o NA (normalmente abiertos), y bobinas (salidas).
-
el contacto NA

-
el contacto NC

-
la bobina (salida)

Por supuesto, hay muchos otros componentes más en un lenguaje Ladder completo, pero éstos te ayudarán a comprender el concepto general.
La escalera consiste en uno o más peldaños. Estos peldaños son trazos horizontales (representando cables), con componentes en ellos (entradas, salidas u otros), los cuales se evalúan de izquierda a derecha.
Este ejemplo es el peldaño más simple:
La entrada de la izquierda B0 es un contacto normalmente abierto, esta conectado a la bobina (salida) de la derecha Q0. Ahora imagina que se aplica un voltaje en el extremo izquierdo, debido a que la entrada B0 se hace verdadera (p. ej. se activa la entrada, o el usuario presiona el contacto NA) el voltaje tiene un camino directo a la bobina (salida) de la derecha Q0. En consecuencia, la bobina Q0 (salida) cambia de 0/apagado/falso a 1/encendido/verdadero. Si el usuario libera B0, la salida Q0 rápidamente regresa a 0/apagado/falso.
4. Circuito básico de encendido-apagado con enclavamiento
A partir del ejemplo de arriba, supongamos que agregamos un interruptor que cierra cuando la bobina Q0 está activa. Este sería el caso en un relevador, donde la bobina puede activar los contactos del interruptor; o un contactor, donde a menudo hay varios contactos pequeños auxiliares además de los contactos grandes trifásicos que son la característica primordial del contactor.
Ya que este interruptor auxiliar es controlado por la bobina Q0 de nuestro ejemplo anterior, le daremos el mismo número. Esta es la práctica estándar que se sigue en la programación ladder, aunque pueda parecer extraño a primera vista ver un interruptor etiquetado igual que una bobina. Así que vamos a llamar a este contacto auxiliar Q0 y a conectarlo al botón pulsador B0 del ejemplo anterior.
Echemos un vistazo:
Como antes, cuando el usuario presiona el botón pulsador B0, la bobina Q0 se activa. Y cuando la bobina Q0 se activa el interruptor Q0 se cierra, y ocurre la parte interesante: cuando el usuario suelta el botón pulsador B0, la bobina Q0 no se desactiva como antes. Esto es porque el interruptor Q0 del circuito está manteniendo presionado al botón pulsador del usuario. Así vemos que el interruptor Q0 mantiene la bobina Q0 activa después de soltar el botón pulsador inicio.
Este tipo de contacto en una bobina o relevador, usado de este modo, a menudo se le llama contacto de autorretención, debido a que retiene la bobina a la que se asocia. Ocasionalmente se le llama contacto sello y cuando esta activo se dice que el circuito esta sellado.
Desafortunadamente nuestro circuito tiene poco uso práctico hasta ahora, porque aunque tengamos un botón encendido o inicio en la forma de botón pulsador B0, no tenemos modo de abrir el circuito una vez iniciado. Pero es fácil de arreglar; todo lo que necesitamos es una manera de interrumpir la energía de la bobina Q0. Así que agreguemos un botón pulsador normalmente cerrado (NC) justo antes de la bobina Q0.
Así es como se vería:
Ahora que hemos agregado el botón pulsador apagado o paro B1, si el usuario lo presiona se rompe el contacto del peldaño a la bobina. Cuando la bobina Q0 pierde energía cae a 0/apagado/falso. Cuando la bobina Q0 se abre, también lo hace el interruptor Q0, así que el contacto retenedor se rompe, o el circuito queda sin sellar. Cuando el usuario suelta el botón pulsador stop, el contacto se restaura en el peldaño a la bobina Q0, pero el peldaño queda muerto, así que la bobina no vuelve a activarse.
Este circuito ha sido usado por décadas en virtualmente toda máquina que tiene un motor trifásico controlado por contactor, así que era inevitable que fuera adoptado por los programadores de ladder/PLC. Además es un circuito muy seguro, en que si presionan ambos botones inicio y paro al mismo tiempo, la función de paro siempre gana.
Este es el bloque básico de construcción de la mayoría de la programación ladder, así que si eres nuevo en ella, harás bien en asegurarte que has comprendido cómo opera este circuito.