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