Обработка в wb-rules ошибок опроса нескольких устройств с задержкой

Добрый день! С учетом того, что опрос serial-устройств может быть не всегда стабильным, есть необходимость контролировать факт наличия актуальных показаний по каналам. Самое простое - через правило на “#error”. Правило срабатывает на каждую ошибку обмена по каналу, даже, если в следующем цикле обмена все прошло нормально. Понятно, что всерьез реагировать на ошибку обмена нужно лишь в случае, если ошибка обмена длится более некого порога. Для одиночного канала все более-менее понятно с таймером, его иницализацией и т.п. Вопрос в том, как подойти к вопросу, если в правиле необходимо обрабатывать ошибку по десятку или паре десятков каналов?

Добрый день.
Инициировать по таймеру на каждый канал, типично - так.

Пока не понимаю, как это сделать в варианте, когда количество каналов может меняться и чтобы обойтись без множественных повторов одной и той же языковой конструкции для каждого канала с разнице лишь в имя таймера.

Вот тут я не совсем понимаю. Количество каналов - не может меняться.
Для примера, у меня несколько устройств задействованы в рамках одной функции. Например управления воротами. Ну и ошибки обрабатываются именно в этом контексте. То есть вот описан десяток контролов, в рамках решаемой задачи - ну и реагирую на них опять же, в ее рамках. То есть невозможность прочитать состояние, например, уличного термометра - там и 5 минут таймаут ошибки некритичен. А недоступность датчика положения привода заслонки - и 5 секунд важно.

Поясню, о чем речь. К примеру, имеем тот же WBIO-DO-R10A-8, у которого 8 каналов, и WBIO-DI-HVD-16, у которого 16. Для контроля всех этих каналов получается, придется написать или 24 правила, или в одном правиле городить множественные if или case. А если еще по какому-то устройству нужно будет контроль вести. Я имел ввиду возможность изменения кол-ва каналов, как расчет “на вырост” системы. Тем более, что, как Вы правильно указали, нужно учитывать возможность наличия разных допустимых периодов недоступности по разным каналам.

По логике просится какая-то конструкция с массивом или коллекцией объектов, перебирая которую при срабатывании правила, можно было бы выбрать соответствующие отказавшему каналу параметры и отреагировать соответственно.

А какая цель? То есть - для чего ветвить обработку?

Ну и, если это нужно - то делается вот так.

Ну, условно (!), если 3 канала отображают наличие напряжения по фазам, то реакция на выпадение (лог. 0) любого из этих каналов будет одинакова. Но могут же быть еще более сложные случаи, когда при выпадении условных каналов 1 или 2 нужна одна реакция, а каналов, 2 или 7 - другая, т.е. несколько реакций.

Этот пример я видел, но в нем именно самой коллекции/массива и не хватает, чтобы была возможность перебирать элементы.

Есть прикладная задача, (упрощенно): имеется ряд объектов с датчиками температуры (1 или 2 на объект) и нагревателями (1 или 2 на объект). Необходимо обеспечить соблюдение заданного температурного режима с допустимыми отклонениями в пределах доступного лимита потребляемой мощности. Т.е. при поступлении сигнала о превышении лимита мощности нужно перебрать все объекты и последовательно пробовать отключать те, которые можно отключить.