К статье
Практический материал

Автоматизация · 11 мин

МДУ и 1С: как определить, сколько адресов занимает модуль

Разбираем, сколько адресов занимает МДУ при обмене с 1С: от чего зависит число регистров, как проверить карту адресов и избежать конфликтов при интеграции.

Вопрос «сколько адресов занимает МДУ» чаще всего возникает при подключении модулей дискретного управления (МДУ) к системе учёта или диспетчеризации, где данные затем попадают в 1С — например, в 1С:ERP, 1С:Управление производственным предприятием или отраслевые решения для ЖКХ и телеметрии. Однозначной цифры здесь нет: число занимаемых адресов зависит от количества каналов модуля, типа данных и протокола обмена. Один и тот же модуль может занимать от нескольких регистров до нескольких десятков.

Важно понимать, что сама 1С не резервирует адреса под оборудование. Адресное пространство определяется протоколом обмена (чаще всего Modbus RTU или Modbus TCP) и картой регистров конкретного устройства. 1С лишь обращается к этим адресам через OPC-сервер, драйвер или промежуточный контроллер. Поэтому ответ на вопрос нужно искать в документации на модуль и в настройках шлюза, а не в конфигурации 1С.

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

Что такое МДУ и при чём здесь 1С

МДУ — модуль дискретного управления (встречаются также расшифровки «модуль дистанционного управления»). Это устройство ввода-вывода, которое принимает дискретные сигналы от датчиков и управляет исполнительными механизмами: реле, контакторами, клапанами, сигнальными лампами. Модули применяются в автоматизации зданий, насосных станциях, вентиляции, учёте энергоресурсов.

Сама по себе 1С не работает с «железом» напрямую. Типовая схема выглядит так: модули подключены к шине (RS-485, Ethernet), данные с них собирает контроллер или OPC-сервер, а 1С получает значения через COM-соединение, веб-сервисы или обмен файлами. В этой цепочке адресация существует на уровне протокола обмена между модулями и контроллером.

Поэтому, когда говорят «сколько адресов занимает МДУ в 1С», корректнее спрашивать: сколько регистров карты памяти протокола обмена отводится под данные этого модуля, и как эти регистры отображаются на переменные, которые читает 1С.

От чего зависит количество занимаемых адресов

Первый фактор — число каналов модуля. Модуль на 8 дискретных входов и 8 выходов потребует меньше регистров, чем модуль на 16 входов и 16 выходов. При этом дискретные сигналы часто упаковываются по 16 штук в один регистр (по одному биту на канал), поэтому рост числа адресов не всегда линейный.

Второй фактор — тип данных. Дискретные состояния (включено/выключено) передаются одним битом или одним coil-регистром. Аналоговые величины — ток, напряжение, температура — обычно занимают один 16-битный регистр, а значения с плавающей точкой или 32-битные счётчики — уже два соседних регистра. Если модуль отдаёт диагностику и уставки, карта расширяется ещё сильнее.

Третий фактор — протокол и модель адресации. В Modbus существуют отдельные области: coils, discrete inputs, input registers, holding registers. Один и тот же модуль может занимать адреса сразу в нескольких областях, и суммарный «расход» адресов считается по каждой области отдельно.

Число каналовБольше каналов — больше регистров

Смотрите паспорт модуля: количество DI, DO, AI, AO

Тип данных16 бит = 1 регистр, 32 бита = 2 регистра

Проверьте, в каком формате отдаются аналоговые значения

Упаковка битовДо 16 дискретных сигналов в одном регистре

Уточните, передаются ли состояния битовой маской

Диагностика и уставкиРасширяют карту регистров

Есть ли в карте служебные регистры конфигурации

Как посчитать адреса по карте регистров

Откройте документацию производителя и найдите раздел с картой регистров (register map). В ней для каждого параметра указаны адрес, функция чтения/записи и формат. Посчитайте диапазон: от минимального до максимального используемого адреса в каждой области плюс один — это и есть занятое пространство.

Обратите внимание на нумерацию: в части документации адреса указываются с нуля (протокольные), в части — с единицы или в нотации 4xxxx. Разница в единицу между «адресом в документе» и «адресом в запросе» — самая частая причина, почему в 1С приходят сдвинутые или неверные данные.

Если в одну шину включено несколько модулей, убедитесь, что у каждого устройства свой сетевой адрес (slave ID), а диапазоны регистров, которые опрашивает мастер, не пересекаются по смыслу. Физически регистры разных устройств не конфликтуют, но на уровне OPC-сервера и тегов, которые читает 1С, пересечение имён и адресов приводит к подмене данных.

Как определить занимаемые адреса
  1. 1
    Найдите в документации модуля карту регистров и определите используемые области памяти
  2. 2
    Выпишите минимальный и максимальный адрес в каждой области с учётом формата данных
  3. 3
    Проверьте нумерацию: с нуля или с единицы, протокольная или 4xxxx
  4. 4
    Сверьте сетевые адреса всех устройств на шине — они должны быть уникальны
  5. 5
    Сопоставьте регистры с тегами OPC-сервера или контроллера, которые читает 1С
  6. 6
    Прочитайте тестовые значения и сравните с фактическим состоянием входов модуля

Как данные модуля попадают в 1С

На практике используются три схемы. Первая — через OPC-сервер: контроллер или шлюз опрашивает модули, OPC-сервер публикует теги, а 1С забирает их через внешнюю компоненту или промежуточный сервис. Вторая — через контроллер с веб-сервисом: контроллер сам формирует пакеты данных, а 1С обращается к нему по HTTP. Третья — файловый или очередной обмен, когда данные телеметрии складываются в промежуточную базу, а 1С загружает их регламентным заданием.

