Связь есть, ответы приходят, а значения «не те»: температура 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 в двух регистрах. Порядок слов и байтов может отличаться. Проверяйте на нескольких значениях: если при одном порядке числа выглядят правдоподобно на всём диапазоне, скорее всего, он верный.
Битовые поля
Один регистр может содержать набор флагов: состояние, ошибки, режим. В карте описывают, какой бит что означает. Читать такое значение «целиком» бессмысленно: нужно разбирать по битам. Полезно сразу сделать таблицу соответствия, чтобы не путаться при отладке.
Проверка на практике
- Считайте несколько регистров.
- Сравните с показаниями прибора.
- Измените параметр и посмотрите, какой регистр отреагировал.
- Проверьте масштаб и знак.
- Запишите результат для будущих задач.
Типичные ошибки
- сдвиг адреса на единицу;
- неверный порядок слов;
- знак вместо беззнакового;
- забытый масштаб;
- чтение битового поля как числа;
- отсутствие записи о найденных соответствиях.
Итог
Карта регистров — это словарь между прибором и программой. Понимание адресации, форматов, порядка байтов и масштаба снимает большинство «странных» значений. Результаты полезно документировать: через месяц вы не будете помнить, какой регистр был тем самым.
Частые вопросы
Почему адрес не совпадает?
Разница между «человеческой» и протокольной нумерацией.
Как определить порядок байтов?
Экспериментально, по известному значению.
Что делать, если значение «примерно верное»?
Проверить масштаб.
Как читать float?
Как два регистра с проверкой порядка слов.
Где хранить результаты?
В документе по устройству, рядом с картой.
Чем полезны «нулевые» и «единичные» значения
При отладке хорошо работают контрольные значения: запишите 1, затем 0, посмотрите, какой регистр изменился и как. Если прибор позволяет задать уставку, задайте её и проверьте, что считанное значение совпадает. Так вы определяете не только адрес, но и масштаб: например, уставка 25,0 превращается в 250 — значит, шаг 0,1.
Особенности регистров «только чтение»
Входные регистры (3xxxx) и регистры хранения (4xxxx) часто путают. Если запись «не проходит», возможно, вы пытаетесь писать в регистр только для чтения. Проверьте карту: у каждого параметра указан доступ. Это простая ошибка, которая отнимает много времени.
Как документировать свою карту
Даже если документация производителя есть, полезно вести свою таблицу: адрес, назначение, формат, масштаб, проверенное значение. В ней фиксируйте то, что вы реально проверили на устройстве. Через полгода такая таблица будет ценнее оригинальной карты, потому что отражает вашу конфигурацию и ваши обозначения.
Взаимодействие с ПЛК
Если ПЛК читает регистры, проверяйте не только «сырые» значения, но и то, как они преобразуются в программе. Ошибка в масштабировании может быть на стороне контроллера, а не прибора. Полезно выводить промежуточные значения на панель или в отладочный экран, чтобы видеть, где происходит искажение.
Итог
Карта регистров — это перевод между «языком прибора» и вашей программой. Понимание адресации, форматов, порядка байтов и масштаба снимает большинство проблем с «неправильными» значениями. Проверяйте на контрольных значениях и записывайте результаты.
Что сделать в первую очередь
Возьмите прибор и один параметр, который легко проверить вручную. Найдите соответствующий регистр, определите формат и масштаб, запишите. Затем повторите для второго параметра. После двух-трёх таких упражнений разбираться в новых устройствах станет заметно проще.
Про чтение больших блоков
Читать регистры по одному медленно. Обычно читают блоком, но нужно учитывать ограничения и то, что часть адресов может быть не реализована. Если прибор возвращает ошибку на блок, читайте меньшими фрагментами, чтобы найти проблемный участок. Это быстрее, чем перебирать по одному регистру.
Про совместимость версий
У разных версий прошивки одного прибора карта регистров может отличаться. Перед настройкой уточните версию и сверьтесь с соответствующей документацией. Записывайте версию в проектную документацию — это избавит от загадок при замене устройства.
Короткая памятка
Проверьте адрес (сдвиг на единицу), формат (16/32 бита), порядок слов, знак и масштаб. Запишите результат проверки. Если значение «примерно верное», вероятнее всего, ошибка в масштабе.
Про типовые значения для проверки
Хорошо работают уставки, счётчики и параметры с известным диапазоном. Например, если прибор показывает 23,5 °C, найдите значение 235 или 23,5 в регистрах — так вы определите и адрес, и масштаб одновременно. Главное — не подгонять результат под ожидание, а проверять на нескольких точках.