Как подключить прибор Modbus RTU к сети Ethernet?
Обновлено Редакция GAW
Прибор с Modbus RTU общается по последовательной линии — обычно RS-485. В Ethernet его выводят через шлюз Modbus TCP — RTU: у шлюза один IP-адрес на всю линию, а приборы за ним различаются по полю Unit ID (руководство Modbus по TCP/IP, разд. 3.1.2).
Что настроить
| Где | Параметр | Значение |
|---|---|---|
| Шлюз, сторона сети | IP-адрес, маска, шлюз по умолчанию | из подсети, где работает клиент |
| Шлюз, сторона RS-485 | скорость, чётность, стоп-биты | как у прибора |
| Шлюз | таймаут ответа линии | больше времени ответа прибора |
| Клиент (SCADA, ПЛК, программа) | адрес и порт | IP шлюза, порт 502 |
| Клиент | Unit ID | адрес прибора на линии, 1–247 |
| Прибор | адрес и параметры порта | уникальный адрес, те же настройки линии |
Адрес, маску и шлюз для устройства в сети подберёт калькулятор подсетей.
Как запрос проходит через шлюз
Наш пример: чтение 10 регистров хранения с адреса 0 у прибора с адресом 1.
- Клиент отправляет кадр Modbus TCP:
00 01 00 00 00 06 01 03 00 00 00 0A— заголовок MBAP с Unit ID 01 и PDU03 00 00 00 0A. - Шлюз снимает заголовок, ставит адрес 01 и добавляет CRC-16: на линию уходит
01 03 00 00 00 0A C5 CD(CRC — наш расчёт). - Прибор отвечает кадром RTU, шлюз убирает CRC, добавляет заголовок с тем же номером транзакции и отправляет ответ клиенту.
PDU — код функции и данные — на обоих транспортах одинаков. Кадр TCP на 4 байта длиннее RTU: 7 байт заголовка вместо байта адреса и двух байт CRC. Собрать и разобрать такие кадры можно в калькуляторе Modbus TCP, а кадр RTU с CRC — в калькуляторе Modbus RTU.
Наш вывод: Unit ID 0 через шлюз не используйте — на линии это широковещательный адрес, ответа на него не будет. Как устроен сам протокол и почему адреса регистров считаются с нуля — в статье «Modbus RTU».
Похожие вопросы
Сколько приборов можно подключить к одному шлюзу?
Столько, сколько допускает линия RS-485 и адресное пространство Modbus: адреса ведомых на линии — от 1 до 247. По электрике ограничение — единичные нагрузки трансиверов: стандартный передатчик рассчитан на 32. Шлюз различает приборы по Unit ID, а IP-адрес у всей линии один.
Можно ли опрашивать прибор за шлюзом сразу из двух программ?
По TCP — да, но на линии RS-485 запросы всё равно идут по одному: руководство Modbus по TCP/IP возлагает согласование на шлюз. Чем больше клиентов и запросов, тем дольше каждый ждёт ответа, — закладывайте это в таймауты клиентов.
Чем шлюз отличается от «прозрачного» преобразователя Ethernet — RS-485?
Шлюз понимает Modbus: принимает кадр TCP с заголовком MBAP, отправляет на линию кадр RTU с адресом и CRC и возвращает ответ в формате TCP. Прозрачный преобразователь просто передаёт байты линии через сокет — по сети идёт кадр RTU с CRC, и клиент Modbus TCP его не поймёт. Такой режим работает только с программами, которые умеют отправлять RTU через TCP.
Источники
- Modbus Organization. MODBUS Messaging on TCP/IP Implementation Guide V1.0b, 2006 — разд. 3.1.2: адрес устройства заменён полем Unit Identifier в заголовке MBAP, через него работают мосты, маршрутизаторы и шлюзы с одним IP-адресом на несколько устройств; разд. 3.1.3: порт 502; разд. 4.4.1: по TCP можно отправить несколько запросов не дожидаясь ответа, совместимость с последовательной линией (один запрос за раз) обеспечивает шлюз; разд. 4.4.1.2: за шлюзом Unit Identifier несёт адрес ведомого на линии 1–247, адрес 0 — широковещательный; разд. 4.3.3.1: шлюз по умолчанию — в подсети устройства
- Modbus Organization. MODBUS Application Protocol Specification V1.1b3, 2012 — разд. 4.1: PDU не длиннее 253 байт; ADU на RS-485 — 256 байт с адресом и CRC, ADU Modbus TCP — 260 байт с заголовком MBAP
- Texas Instruments. The RS-485 Design Guide (SLLA272D, rev. May 2021) — разд. 8: передатчик по стандарту должен работать на 32 единичные нагрузки
Нашли ошибку?
Смотрите также
- Modbus TCP: кадрыЗаголовок MBAP, функции 01–06, 15, 16 и 23, разбор, сравнение с RTU
- Modbus RTUКадр, паузы 3,5 символа, функции, регистры, CRC-16, RS-485, отладка
- RS-485Уровни, длина линии, терминаторы, смещение, MAX485, Modbus RTU
- Калькулятор подсетей IPv4Маска и CIDR, сеть, broadcast, узлы, частные диапазоны, деление на подсети
- Modbus RTU: кадрыЗапрос с CRC, разбор ответа, float, адреса 4xxxx