Во всех схемах «адреса» существуют только на нижнем уровне. Внутри 1С вы оперируете уже не регистрами, а измерениями регистров сведений, свойствами оборудования или полями структур обмена. Поэтому задача администратора — корректно сопоставить каждый регистр конкретному показателю в учётной системе и зафиксировать это соответствие в настройках обмена.

Типичные ошибки при настройке адресации

Чаще всего проблемы возникают не из-за количества адресов, а из-за их неверной трактовки. Смещение на единицу из-за разной нумерации, перепутанный порядок байт в 32-битных значениях, чтение holding-регистров как input-регистров — всё это даёт в 1С правдоподобные, но неверные цифры, которые потом уходят в отчёты и начисления.

Вторая группа ошибок — конфликты на шине: два устройства с одинаковым сетевым адресом, неверная скорость или чётность RS-485, отсутствие терминаторов на длинной линии. Внешне это выглядит как «модуль не отвечает» или «данные прыгают», а причина — в физическом уровне, а не в адресации.

Типичные ошибки
01
Чтение со смещением на один регистр из-за нумерации с нуля или с единицы — в 1С приходят чужие значения
02
Неверный порядок байт в 32-битных числах — показания счётчиков выглядят как случайные большие числа
03
Одинаковый slave ID у двух модулей — устройства отвечают одновременно, данные искажаются
04
Сопоставление тегов вручную без проверки — показания одного модуля записываются на объект другого
05
Опрос слишком частый для возможностей шины — таймауты и пропуски значений в учёте

Как проверить корректность настройки

Проверку начинайте с физического воздействия: замкните или разомкните конкретный вход модуля и убедитесь, что в OPC-сервере, а затем в 1С изменилось именно то значение, которое вы ожидали. Повторите для нескольких каналов, включая первый и последний в диапазоне — это выявит смещение адресов.

Для аналоговых величин подайте известное значение (например, эталонный ток) и сравните число в 1С с реальным. Если значение отличается в разы или имеет нереальную величину — проверяйте масштабирующий коэффициент и порядок байт. Зафиксируйте результаты проверки в таблице соответствия: канал — регистр — тег — показатель в 1С. Эта таблица сэкономит часы при следующем расширении системы.

Контрольные точки

Как проверить результат

Изменение состояния входа
Норма

В 1С меняется именно тот показатель, что соответствует каналу

Тревожный признак

Меняется соседний показатель или ничего не меняется

Аналоговое значение
Норма

Число в 1С совпадает с эталоном с учётом масштаба

Тревожный признак

Значение отличается в разы или выглядит случайным

Опрос нескольких модулей
Норма

Каждое устройство отвечает стабильно, таймаутов нет

Тревожный признак

Ответы пропадают или приходят от чужого устройства

Таблица соответствия
Норма

Каждый регистр привязан к одному показателю, привязка задокументирована

Тревожный признак

Соответствие держится «в голове» настройщика

Ограничения и когда нужен специалист

Самостоятельно безопасно выполнять чтение регистров, проверку сопоставлений и настройку обмена на стороне 1С. К работам на физическом уровне — перекоммутация шины, изменение сетевых адресов перемычками, подключение к действующему оборудованию — стоит привлекать специалиста по АСУ ТП, особенно если модули управляют реальными механизмами.

Учтите и ограничения протокола: на одной шине RS-485 количество устройств и длина линии ограничены, а при большом числе опрашиваемых регистров растёт время цикла опроса. Если данных много, их разумно разделить по приоритетам: критичные сигналы опрашивать чаще, справочные — реже.

Перед расширением системы заранее резервируйте диапазоны адресов с запасом: добавление одного нового модуля в «плотно» распределённую карту часто вынуждает перенастраивать всю цепочку сопоставлений до самой 1С.
ПЗ
Практическое замечание

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

Есть ли стандартное число адресов, которое занимает МДУ?

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

Почему в 1С приходят данные со сдвигом на один канал?

Наиболее вероятная причина — разница в нумерации адресов: в документации регистры пронумерованы с единицы, а в запросе используется нумерация с нуля. Скорректируйте смещение в настройках опроса и повторите проверку физическим воздействием на вход.

Можно ли подключить несколько МДУ с одинаковыми картами регистров?

Да, это нормальная практика: регистры у устройств могут совпадать, потому что устройства различаются сетевым адресом (slave ID). Главное, чтобы сетевые адреса были уникальными, а на уровне тегов каждый модуль был привязан к своему объекту в 1С.

Что делать, если 32-битное значение в 1С выглядит как огромное случайное число?

Проверьте порядок следования регистров и байт (word order, byte order) в настройках шлюза. Значение из двух регистров при неверном порядке даёт именно такую картину. Попробуйте альтернативный порядок и сверьте результат с эталонным показанием.

Нужно ли что-то настраивать в самой 1С по части адресов?

Нет, адресация регистров 1С не управляет. В учётной системе настраивается только соответствие: какой тег или поле обмена в какой показатель, счётчик или объект записывается. Вся работа с адресами выполняется на уровне контроллера, шлюза или OPC-сервера.

Как понять, что проблема в шине, а не в адресах?

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

Итог

Что важно запомнить

Число адресов МДУ не фиксировано и определяется картой регистров конкретной модели. Считайте диапазон по документации, проверяйте нумерацию и порядок байт, фиксируйте соответствие регистров показателям в 1С и не записывайте команды в модули, управляющие реальными механизмами, без согласования.