вижу следующее:
2019-04-25 15:36:06 Задний фронт 494
2019-04-25 15:36:09 Задний фронт 496
2019-04-25 15:36:11 Задний фронт 498
2019-04-25 15:36:12 Передний фронт 499
2019-04-25 15:36:14 Задний фронт 500
2019-04-25 15:36:16 Задний фронт 502
2019-04-25 15:36:18 Передний фронт 503
2019-04-25 15:36:19 Задний фронт 504
Нечеты фиксируются правилом только при относительно длинном нажатии, также как и при контроле за изменением состояния. что я делаю не так?
Добрый день, alexey1950!
Все у вас так, просто за промежутки между двумя опросами по Modbus модуля контроллером вы успеваете нажать и отпустить кнопку, и при следующем опросе контроллер получает сразу значение счетчика, увеличенное на 2. Собственно, это и означает, что кнопка была нажата.
а как зафиксировать нечет для переключения реле? хочется убрать задержку опроса на MIO, скорости порта и устройств подняты до 115200, но далеко не все нажатия выключателя вызывают реакцию реле.
где-то читал предложение контролировать счетчик для этих целей, но и он не панацея получается.
А не важно же — четный или нечетный: изменился счетчик — значит, что кнопку нажали, значит, переключаем реле. Или вы хотите более сложную логику реализовать?
сложная логика не нужна.
если я переключаю реле по состоянию, то пропуски имеют место быть.
по счетчику, то наоборот - бывает вкл/выкл, если зафиксировались оба фронта.
в поиске оптимального алгоритма до сих пор.