Сергей предложи ему использовать XOR на входах 1 и 2, чтобы при одновременном нажатии сигнал от них не проходил.
Вид для печати
Все гораздо проще, я хочу удобно. А значит должно сработать с первого раза и правильно (даже если пользователь я сделал что-то не так).
А на счет "случайно нажали какую-то кнопку, можно подержать её не менее секунды" мне ближе заложить двойное быстрое нажатие, чтобы восстановить режим. Не дружу я со всем удержаниями кнопок, поэтому стараюсь от них уйти.
Короче, насколько Вас понял, Вы так хотели, без всяких таймеров:
Вложение 39650
Спасибо, то, что надо.
Начал собирать временную сборку для ПР200. Добавил в нее Ваш пример но переделал на одну многорежимную лампу и заменил Т-триггер на свой макрос, который работает через DTRIG. В итоге в проекте, включени\выключение лампы происходит только по завершению отсчета ТР. При этом это единственный триггер, который ждет окончания отсчета, все остальные отрабатывают за 1 цикл. Например, если включить пошаговое выполнение, смоделировать одновременное нажатие l2, l3, l6, пройти цикл и отпустить l2, l3, l6 то в следующем цикле будут активны только Q2 и Q3, чтобы активировался Q5 нужно шагать до истечения таймера ТР. Если же запускать управление лампой в отдельном проекте, все происходит за 1 цикл.
Как вариант, именно для этого выключателя вместо DTRIG использовать XOR (в этом случае проект отрабатывает за 1 цикл)
Пробовал уйти от макроса и в поле проекта прописал триггер. Как только в цепочке именно этого выключателя появляется триггер, исполнение зависает на время, указанное для ТР.
Это фича лоджика, или на железе будет так же? Если на железе, то как отвязать триггер от ТР?
Макрос для кнопки со сбросом:
Вложение 39652
Фрагмент проекта в котором проявляется фича:
Вложение 39653
Нафига в макросе D триггер, который используется как обычный SR триггер?
Вложение 39659
Откопал в старом проекте. Может сейчас это все можно сделать более красиво ?
1. Кнопка работает на однократное срабатывание - режим вкл/откл
2. При удержании кнопки при выключенном состоянии выхода происходит откл/вкл дополнительной функции (включать свет от команды роллеты в данном случае)
3. был вариант, где было две функции, каждую из которых можно было активировать и деактивировать 1-ю при выключенном выходе, 2-ю при включенном удержанием кнопки.
Для понимания, что произошла активация или деактивация после удержания кнопки происходит смена состояния выхода.
выключатели использовались кнопочные.
Потому что мне так проще. А, вообще это дело привычки. Если рассматривать именно как блок управления кнопкой, то туда и DTRIG, и SR, и XOR подходят и на всех можно организовать принудительный сброс. Но, так как я новичек, то я беру что мне проще. В DTRIG есть гарантированный сброс и мне это нужно. Да и не думаю, что DTRIG в рамках загрузки Пр200+прм, при минимальных расчетах, сильно съест рессурсы.
P.S. а если относительно моего вопроса, то любой триггер заставляет ждать окончания отсчета ТР.
Sel по этому я выше и писал, что при нормальной работе кнопка должна давать команду срабатывания по заднему фронту
1 его легче заблокировать программно на режим удержания
2 его не надо ждать программно, только ваше физическое удержание кнопки увеличивает время реакции.