Тема / Topic: ModBUS_TCP: опрос по нескольким портам
Alexander_
Forum Member / Участник форума
Участник № / Member № 7778
отправлено / posted
Здравствуйте. Можно ли заставить Trace Mode распределять запросы к одному ModBUS-Slave устройству по нескольким портам, например 502, 503, 504, 505? Можно ли предопределить, какие регистры, по каким портам будут опрашиваться? Как это сделать?
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
-одному устройству в один момент времени один номер порта -для каких целей нужна такая специфика
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Alexander_
Forum Member / Участник форума
Участник № / Member № 7778
отправлено / posted
Хочу ускорить скорость обмена по сети за счет того, что ПЛК будет параллельно вести обработку запросов по каждому порту: таким образом, количество задействуемых портов становится почти обратно пропорционально периоду полного цикла опроса.
Возиться с групповыми запросами хочется не особо. У меня тот случай, когда запрашиваемые регистры сильно рассредоточены по области памяти, причем типы хранимых данных идут вперемежку. Это, во-первых, усложняет организацию групповых запросов (в плане разработки), а во-вторых (что более важно) дает весьма скудный выигрыш по сравнению с работой по нескольким портам. К тому же, обрабатывая запросы от ТМ вручную, через контроллер, я заметил, что она сама старается оптимизировать трафик и объединяет запросы по смежным регистрам, хранящим переменные одного типа, хотя в Источниках/приёмниках по каждой переменной создан отдельный канал Modbus. Так что частично групповое чтение уже реализуется, и эффект от моего вмешательства будет того меньше.
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
быстрей не будет. гораздо проще групповой запрос или по авто-группировке каналов или через CALL.ChGreq
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Alexander_
Forum Member / Участник форума
Участник № / Member № 7778
отправлено / posted
Я представляю, как работает программа целевого ПЛК, и воспроизвел ее в лабораторных условиях: быстрее будет! Протокол там обрабатывается "вручную", доля загрузки ПЛК на предоставление данных ТМ пренебрежимо мала. ПЛК за один цикл по одному порту принимает (или не принимает) один и только один запрос на чтение/запись данных. Касательно чтения этот запрос может требовать от 1 до 128 регистров данных (согласно Modbus). Да, увеличение количества запрашиваемых регистров в одном пакете Modbus -- это один путь к ускорению обмена. Но группы регистров разрознены, и, кроме того, групповые запросы уже сами по себе частично реализуются ТМ. Гораздо разумней использовать то, что целевой ПЛК ведет мониторинг сетевого обмена по 5 сокетам, соответствующих 5 портам. Тогда за один цикл могут быть приняты до 5 запросов. И хотя цикл ТМ у меня много больше цикла ПЛК, недостатка в запросах от ТМ нет: переменных куча. И даже за сравнительно огромный цикл ТМ -- ПЛК не успевает отработать весь список и полностью "разгрести" буфер.
отправлено / posted
Такой режим Modbus-обмена в Trace Mode 6 не поддерживается.
Мы рассмотрим возможность и целесообразность введения такого режима в последующих версиях Trace Mode.
Сообщения / Posts 17315 | Из / From: Россия
| IP / IP: IP адрес / IP address |