Usted tiene razón en su secuencia de ejecución y su declaración de que un renglón puede tener varias líneas .
Ladder vs text
En los viejos tiempos, muchos de los programadores de PLC podían cambiar entre ladder y texto o 'op-codes' (no recuerdo la terminología correcta). Mitsubishi todavía apoya esto. Allen-Bradley lo hace porque puede editar un peldaño de escalera con un editor de texto y he usado esta función para crear la lógica de escalera en Excel (incrementando las entradas y salidas por fórmula) y pegando los resultados nuevamente en el editor de escalera. La versión de texto da una mejor pista en cuanto a la ejecución. Su código, por ejemplo, se convierte en:
A B X
--| |----| |--+-------------( )-
|
C |
--| |---------+
OP VAL ACC Comment
ST A 0 0 ! Store A in ACCumulator
AND B 0 0 ! Logical AND of B with ACCumulator
OR C 1 1 ! Logical OR of C with ACCumulator
OUT X 1 ! Copy ACCumulator to X
Las ramas difíciles requieren BST (inicio de rama) y BND (extremo de rama) o equivalente, lo que permite que los resultados intermedios se inserten en una pila.
Una búsqueda rápida en la web arrojó este sitio que no es brillante pero puede ser de alguna utilidad.
NO contactos
Para cualquiera que sea nuevo en esto, los contactos 'no' están representados por '/'. Ver X1 y NO X2 en el siguiente ejemplo. (Muchos PLC utilizan 'X' para la entrada y 'Y' para la salida.)
X1 X2 Y0
--| |----|/|--+-------------( )-
|
X3 |
--| |---------+
El OP es correcto en el sentido de que podría dar más de una pista visual al orden de ejecución si la escalera se dibuja de la siguiente manera:
X1 X2
--| |----|/|--+
|
X3 | Y0
--| |---------+-------------( )-
Sin embargo, la onda cerebral de la lógica de escalera era que presentaba la lógica en forma de un esquema eléctrico con el que los electricistas estaban familiarizados. Un electricista "sabría" que la corriente podría fluir "hacia arriba" o derivarse a la bobina. Uno de los problemas comunes en la capacitación de electricistas fue transmitir el concepto de que, si bien el listado de escalera parece que todo funciona simultáneamente, de hecho, se está ejecutando de forma secuencial.
Aprovechando el escaneo secuencial
El siguiente ejemplo de un solo disparo hecho en casa muestra un ejemplo de uso de lógica secuencial que podría no funcionar con lógica de relé real.
! C0 fires for one scan when X1 turns on
! provided the one-shot memory is off.
X1 C1 C0
--| |----|/|----------------( )-
! C1 'remembers' that X1 was on.
X1 C1
--| |-----------------------( )-
! Y0 fires for one program scan.
C0 Y0
--| |-----------------------( )-
La lógica debe ser bastante clara. Tratar de hacer esto con relés crearía una condición de carrera (aunque habría otras soluciones en ese caso).
Orden de ejecución del programa
Normalmente, el orden de ejecución de tareas de PLC se ejecuta de la siguiente manera:
- Lee las entradas.
- Ejecuta la lógica.
- Escribe las salidas.
- Manejar otras tareas, etc.
Cada 'escaneo' en procesadores más nuevos toma < 1 ms que ha bajado mucho desde los primeros días, donde 20 a 50 ms habrían sido comunes para programas más grandes.
Supervisión de estado en línea
Para aquellos que son nuevos en el tema: el diagrama de escalera también es muy útil para la depuración en línea. El estado de los contactos o 'flujo de energía' se indica cambiando el color o la representación del cable.
X1 X2 Y0
--| |--==|/|==+=============( )-
|
X3 |
==| |=========+
En el ejemplo anterior, podemos ver que tenemos un contacto abierto en la primera rama (lo que indica que X1 está desactivado), mientras que la rama inferior tiene un circuito completo de X3 a Y0 que se enciende. Esto proporciona una visualización fácil de entender de la lógica del programa.