В этом разделе вы можете проголосовать за идеи по открытым проектам. Вы всегда можете предложить свою идею, перейдя на страницу проекта.
<<< НазадМногие MODBUS устройства, в т.ч. мой контроллер отопления (SmartWebX) имеет рекомендации по работе через ModBus-TCP от производителя - не закрывать TCP соединение и считывать/записывать все регистры по одному, но в рамках одного общего никогда не закрываемого TCP соединения.
А модуль ModBus текущей версии на каждый запрос создает отдельное TCP соединение. Это приводит к ошибкам, вплоть до остановки цикла модбас. Ниже - скриншот роутера, на котором видно количество соединений между сервером МД (192..168.88.28) и контроллером SW (192.168.13.25:502)
[img]https://d.radikal.ru/d30/1901/fe/9b9378890847.jpg[...]
Есть потребность в доработке модуля в части работы с сетью.
Я это вижу примерно так.
Сейчас "устройство модбас" - это одна операция с регистром или диапазоном регистров на одном IP. Разные "устройства модбас" могут обращаться к одному IP, или к разным - все они попадают в один цикл.
Их бы сгруппировать. Например, ввести описание устройства (его название, IP и порт), и к нему уже привязывать операции. Тогда в списке будут разные устройства со списком операций с его регистрами, привязанными к устройству (примерно как сделано в модуле MegaD).
Тогда по каждому устройству можно запускать свой цикл операций, не закрывая TCP соединения. Про TCP соединение можно в описании устройства (где вводится IP и порт) сделать кнопку "коннект", и галочку "не разрывать соединения". По аналогии с [url=http://www.simplymodbus.ca/TCPclient.htm]Simply Modbus TCP Client[/url], где соединение устанавливается одно на всю сессию работы клиента.