Pregunta

Una documentación de PLC (Omron) muestra un uso correcto e incorrecto de las banderas de condición (ver imagen). Pero no veo ninguna diferencia entre los dos: si la instrucción A está activada, se ejecutará tanto la instrucción B como la instrucción no marcada. Ambos diagrama de escalera implica lograr lo mismo para mí. ¿Por qué uno es incorrecto y el otro es correcto?

enter image description here

¿Fue útil?

Solución

Esto es similar al problema de instrucción diferencial. Nuevamente, el indicador de condición (CF) es global y cambia cada vez, en este caso, se ejecuta una operación de comparación.

En el ejemplo incorrecto, la instrucción A realizará una comparación y el CF para igual (=) será verdadero o falso. El flujo de operación deseado implícito es que si la instrucción A devuelve verdadero para igual, ejecute la instrucción B, de lo contrario continúe con el peldaño final.

Sin embargo, en el caso de que la instrucción sea una verdadera verdadera por igual, la instrucción B se ejecutará y, en este caso, está implícito que también está realizando una operación de comparación (presumiblemente para ser recogida en el siguiente peldaño). Sin embargo, si B devuelve falso por igual, entonces la rama final del peldaño actual aún se ejecutará porque tiene lugar después de la comparación de B, esto a pesar de que la intención es solo ejecutar la rama final si A devuelve falso, ¡no B!

El segundo ejemplo (correcto) muestra cómo evitar la filtración de los resultados de B en la lógica de A.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top