От чего же не так? Все так. И работает, можно проверить и в эмуляторе, выполняя программу по одному циклу. Нужно учитывать логику работы ПЛК - в начале цикла состояние физических входов запоминается и эти состояния используются для текущего цикла. Т.е. изменение состояния входов до начала следующего цикла ПЛК просто не заметит.
В предыдущем примере была некоторая паранойя с использованием RS триггера. Можно и проще.LD как раз для таких задач, все наглядно и понятно (с учетом принципа работы ПЛК).
Фиксация одновременного изменения in1 и in2 ("...переход из состояния 0 в 1, в прошлом цикле было 0, в этом 1, значит есть фронт, фронт вниз, или "задний" было 1 стало 0") выполняется автоматически в первой цепи примера безо всяких дополнительных ухищрений. Результат - состояние кнопки 3 (kn3).
Вторая и третья цепь использует состояние kn3, полученное в первой цепи и состояние входов in1 или in2, которое было на начало цикла. Если уже нажата кнопка 3 (на начало цикла активны in1 и in2), то кнопки 1 и 2 не включаются. Или, если не нажата кнопка 3 (на начало цикла не активны один из входов in1 или in2), то кнопки 1 или 2 включаются.
З.Ы. Инверсные контакты kn1 и kn2 в первой цепи блокируют включение kn3, если нажать вторую кнопку после включения первой и на оборот.





Ответить с цитированием