Форум Zentec
Программное обеспечение => Вопросы по zWorkbench => Тема начата: mike от 25 октября 2015, 20:10:31
Все нижесказанное / написанное справедливо для сетей RS-485
При загрузке алгоритма в контроллеры, отладке в устройстве, загрузке / обновлении firmware контроллера используется такой же протокол, как и для "общения" контроллеров между собой - Modbus RTU.
Про сам протокол написано много. Всем известно, что этот протокол жестко привязан ко времени: запрос - прием ответа. И все это в строго определённое время.
Персональный компьютер под управлением любой настольной ОС штуковина весьма шустрая, но только не для Modbus. Сама ОС вносит временны'е искажения в протокол по очевидным причинам.
Второй источник временны'х задержек и искажений - это собственно адаптер ПК-RS485 и его программный драйвер. Вот тут все плачевно.
Дело в том, что задержки на уровне ОС компенсируются небольшим увеличением таймаутов.
С преобразователями все происходит так:
- Самые скоростные это преобразователи интерфейсов внутренней шины ПК в RS485 (например, PCI express - RS-485). Сами микросхемы преобразователя имеют аппаратные буферы на прием/передачу и работают на частотах системной шины ПК. Соответственно, задержки, вносимые таким преобразователем, будут минимальны и близки к задержкам самой ОС.
- Преобразователи USB - RS-485. Как правило, выполняются на чипах Ti, Exar, Intersil, FTDI, Microchip. В целом удовлетворительные преобразователи. Неприятных моментов два:
- В зависимости от ревизии драйверов может наблюдаться периодическая потеря связи и "проглатывание" пакетов и некая "задумчивость".
- USB в любой ОС может "отвалиться" и часто "отваливается". Кстати, именно по этой причине USB преобразователи хороши только для загрузки/отладки программ, но совсем не годятся для целей мониторинга и стационарного управления, вне зависимости от производителя самого конвертера - хоть MOXA, хоть самопайка
- Китайские преобразователи на форках FT232 с алиэкспресса за один доллар - адъ.
Теперь о, собственно прикладном ПО для ПК и работе его с преобразователями интерфейсов.
Прикладное ПО может быть хоть OPC сервером, хоть системой программирования типа ZWorkbench - принцип один. Для опроса сети используется протокол Modbus RTU и софт выступает мастером (в рассматриваемом случае).
Для того, что бы не возникало наложения запросов, потери пакетов и т.п. при работе с преобразователями типа 2 и 3 (и конвертеров сред вроде Modbus / Lon или Eth / RS-485) производители прикладного ПО вводят или настраиваемую или жестко заданную задержку ожидания ответа. Очевидно, что чем больше эта задержка, тем медленнее работает вся опрашиваемая сеть в целом.
Поэтому в ZWorkbench введено три уровня задержки:
- Маленькое - для работы с PCI адаптерами
- Среднее - для работы с PCI адаптерами и некоторыми моделями USB - RS-485
- Большое - для работы с USB - RS-485 преобразователями (особо помогает при работе с однодолларовыми)
Теперь практическая сторона:
Если при загрузке алгоритма, отладке в устройстве, обновлении или восстановлении ядра происходит или потеря контроллера или появляются некорректные сообщения, то необходимо в настройках порта выставить время ожидания ответа "большое". В этом случае производительность сети значительно упадет, но зато стабилизируется обмен.
Путь до настройки смотрите в прикреплении.