Не понимаю сарказма.
Если есть возможность обрабатывать и считывать 20 битов вместо 20-ти 32-битовых модулей и обрабатывать их самым примитивным образом (false/true) на кой тогда городить огород из чётности/нечётности и сравнении счётчиков? В моём конкретном случае порядка 160 счётчиков вместо 160 Битов.
Когда мне надо было мониторить частоту вращения барабана нории по датчику импульсов, я использовал счётчики, здесь же в этом смысла нет никакого. Это касаемо модулей ввода.
Про синхронизацию тоже не понял к чему эти ухмылки, в сети организовано мультимастерное управление. Как контроллер должен понять, в каком состоянии сейчас находятся выходы модуля вывода, если их в любой момент может поменять другой мастер?
Объясняю ситуацию на пальцах: все выходы допустим изначально выключены, потом я с айпада включаю 5 первых выходов (свет), но контроллер об этом не знает. Тыкаю на клавишу, завязанную на плк, включить 6 выход. И плк благополучно перезаписывает весь модуль с одним включенным 6 выходом, потому что "думает", что надо включить только 6 выход, т.к. контроллером в модуль вывода я пишу по изменению модуль 32 бита.
Чтобы таких ситуаций не происходило я контроллером постоянно считываю фактическую битовую маску выходов и перезаписываю модуль с учётом имеющейся фактической картины. И на команду включить 6 выход, контроллер перезаписывает модуль с включенными первыми пятью и ещё одним 6 выходом. Что я делаю неправильно?
Также есть ещё такие устройства как замки, краны, привод ворот, которые управляются также с разных мест, разноименными сигналами, и считывание фактической битовой маски позволяет исключить одновременное закрытие и открытие крана/ворот/штор/замков и т.п.
Если есть какой-то боле простой и правильный способ это благополучно делать без чтения фактической маски выходов из модуля, мне было бы очень интересно узнать этот способ.