Стартовая страница › Форумы › Взаимодействие с устройствами › Непоследовательный опрос устройств
Помечено: Опрос Modbus
- В этой теме 81 ответ, 5 участников, последнее обновление 12 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
23.07.2025 в 12:40 #39666
klusandr
УчастникДоброго времени суток.
Есть релейная защита, её опрашивает WirenBoard а с него уже получает данные Scada по Modbus. Если огрубить, всю информацию можно поделить на 2 вида:
оперативная(должна опрашиваться с минимальным интервалом);
подробная (время опроса не столь критичное).
С учётом того что ячеек, с которых необходимо получить подробные данные примерно 20 штук, цикл опроса составляет критично большое значение, что бы опрашивать их последовательно с оперативной информацией. При настройке опроса, у меня есть примерно 20 устройств для опроса подробных данных ячеек, и 1 устройство для опроса оперативных. Я попытался продублировать устройство оперативных данных, и разместить его между устройств подробных данных, но опрос остался последовательным:
опер. -> подр1 -> подр2 -> … -> подр20 -> опер.
В моём же случае необходимо опрашивать:
опер. -> подр1 -> опер. -> подр2 -> опер. -> …
Танцы с бубном вокруг параметров времени, пазы, периода так же не были эффективны.По итогу появились следующие вопросы:
Есть ли возможность это сделать стандартными средствами?
Если нет, то как можно оправлять команды на опрос устройств из своего модуля для сервера?
Так же, можно ли в настройке опроса устройства, при использовании протокола Modbus, задать, какую группу параметров я хочу опрашивать в шаблоне устройств?Конфигурация опроса устройств:
<DevicePolling>
<Device active=»true» isBound=»true» number=»1″ name=»CellsFlags» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:00″ period=»00:00:00″ cmdLine=»ModbusWirebordCellsFlagsTemplate.xml» />
<Device active=»true» isBound=»true» number=»2″ name=»Cells1MR5Data» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»1000″ time=»00:00:01″ period=»00:00:01″ cmdLine=»ModbusWirebordCellsDataTemplate.xml» />
<Device active=»true» isBound=»true» number=»1″ name=»CellsFlags» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:00″ period=»00:00:00″ cmdLine=»ModbusWirebordCellsFlagsTemplate.xml» />
<Device active=»true» isBound=»true» number=»1″ name=»CellsFlags» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:00″ period=»00:00:00″ cmdLine=»ModbusWirebordCellsFlagsTemplate.xml» />
<Device active=»true» isBound=»true» number=»3″ name=»Cells2MR5Data» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»1000″ time=»00:00:02″ period=»00:00:01″ cmdLine=»ModbusWirebordCellsDataTemplate.xml» />
<Device active=»true» isBound=»true» number=»1″ name=»CellsFlags» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:00″ period=»00:00:00″ cmdLine=»ModbusWirebordCellsFlagsTemplate.xml» />
<Device active=»true» isBound=»true» number=»4″ name=»Cells3MR5Data» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:03″ period=»00:00:01″ cmdLine=»ModbusWirebordCellsDataTemplate.xml» />
<Device active=»true» isBound=»true» number=»1″ name=»CellsFlags» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:00″ period=»00:00:00″ cmdLine=»ModbusWirebordCellsFlagsTemplate.xml» />
<Device active=»true» isBound=»true» number=»3″ name=»Cells2MR5Data» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:04″ period=»00:00:01″ cmdLine=»ModbusWirebordCellsDataTemplate.xml» />
<Device active=»true» isBound=»true» number=»1″ name=»CellsFlags» driver=»DrvModbus» numAddress=»1″ strAddress=»» pollOnCmd=»false» timeout=»1000″ delay=»0″ time=»00:00:00″ period=»00:00:00″ cmdLine=»ModbusWirebordCellsFlagsTemplate.xml» />
</DevicePolling>-
Тема изменена 12 месяцев назад пользователем
klusandr.
23.07.2025 в 12:50 #39668
manjey73Участник1. Чтобы разнести по времени оперативные данные и настроечные (назовем это так) нужно создать ДВА устройства и каждому задать свой шаблон, что читать. Modbus драйвер может только активировать или нет группу, управлять он не может.
2. Опрос идет по RTU или по TCP? хотя если WirenBoard читает по RTU, то как-то фиолетово, все упирается в устройства. Если уже с самого WirenBoard как-то надо, то сколько соединений он может держать по TCP? можно и на разные линии опроса разнести.
3. Ну вариант управлять опросом по команде (не пробовал еще ни разу)
Последовательность там выстраивается переставлением в параметрах линии — Опрос.
Система контролирует последовательность и время.23.07.2025 в 13:01 #39669
manjey73УчастникСобственно, чтобы опрос был строго последовательным, то время периода цикличности у них должен быть у всех одинаковым.
потому что если один читается с периодом 1c, а второй 5с, то будет
1, 1, 1, 1, 1, 2 — читаться.
и если 3-й и 4-й настроены так же, то будет что-то типа1,3, 1,3, 1,3, 1,3, 1,2,3,4
-
Ответ изменён 12 месяцев назад пользователем
manjey73.
23.07.2025 в 13:03 #39671klusandr
Участник1. Так я и так создал устройства для оперативных, и подробных данных, и у каждого свои шаблоны.
2. Критично 1 канал по RS ничего не попишешь.Последовательность не влияет, с учётом того что у меня поочерёдно стоят устройства для подробных данных, и дублированное устройство для оперативных, в конечном итоге оно один раз опрашивает оперативные устройство, и потом последовательно все остальное, наплевав, что оперативное устройство у меня дублируется, и стоит между каждым устройством для подробных данных.
23.07.2025 в 13:06 #39672klusandr
УчастникА мне надо добиться 1,2,1,3,1,4,1,5 и т.д.
23.07.2025 в 13:11 #39673
manjey73УчастникЧто у вас тут 1,2,3,4 и 5 ?
1 это оперативные данные?
2,3,4,5 настроечные ?Еще не забывайте, что каждый раз при старте будут опрошены все, независимо от выстраивания приоритетов и времени., И когда все будет опрошено и уже наступил очередной период опроса будут опрошены еще раз.
Ну пример, устройство опрашивается раз в 30 сек.
Если Период по 0, и мы стартанули Коммуникатор в х:27 секунд, то будет первый опрос при запуске и в x:30 секунд будет штатный опрос. И далее каждые 30 секунд.По этому на первый вариант нет смотрите, если только стартанули.
23.07.2025 в 13:11 #39674
manjey73УчастникА мне надо добиться 1,2,1,3,1,4,1,5 и т.д.
а где 20 приборов? 🙂
23.07.2025 в 13:14 #39675klusandr
УчастникТа хоть 5 заставить работать так.
23.07.2025 в 13:18 #39676klusandr
УчастникДа, 1 — оперативные, 2,3,4,5 — натроенные(подробные)
То что творится при старте системы не столь значимо, глпвно что когда оно войдёт в рабочий режим, опросы были в нужном порядке23.07.2025 в 13:46 #39677
manjey73Участник1 — оперативные только одной установки, где оперативные остальных 5-ти? если мы говорим о 5-ти.
2,3,4,5 — это настроечные 2-й, 3-й и т.д. установки?Задайте правильные номера как-то. Например 1.1; 2.1 и т.д. это оперативные
1.2; 2.2 и т.д. это настроечные.Время 1с для 1.1, 2.1, 3.1 и т.д.
Время 30с для 1.2, 2.2, 3.2 и т.д. для настроечныхКак будет при первом запуске я написал
Далее, когда устаканится будет так1.1, 2.1, 3.1, 4.1, 5.1 и по кругу до 30-й секунды
потом
1.1, 2.1, 3.1, 4.1, 5.1, 1.2, 2.2, 3.2, 4.2, 5.2Если нужно 1.1, 1.2, 2.1, 2.2, 3.1, 3.2, 4.1, 4.2, 5.1, 5.2 то время периода должно быть одинаково у всех и они должны быть выстроены в такой последовательности.
Если нужно 1.1, 2.1, 3.1, 4.1, 5.1, 1.2, 2.2, 3.2, 4.2, 5.2 то так же должно быть одинаковое время и выстроены в таком порядке.На линии RTU другого не дано в принципе, ибо последовательная шина
23.07.2025 в 13:54 #39678klusandr
УчастникТак как всё идет через WirenBoard физическое устройство одно. WB отдаёт как и оперативные данные, по всем устройствам одной командой, и отдельно подробные данные уже по каждой ячейке отдельными командами.
Вспоминая принцип Modbus, где все данные запрашиваются по регистрам, условно с 200 регистра по 219 это оперативные данные, с 220 каждые 30 регистров это уже подробные данные на эти же 20 устройств. Так как настроить опрос определённой группы параметров в опросе нельзя, на оперативную команду и далее уже на каждую команду запроса подробных данных, идёт своё устройство.
Надеюсь стало чуть понятнее.-
Ответ изменён 12 месяцев назад пользователем
klusandr.
23.07.2025 в 14:01 #39680klusandr
УчастникКорень проблемы в том, что 1 устройство (оперативные данные), стоит между каждым опросом всех остальных устройств (настроенные(подробные) данные), но опросник игнорирует все опросы 1 устройства кроме первого в списке, и по итогу оно опрашивает оперативные данные, и потом уже все 20 устройств с настроенными данными, наплевав, что конфиге идёт порядок: 1,2,1,3,1,4,1,5 и делает: 1,2,3,4,5.
23.07.2025 в 14:09 #39681
manjey73УчастникЕще раз. Конфигу фиолетово, как вы им будете пользоваться. К опросу напрямую он не относится.
Периоды опроса настраиваются в Коммуникаторе.
Вы не можете прочитать группой все настроечные параметры даже с пустотой? Для сокращения непосредственно времени опроса этих параметров и потом привязать к БД нужные?
Условно с 200 регистра по 219 — один запрос
с 220 каждые 30 регистров — один блин раз настройки всех двадцати устройств прочитать? 600 байт, прощу прощения — всего 3 раза прочитать.
23.07.2025 в 14:10 #39682
manjey73УчастникИли ваш хваленый WirenBoard не позволяет читать регистры, если они идут с разрывами?
23.07.2025 в 14:17 #39683
JurasskParkУчастникПредлагаю сделать по вашему варианту список устройств как вы хотите
1,2,1,3,1,4,1,5
Только у 1 будет различаться название. А все остальное будет такое же шаблоном. -
Тема изменена 12 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.