Цитата Сообщение от Tacio Посмотреть сообщение
Почти подобная проблема. К ПЛК210 по Rs485 подключено 8 устройств (такие же ПЛК210). В настройках мастера response timeout установлен в 50мс, в настройках каждого слейва также указано 50мс. Для каждого слейва указано 2 канала: чтение регистров и запись регистров. Когда в сети нет ни одного слейва я ожидаю, что один цикл опроса всех слейвов займёт 8*50мс для запросов на чтение + 8*50 для запросов на запись. В сумме 800мс, пусть будет 1с. Однако, если вклиниться в линию и посмотреть реальный тайминг, то видно, что цикл занимает примерно 12с, а между отдельными запросами примерно 560мс.
Где в моих рассуждения или настройках ошибка? Для работы по Modbus использую стандартные средства Codesys.
После некоторых экспериментов получился следующий результат.
При использовании библиотеки OwenCommunications ситуация заметно лучше, однако:
1. Если таймаут ожидания ответа ставить менее 100мс, то начинает проскакивать ошибка TIME_OUT, хотя снифер показывает, что слэйв сразу ответил на запрос.
2. Между приёмом ответа от слейва и новым запросом есть пауза 60-80мс, хотя никаких искусственных пауз в коде нет.
При использовании стандартных компонентов, но не через дерево проекта, а используя, например, IoDrvModbus.ModbusRequest2:
1. При таймауте ожидания ответа 50мс никаких проблем не возникает, при этом по сниферу видно, что действительно пауза ожидания ответа 60-70мс
2. Между приёмом ответа от слейва и новым запросом есть пауза 18-30мс
Таким образом я остановился на использовании IoDrvModbus.ModbusRequest2.