Все гораздо проще, я хочу удобно. А значит должно сработать с первого раза и правильно (даже если пользователь я сделал что-то не так).
А на счет "случайно нажали какую-то кнопку, можно подержать её не менее секунды" мне ближе заложить двойное быстрое нажатие, чтобы восстановить режим. Не дружу я со всем удержаниями кнопок, поэтому стараюсь от них уйти.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Короче, насколько Вас понял, Вы так хотели, без всяких таймеров:
2 лампы по 8 режимов_8.PNG
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Спасибо, то, что надо.
Начал собирать временную сборку для ПР200. Добавил в нее Ваш пример но переделал на одну многорежимную лампу и заменил Т-триггер на свой макрос, который работает через DTRIG. В итоге в проекте, включени\выключение лампы происходит только по завершению отсчета ТР. При этом это единственный триггер, который ждет окончания отсчета, все остальные отрабатывают за 1 цикл. Например, если включить пошаговое выполнение, смоделировать одновременное нажатие l2, l3, l6, пройти цикл и отпустить l2, l3, l6 то в следующем цикле будут активны только Q2 и Q3, чтобы активировался Q5 нужно шагать до истечения таймера ТР. Если же запускать управление лампой в отдельном проекте, все происходит за 1 цикл.
Как вариант, именно для этого выключателя вместо DTRIG использовать XOR (в этом случае проект отрабатывает за 1 цикл)
Пробовал уйти от макроса и в поле проекта прописал триггер. Как только в цепочке именно этого выключателя появляется триггер, исполнение зависает на время, указанное для ТР.
Это фича лоджика, или на железе будет так же? Если на железе, то как отвязать триггер от ТР?
Макрос для кнопки со сбросом:
без фиксации.jpg
Фрагмент проекта в котором проявляется фича:
лампа.jpg
Нафига в макросе D триггер, который используется как обычный SR триггер?
Захват-1.png
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Откопал в старом проекте. Может сейчас это все можно сделать более красиво ?
1. Кнопка работает на однократное срабатывание - режим вкл/откл
2. При удержании кнопки при выключенном состоянии выхода происходит откл/вкл дополнительной функции (включать свет от команды роллеты в данном случае)
3. был вариант, где было две функции, каждую из которых можно было активировать и деактивировать 1-ю при выключенном выходе, 2-ю при включенном удержанием кнопки.
Для понимания, что произошла активация или деактивация после удержания кнопки происходит смена состояния выхода.
выключатели использовались кнопочные.
Потому что мне так проще. А, вообще это дело привычки. Если рассматривать именно как блок управления кнопкой, то туда и DTRIG, и SR, и XOR подходят и на всех можно организовать принудительный сброс. Но, так как я новичек, то я беру что мне проще. В DTRIG есть гарантированный сброс и мне это нужно. Да и не думаю, что DTRIG в рамках загрузки Пр200+прм, при минимальных расчетах, сильно съест рессурсы.
P.S. а если относительно моего вопроса, то любой триггер заставляет ждать окончания отсчета ТР.
Sel по этому я выше и писал, что при нормальной работе кнопка должна давать команду срабатывания по заднему фронту
1 его легче заблокировать программно на режим удержания
2 его не надо ждать программно, только ваше физическое удержание кнопки увеличивает время реакции.