Получение данных из устройства по modbus

Добрый вечер!

Собираю устройство, которое будет работать по modbus. У него есть 2 coil с адресами 0 и 1, и 2 holding register с адресами 100 и 101.
Подключенное устройство нормально работает, данные по шине передаются, я их успешно считываю при помощи команды modbus_client

Я создал шаблон для устройства и добавил его через веб-интерфейс.
// Configuration options

{
“device_type”: “SVIRSKI-DOOR-SENSOR”,
“device”: {
“name”: “SVIRSKI-DOOR-SENSOR”,
“id”: “svirski-door-sensor”,
“max_read_registers”: 0,
“channels”: [
{
“name”: “Direction 1”,
“reg_type”: “coil”,
“address”: 0,
“type”: “switch”
},
{
“name”: “Direction 2”,
“reg_type”: “coil”,
“address”: 1,
“type”: “switch”
},
{
“name”: “Direction 1 counter”,
“reg_type”: “holding”,
“readonly”: true,
“address”: 100,
“type”: “value”
},
{
“name”: “Direction 2 counter”,
“reg_type”: “holding”,
“readonly”: true,
“address”: 101,
“type”: “value”
}
]
}
}

Оно отображается в устройствах.

Только почему-то регистры хранения считываются без проблем. А вот койлы не хотят, хотя через modbus_client проблем нет, вот лог:

Иногда срабатывают и койлы, но очень редко, в основном вот эта ошибка в логах.

Подскажите, что может быть не так?

Возможно дело не в coil, а в том, что ваше устройство не обрабатывает данные в течение какого-то времени после предыдущего запроса.

Можно попробовать поиграть с параметром guard_interval_us - он как раз и предназначен для подобных устройств.

Да, помогло, спасибо большое.

Сообщение перенесено в новую тему: Посоветуйте оборудование