Добрый день, меня зовут Александр!
В качестве инженера занимаюсь разработкой робототехнических решений в пищевой промышленности.
Пробуем ваши контроллеры в нашем образце по автоматизации распределения заготовок. Возникли некоторые трудности в процессе использования WB.
Проблемы связаны с задержками в срабатывании правил (wb rules) и отправкой сообщений по modbus tcp. Более детальное описание прилагаю ниже, буду благодарен за компетентную помощь от разработчиков данного устройства и инженеров.
В системе применяются:
-WB-MIO 6шт
-WBIO-DI 6шт
-WBIO-DO 6шт
-EPR60- драйвера шаговых двигателей, которые управляются по modbus tcp
- Задача синхронизации двух шаговиков с драйвером EPR60
При задании параметров по modbus tcp из правила на два разных девайса возникала задержка т.е. один начинал ехать раньше другого на обозримое количество времени 0.5-1с
Задание состояло из двух этапов - передаются несколько регистров конфигурации движения и потом выставляется 1 байт начала движения
При последовательном задании - сначала один драйвер, потом другой появилась проблема рассинхронизации.
Важно заметить, что была произведена оптимизация poll interval для всех регистров устройства modbus tcp (важные регистры с меньшим интервалом)
Решили проблему тем что параметры устройства задаем заранее, а потом - также последовательно отправляем только регистры начала движения.
Задержка осталась перед началом движения но рассинхронизация стала заметно меньше.
ПРЕДПОЛОЖЕНИЕ: Первое предположение - работа очередей в софте WB, которая вызывает задержки в отправку сообщений по modbus.
ВОПРОС: Подскажите, если это предположение верное, как контролировать такты отправки сообщений в modbus (и их порядок) и как уменьшить задержку в работе очередей от правила до драйвера modbus?
- Задержка срабатывания правил
Установили датчики подключенные через WBIO-DI, по срабатыванию которых должен останавливаться двигатель.
Использовали конструкцию вида:
defineRule( “”, {
when: function() {
return dev[device][SENSOR_NAME] == true
},
then: function() {
dev[device_EPR60][COM_REGISTER] = 1 //stop motor
}
}
});
Задержка составляла порядка 2-3 секунд, при этом через веб-интерфейс в ручную на запись значений в регистр система не реагировала, приходилось полностью выключать питание.
Проблема повторялась с некоторой периодичностью.
Т.е. правило срабатывало, но через несколько раз могло опять зависнуть все.
ПРЕДПОЛОЖЕНИЕ: Если задержки возникают не сразу а при накоплении, возможно забивается кэш какой то
Удалили data.db и mosquito.db
Как не странно это помогло!
При работе одного драйвера и нескольких модулей ввода вывода
НО! при подключении большего количества драйверов и модулей выполняющих ту же функцию задержки вновь появились!
ВОПРОС:
Сейчас нашим “костылем” является удаление data.db и mosquito.db
Настройка poll interval устройств modbus не приводит к успеху.
Существует ли решение данной проблемы и возможна ли оптимизация очереди MQTT через которую работает софт WB либо оптимизация написания правил для их корректной бесперебойной работы.
ДОП ВОПРОСЫ:
- возможен ли контроль такта срабатывания правил (как такт цикла работы ПЛК чтобы гарантировать время срабатывания правила)
- есть ли ограничения на количество правил
Спасибо! Буду благодарен за содержательный ответ!