Особенности работы ПК в качестве сервера сети Modbus RTU {RS-485}

Автор mike, 25 октября 2015, 20:10:31

« назад - далее »

mike

    Все нижесказанное / написанное справедливо для сетей 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 преобразователями (особо помогает при работе с однодолларовыми)

    Теперь практическая сторона:
    Если при загрузке алгоритма, отладке в устройстве, обновлении или восстановлении ядра происходит или потеря контроллера или появляются некорректные сообщения, то необходимо в настройках порта выставить время ожидания ответа "большое". В этом случае производительность сети значительно упадет, но зато стабилизируется обмен.

    Путь до настройки смотрите в прикреплении.