Modbus: регистры и адресация

Зачем

Протокол Modbus: четыре типа регистров, адресация и ловушка «номер минус один». Must для инженера АСУ ТП — его понимают почти все приборы.

Предложить правку

Modbus — это «язык» поверх проводов

Вспомни прошлый урок: RS-485 — дорога, Modbus — язык. Modbus задаёт, как именно master формирует запрос, а slave отвечает: какие байты, в каком порядке, что они значат. Он простой, открытый и потому победил и он один из самых популярных и еще долго им останется.

Четыре типа данных

Всё в Modbus сведено к четырём «полкам». Две хранят биты (вкл/выкл), две — 16-битные числа (регистры); по одной на чтение и на чтение-запись.

Тип Размер Доступ Что хранит Аналог в ПЛК
Coils 1 бит чтение/запись дискретные выходы DO
Discrete Inputs 1 бит только чтение дискретные входы DI
Input Registers 16 бит только чтение аналоговые входы, измерения AI
Holding Registers 16 бит чтение/запись уставки, параметры, универсальное AO, настройки

Совет

Заметил параллель с AI/AO/DI/DO из раздела про ПЛК? Это не случайно: Modbus просто «выставляет наружу» те же четыре типа сигналов. Coils = DO, Discrete Inputs = DI, Input Registers = AI, Holding Registers = AO/настройки. Если ты понял ввод-вывод ПЛК — половину Modbus ты уже знаешь.

Классическая ловушка: «номер − 1»

На этом спотыкаются все новички, и это причина бесконечных «почему не читается».

Важно

В документации регистры часто нумеруют с единицы (Holding Register №1, №2…), а в кадре запроса адрес идёт с нуля. То есть регистр «номер 1» лежит по адресу 0, «номер 40001» — по адресу 0, регистр №100 — по адресу 99. Всегда уточняй, что дал тебе производитель: «номер» (с 1) или «адрес» (с 0). Несовпадение на единицу — причина 90% проблем «читаю не тот регистр». Сверяйся с картой регистров (Modbus map) прибора.

Разобранный пример

Частотник в паспорте: «текущая частота — регистр 40020, заводская скорость — регистр 40021». Это номера Holding-регистров (с 1). В запросе Modbus ты обратишься к адресам 19 и 20 (вычитаешь 40001). Прочитал по адресу 20 вместо 19 — получишь скорость вместо частоты и будешь долго гадать, почему «датчик врёт». Карта регистров прибора — твой главный документ при работе с Modbus.

RTU и TCP — один протокол, разные «конверты»

Вариант Физика Где
Modbus RTU поверх RS-485 (последовательный) датчики, частотники, легаси-оборудование
Modbus TCP поверх Ethernet/TCP-IP связь с ПЛК, SCADA, современные стенды

Логика регистров одна и та же — меняется только «транспорт». Научился RTU — TCP освоишь за вечер.

Чем читают Modbus на практике

Совет

Без инструмента Modbus не освоить, и тут есть свои стандарты де-факто. Для опроса и отладки используют Modbus Poll (платный, но есть демо) в роли «мастера» и бесплатный qModMaster. Принцип один: задаёшь адрес устройства, тип и номер регистра — и сразу видишь значение, можешь записать уставку. На объекте это первое, чем проверяют связь с прибором: «отвечает ли он вообще и что лежит в его регистрах». Освой один такой опросчик — это твой тестер для любого Modbus-устройства.

Проверь себя

  1. В каком типе данных Modbus лежит измерение датчика 4–20 мА — и почему «только чтение»?
  2. Производитель пишет «регистр 40005». По какому адресу ты к нему обратишься?
  3. Чем Modbus RTU отличается от Modbus TCP?

Предложить правку

Практическое задание

Скачай бесплатный Modbus-симулятор/мастер (например, программу-опросчик Modbus Poll в демо-режиме или аналог) и потренируйся читать карту регистров:

  1. найди в интернете реальную карту регистров Modbus любого прибора (частотник, счётчик, датчик ОВЕН);
  2. выпиши 5 параметров: их номера из паспорта, тип (coil / input register / holding register) и пересчитай в адреса (с нуля);
  3. определи, какие из них только для чтения, а какие можно записывать (уставки).

Для углубления зайди на SimplyModbus или спецификацию modbus.org и разберись, какие функции (function codes) читают/пишут каждый тип данных (например, 0x03 — чтение Holding-регистров). Выпиши код функции для чтения измерения с датчика.

Предложить правку

Поддержи проект!

IndustrialProfi пока разрабатывается на энтузиазме силами одного человека. Помоги создать лучшую открытую энциклопедию для востребованных и полезных профессий. Спасибо за участие!