Тема / Topic: ModbusTCP: групповые запросы и обработка ошибок
Sergei
Forum Professor / Завсегдатай форума
Участник № / Member № 161
отправлено / posted
Пытаюсь запросить 4 float-а одним запросом. Создал 4 канала с адресами каналов (регистров) 0x3800 - 0x3806 с шагом 2. Правда, каналы создавал не подряд (ID идут не последовательно - есть пропуски). Вижу, что формируются 3 запроса: один на чтение двух значений и два на чтение по одному значению. В справке я не нашел нужно ли что-то дополнительно указывать в проекте, чтобы формировались групповые запросы. В ТМ5 формирование групповых запросов для Modbus RTU делалось хорошо, мне нравилось, а для Modbus TCP вообще не работало. Неужели так до ума и не довели? Еще вопрос: у меня связь с контроллерами происходит через шлюз (PC - Ethernet - шлюз - Internet - GPRS - GSM-модем - контроллер). Связь с контроллером возможна только после того как он сам подключится к шлюзу и сообщит свой адрес. До этого момента шлюз на запросы к контроллеру возвращает ошибку Gateway problem (0x0A Gateway paths not available.) Но не смотря на то, что ответ возвращается, хоть и с ошибкой, после 6 попыток запросы прекращаются. Если в файле ip_modbus поставить "0 OFFCOUNT" запросы не прекращаются. В справке написано, что канал отключается "если установка каналу признака аппаратной недостоверности вследствие отсутствия ответа на запрос произошла указанное в этой строке количество раз", но ведь ответы то есть. Это неточность документации?
Сообщения / Posts 157 | Из / From: russia
| IP / IP: IP адрес / IP address |
Вяткин Н В
Forum Haunter / Завсегдатай форума
Участник № / Member № 1853
отправлено / posted
Вот-вот появится релиз 6.06, там одним каналом можно организовать групповой запрос по Modbus TCP, пулученные байты, int-ы, real-ы записываются в аргументы канала, как их опишешь. Проверял в бета версии на 8 int-ов, очень понравилось
Сообщения / Posts 101 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Для создания групповых запросов требуется: a) ID канала должен быть меньше ID канала, связанного со следующим компонентом Modbus группы источники/приемники б) Адреса переменных должны быть непрерывными, для каналов float через 1. У Вас это выполняется.