Блин.....задержки, время цикла, контакты, сорт кнопок...
все три кнопки обычные, с ОДНОЙ группой контактов, третья развязана с остальными по входам двумя диодами.
два фронта вверх в одном цикле, значит нажата третья кнопка, два фронта вниз--отпустили кнопку. остальное, комбинация первых двух.
Не так. я имел в виду фронт сигнала, т.е переход из состояния 0 в 1, в прошлом цикле было 0, в этом 1, значит есть фронт, фронт вниз, или "задний" было 1 стало 0.
благодаря диодам, оба сигнала придут одновременно т.е. нажатие третьей кнопки отличите всегда, если же какая-то из первых уже нажата, третью кнопку в этот момент не увидеть, но этой ситуации небыло в вопросе.
если есть два свободных транзисторных выхода, сделайте матрицу 2Х2, получите 4 кнопки
От чего же не так? Все так. И работает, можно проверить и в эмуляторе, выполняя программу по одному циклу. Нужно учитывать логику работы ПЛК - в начале цикла состояние физических входов запоминается и эти состояния используются для текущего цикла. Т.е. изменение состояния входов до начала следующего цикла ПЛК просто не заметит.
В предыдущем примере была некоторая паранойя с использованием 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, если нажать вторую кнопку после включения первой и на оборот.
Последний раз редактировалось petera; 27.09.2012 в 14:35.