Статья описывает метод обследования работающего оборудования на шине RS-485 с протоколом MODBUS RTU без отключения от сети. Рассмотрены подключение логического анализатора, захват и анализ данных, а также особенности интерфейса RS-485.
- Для обследования работающего оборудования на шине RS-485 используется логический анализатор, например Saleae Logic 16.
- Подключение к шине выполняется щупами к проводам A и B, полярность не важна.
- Захват данных ведётся с настройками: 2 канала, низкая скорость, длительность несколько минут.
- Скорость передачи определяется по длительности бита: 104,2 мкс — 9600, 52,1 мкс — 19200, 8,68 мкс — 115200.
- Стандартные настройки: 8 бит данных, 1 стоп-бит, без проверки на чётность.
- Особенности RS-485: шина вместо звезды, отростки до ~1 метра, терминальные резисторы могут просаживать линию.
- RS-485
- MODBUS RTU
- логический анализатор
- Saleae Logic 16
- ПЛК
- терминальные резисторы
- осциллограф
Кому полезно: Начинающие инженеры АСУ ТП
Первоисточник: habr.com
Выжимка составлена редакцией сайта с помощью ИИ по тексту статьи.
Данная статья ориентирована на начинающих инженеров АСУ ТП.
Статья родилась на основе проделанной работы по обследованию объекта автоматизации. Так как в интернете, на казалось бы, «старую» тему передачи информации по MODBUS RTU, мало информации про то, как на обследуемом оборудовании узнать с какими настройками работает RS-485, адреса и запросы MODBUS RTU к устройству, не отключая обследоваемое устройства от сети передачи данных, попробуем восполнить данный пробел и описать метод, который применили мы, и за одно, распишем практику работы с RS — 485. Самое главное, обследоваемое оборудование должно всегда быть подключенной к сети MODBUS RTU и отрабатывать по запросам от ПЛК.
Вводные понятны, вопрос, как реализовать? Опытные инженеры сразу вспомнят про осциллограф, но есть проблема, как обследовать сам пакет данных, ведь нам надо узнать не только настройки RS-485, но и ID устройств на шине и какие запросы отправляет ПЛК, электронщики сразу вспомнят про логический анализатор и будут абсолютно правы, так как данное устройство отлично справится с поставленной задачей. У меня логический анализатор saleae logic 16, но можно использовать любой другой где есть возможность анализа данных.
Подключение к устройству
Сам логический анализатор выглядит так:

Обратите внимание на выделенную область, это щупы с помощью которых можно подключится к шине RS-485 (щуп-зажим типа захват)

Это немного не то, но механизм похожий
От исследуемого устройства отходят, как правило, 2 провода, A и B, подключаемся к этим проводам логическим анализаторам, выходы CH0 и CH1 садим на A и B, полярность не важна, в будущем мы вычислим какой провод A а какой B
Захват данных
Далее подключаем логический анализатор по USB к ПК с установленной программой Saleae logic, должно появиться что то подобное:

- Настройки логического анализатора
- Выбор каналов, нам нужно 2 канала, 0 и 1
- Скорость, скорость по меньше ибо иногда высокая скорость делает только хуже
- Стартуем и ждем несколько минут, за это время накопится достаточно информации для анализа
Анализ данных

После того как нажали «стоп» (Рис 1. пункт 4) видим подобную картину как на рис 2, но без зеленых прямоугольников с цифрами
|
Длительность бита |
Скорость (бит/с) |
|
104,2 мкс (то что изображено на рис 1 пункт 3) |
9600 |
|
52,1 мкс |
19200 |
|
8,68 мкс |
115200 |
Ставим скорость, которую узнали ранее, количество бит обычно ставят 8 бит, 1 Стоп бит, Проверки на четность нет, такие настройки встречаются чаще всего, но если видите, что Saleae logic пишет ошибки, приглянитесь, нет ли проверки на четность или иные не стандартные настройки

Saleae logic в принципе знает MODBUS, но не всегда хорошо детектирует, а async serial распознает данные хорошо. Когда подобрали настройки, можно считать ID устройств и запросы, это есть в документации по MODBUS
Некоторые особенности интерфейса RS-485 которые желательно знать
Скорость 9600 часто используют для того что бы избежать всплески «эхо» (длина одного бита во времени больше чем длится всплеск), когда шина реализована не правильно, из за «эхо» образуются всплески которые могут неоднозначно детектироваться оборудованием
Правильная реализация RS-485, это шина, не звезда, а шина. Отростки от шины допускаются максимум в ~1 метр (~1 метр до контроллера работающей с этой шиной), соблюдая это правило «эхо» может и будет, но очень слабое
«Эхо» глушат резисторами или как их еще называют «терминальные резисторы», если шина реализована правильно, эхо практически не будет и ставить их нет смысла (но лучше перепроверить о чем ниже)
С терминальными резисторами надо быть осторожнее, они просаживают линию, если в линии ошибки, лучше посмотреть осциллографом, что вообще твориться (был случай когда линию реализовали не правильно и часто были ошибки, поставили резисторы, вообще перестало работать, потом выяснили, из за просадки на линии, до устройств не доходил сигнал, напряжение логической единицы был меньше чем порог срабатывания, по этому и надо смотреть линию осциллографом, с помощью него сразу видны всплески («эхо») и просадки)
Источник: https://habr.com/ru/articles/1042242/