Правильное использование флагов условий в ПЛК - PullRequest
0 голосов
/ 21 февраля 2012

Документация ПЛК (Omron) показывает правильное и неправильное использование флагов условий (см. Изображение). Но я не вижу никакой разницы между ними: если инструкция A включена, то будет выполняться как инструкция B, так и немаркированная инструкция. Обе лестничные диаграммы подразумевают достижение одного и того же для меня. Почему одно неверно, а другое правильно?

enter image description here

1 Ответ

2 голосов
/ 21 февраля 2012

Это похоже на проблему дифференциальных команд.Опять же, флаг условия (CF) является глобальным и изменяется каждый раз, в этом случае выполняется операция сравнения.

В неверном примере инструкция A выполнит сравнение, а CF для равных (=)будет либо правда, либо ложь.Предполагаемый требуемый поток операций заключается в том, что если инструкция A возвращает истину для равных, тогда выполнить инструкцию B, в противном случае перейти к последней ступени.

Однако в случае, когда инструкция A возвращает истину для равных, тогда инструкция Bбудет выполняться, и, в этом случае, подразумевается, что он также выполняет операцию сравнения (предположительно, будет подхвачено на следующей ступени).Однако, если B возвращает false для равных, тогда последняя ветвь текущей ступени будет по-прежнему выполняться, потому что это происходит после сравнения с B - это даже при том, что намерение состоит в том, чтобы выполнить только последнюю ветвь, если A возвращает false - не B!

Второй пример (правильный) показывает, как избежать попадания результатов B в логику A.

...