Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → Modbus: карта регистров

Карта регистров Modbus: как читать и не перепутать типы данных

Как разобраться в карте регистров Modbus: адресация 0/1/3/4xxxx, типы данных, порядок байтов, масштабирование, знаковые значения и типичные ошибки при чтении данных с приборов.

Связь есть, ответы приходят, а значения «не те»: температура 6553, давление отрицательное, счётчик скачет. В большинстве случаев проблема не в линии, а в карте регистров: другой тип данных, другой порядок байтов, другая шкала. Разобраться в этом проще, если понимать, как устроена адресация и как производители описывают данные.

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

Modbus различает:

Тип Доступ Обычное обозначение
Дискретные входы чтение 1xxxx
Выходы (катушки) чтение/запись 0xxxx
Входные регистры чтение 3xxxx
Регистры хранения чтение/запись 4xxxx

Нумерация в документации часто «человеческая» и начинается с 1, а в протоколе адрес начинается с 0. Отсюда классическая ошибка на единицу.

Как читать карту

В карте обычно указаны: адрес, тип, назначение, формат (16 или 32 бита), единицы и масштаб. Если карта неполная, приходится определять формат экспериментально: записать известное значение, посмотреть, как оно выглядит в регистрах, и сравнить. Это быстрее, чем угадывать.

Порядок байтов

32-битные значения занимают два регистра. Производители по-разному располагают старшее и младшее слово. Отсюда «перепутанные» числа. Приёмы: попробовать оба варианта и сравнить с ожидаемым; найти в документации указание на word order; проверить на значении, которое легко распознать (например, 1.0 или 100.0).

Знаковые и беззнаковые

Регистр 16 бит может быть знаковым или беззнаковым. Если температура может быть отрицательной, а значение читается как 65 000, скорее всего, его нужно интерпретировать как знаковое. Ошибка приводит к тому, что «минус» превращается в огромное положительное число.

Масштабирование

Приборы часто передают значение в «сырых» единицах: например, температуру в десятых долях градуса. Тогда 235 означает 23,5 °C. Масштаб указывают в карте; если нет — подбирают по ожидаемому диапазону. Ошибка в масштабе даёт значения, которые «примерно похожи», и это опаснее всего: их легко принять за рабочие.

Плавающая точка

Некоторые приборы передают float в двух регистрах. Порядок слов и байтов может отличаться. Проверяйте на нескольких значениях: если при одном порядке числа выглядят правдоподобно на всём диапазоне, скорее всего, он верный.

Битовые поля

Один регистр может содержать набор флагов: состояние, ошибки, режим. В карте описывают, какой бит что означает. Читать такое значение «целиком» бессмысленно: нужно разбирать по битам. Полезно сразу сделать таблицу соответствия, чтобы не путаться при отладке.

Проверка на практике

  1. Считайте несколько регистров.
  2. Сравните с показаниями прибора.
  3. Измените параметр и посмотрите, какой регистр отреагировал.
  4. Проверьте масштаб и знак.
  5. Запишите результат для будущих задач.

Типичные ошибки

  • сдвиг адреса на единицу;
  • неверный порядок слов;
  • знак вместо беззнакового;
  • забытый масштаб;
  • чтение битового поля как числа;
  • отсутствие записи о найденных соответствиях.

Итог

Карта регистров — это словарь между прибором и программой. Понимание адресации, форматов, порядка байтов и масштаба снимает большинство «странных» значений. Результаты полезно документировать: через месяц вы не будете помнить, какой регистр был тем самым.

Частые вопросы

Почему адрес не совпадает?

Разница между «человеческой» и протокольной нумерацией.

Как определить порядок байтов?

Экспериментально, по известному значению.

Что делать, если значение «примерно верное»?

Проверить масштаб.

Как читать float?

Как два регистра с проверкой порядка слов.

Где хранить результаты?

В документе по устройству, рядом с картой.

Чем полезны «нулевые» и «единичные» значения

При отладке хорошо работают контрольные значения: запишите 1, затем 0, посмотрите, какой регистр изменился и как. Если прибор позволяет задать уставку, задайте её и проверьте, что считанное значение совпадает. Так вы определяете не только адрес, но и масштаб: например, уставка 25,0 превращается в 250 — значит, шаг 0,1.

Особенности регистров «только чтение»

Входные регистры (3xxxx) и регистры хранения (4xxxx) часто путают. Если запись «не проходит», возможно, вы пытаетесь писать в регистр только для чтения. Проверьте карту: у каждого параметра указан доступ. Это простая ошибка, которая отнимает много времени.

Как документировать свою карту

Даже если документация производителя есть, полезно вести свою таблицу: адрес, назначение, формат, масштаб, проверенное значение. В ней фиксируйте то, что вы реально проверили на устройстве. Через полгода такая таблица будет ценнее оригинальной карты, потому что отражает вашу конфигурацию и ваши обозначения.

Взаимодействие с ПЛК

Если ПЛК читает регистры, проверяйте не только «сырые» значения, но и то, как они преобразуются в программе. Ошибка в масштабировании может быть на стороне контроллера, а не прибора. Полезно выводить промежуточные значения на панель или в отладочный экран, чтобы видеть, где происходит искажение.

Итог

Карта регистров — это перевод между «языком прибора» и вашей программой. Понимание адресации, форматов, порядка байтов и масштаба снимает большинство проблем с «неправильными» значениями. Проверяйте на контрольных значениях и записывайте результаты.

Что сделать в первую очередь

Возьмите прибор и один параметр, который легко проверить вручную. Найдите соответствующий регистр, определите формат и масштаб, запишите. Затем повторите для второго параметра. После двух-трёх таких упражнений разбираться в новых устройствах станет заметно проще.

Про чтение больших блоков

Читать регистры по одному медленно. Обычно читают блоком, но нужно учитывать ограничения и то, что часть адресов может быть не реализована. Если прибор возвращает ошибку на блок, читайте меньшими фрагментами, чтобы найти проблемный участок. Это быстрее, чем перебирать по одному регистру.

Про совместимость версий

У разных версий прошивки одного прибора карта регистров может отличаться. Перед настройкой уточните версию и сверьтесь с соответствующей документацией. Записывайте версию в проектную документацию — это избавит от загадок при замене устройства.

Короткая памятка

Проверьте адрес (сдвиг на единицу), формат (16/32 бита), порядок слов, знак и масштаб. Запишите результат проверки. Если значение «примерно верное», вероятнее всего, ошибка в масштабе.

Про типовые значения для проверки

Хорошо работают уставки, счётчики и параметры с известным диапазоном. Например, если прибор показывает 23,5 °C, найдите значение 235 или 23,5 в регистрах — так вы определите и адрес, и масштаб одновременно. Главное — не подгонять результат под ожидание, а проверять на нескольких точках.

Полезные материалы