Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › ModBus Опрос по команде
- В этой теме 68 ответов, 6 участников, последнее обновление 8 месяцев, 1 неделя назад сделано
manjey73.
-
АвторЗаписи
-
07.11.2025 в 09:53 #41064
manjey73УчастникПрочитайте ещё раз внимательнее, пожалуйста.
Как только вы используете опрос по команде, все, связанное с периодом опроса ложится полностью на вас.07.11.2025 в 09:54 #41065Spawn
Участникmanjey73, одна линия, на ней два устройства (протокол Modbus, если это имеет значение), мне нужно, по моему хотению, в понедельник, например, остановить/отключить опрос устройства под номером один и чтобы устройство номер два продолжало опрашиваться, только не периодами и интервалами с таймерами, а так как опрашиваются устройства на линии со снятой галкой «Опрос только по команде». Всё. В общем случае, мне нужно оптимизировать опрос устройств, минимизировав время цикла опроса всей линии, путем исключения из него (опроса) не нужных в данный момент времени устройств.
Шина RS485, протокол Modbus RTU.
07.11.2025 в 10:22 #41066
manjey73УчастникДа пофигу шина и протокол, мне тоже не нравится этот подход с опросом по команде, так как этим по моему мнению должен рулить Коммуникатор, а не я.
Но так сделано, ввели Опрос по команде, будьте добры всем остальным озадачиться сами и подавать номер устройства в «импульсном» режиме для постоянного опроса.
а например в ЖКХ на одной линии может находиться больше сотни устройств — приплыли 🙁
07.11.2025 в 10:41 #41068Spawn
УчастникДа пофигу шина и протокол, мне тоже не нравится этот подход с опросом по команде, так как этим по моему мнению должен рулить Коммуникатор, а не я.
Но так сделано, ввели Опрос по команде, будьте добры всем остальным озадачиться сами и подавать номер устройства в «импульсном» режиме для постоянного опроса.
а например в ЖКХ на одной линии может находиться больше сотни устройств — приплыли 🙁
Так вот именно, что в «импульсном», С ЗАРАНЕЕ ОПРЕДЕЛЕННЫМИ МНОЙ интервалами, но это не есть правильная работа шины RS485, с протоколом Modbus RTU. Опрос следующего на линии (шине) устройства должен начинаться СРАЗУ, как только закончился опрос предыдущего (с определенной паузой между запросами, если она используется) и это СРАЗУ должна определять система (ПО), а не я подбирать интервалы ручками. С ОПРЕДЕЛЕННЫМИ МНОЙ ИНТЕРВАЛАМИ на импульсы — это изврат RS485/Modbus RTU и «минимизировав время цикла опроса всей линии», с таким подходом, я никогда не добьюсь. Вывод: моя задача не реализуема, в данной конкретной ситуации и с данным конкретным ПО без допиливания собственноручно его исходников.
07.11.2025 в 12:35 #41069
manjey73Участника вы попробуйте подать импульс на второе устройство сразу после первого, тут Коммуникатор может кинет в очередь на опрос сразу после первого.
скрипты же работают в цикле от меньшего канала к большему. И там скорость раз 10 в секунду.
еще раз, протокол тут ни при чем вообще, это не его проблемы и задачи.
-
Ответ изменён 8 месяцев, 2 недели назад пользователем
manjey73.
07.11.2025 в 13:21 #41071Spawn
Участникеще раз, протокол тут ни при чем вообще, это не его проблемы и задачи.
Протокол, как раз-таки, причем, потому как конкретно протокол Modbus RTU и конкретно в двухпроводном RS485 — это полудуплексный обмен по принципу ведомый-ведущий, т.е. во-первых, прием и передача разнесены и выполняются не одновременно, во-вторых, все устройства на ШИНЕ опрашиваются по очереди, один за другим, следующий начнет опрашиваться не ранее, чем закончит опрашиваться предыдущий. Это Вам не сети Ethernet, не нужно путать.
а вы попробуйте подать импульс на второе устройство сразу после первого, тут Коммуникатор может кинет в очередь на опрос сразу после первого.
А смысл заниматься колхозом, если работа ПО не подразумевает это делать должным образом штатно? Опять же вопрос к ручным интервалам на импульсы (которых априори быть не должно), какой интервал выбирать, 10mS, 20mS, 150mS, 200mS? Кто и как будет контролировать очередь запросов коммуникатора? А если «переборщишь» и очередь переполнится? Бред.
07.11.2025 в 13:55 #41072
MikhailМодератородна линия, на ней два устройства (протокол Modbus, если это имеет значение), мне нужно, по моему хотению, в понедельник, например, остановить/отключить опрос устройства под номером один и чтобы устройство номер два продолжало опрашиваться, только не периодами и интервалами с таймерами, а так как опрашиваются устройства на линии со снятой галкой «Опрос только по команде». Всё. В общем случае, мне нужно оптимизировать опрос устройств, минимизировав время цикла опроса всей линии, путем исключения из него (опроса) не нужных в данный момент времени устройств
На данный момент такой функции, чтобы временно исключить устройство из опроса, причём без передачи конфигурации, нет.
Пожелание вполне логичное, оно добавлено в список возможных доработок.09.11.2025 в 23:06 #41080Spawn
УчастникMikhail, спасибо.
10.11.2025 в 08:55 #41081
manjey73Участникеще бы в доработки добавить создание словаря опроса не только по номеру девайса, но еще добавить некий идентификатор.
Чтобы не требовалось создавать два и более устройств если требуется один прибор опрашивать разными параметрами и периодами.Чтобы устройство было одно, адрес один и разные или одинаковые шаблоны опроса.
такие вопросы тоже возникали очень давно.
-
Ответ изменён 8 месяцев, 2 недели назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.