Перейти к содержанию

Команды и переменные Modbus-устройств: руководство пользователя


Этот документ объясняет, как Modbus-устройства "разговаривают" с системой - что такое команда, регистр и переменная, и как их настроить и использовать. Раздел разделён на две части, потому что находится в двух разных местах интерфейса:

Где находится

  • Создание команд и переменных (протокольная карта устройства): "Конфигуратор" → "Типы" → "Modbus-устройства"
  • Назначение ролей готовым командам конкретного устройства: "Конфигуратор" → "Modbus-устройства"

См. также мануалы "Подготовка справочников отеля" и "Настройка ModBus сети"

Базовые понятия

Представьте, что шлюз - это диспетчер, который опрашивает все подключённые устройства. Чтобы получить от устройства данные, диспетчер посылает ему команду - конкретный вопрос: "дай мне регистр номер 0".

Устройство отвечает регистром - это просто 16 бит (2 байта), набор нулей и единиц. Сам по себе регистр ничего не значит для человека. Чтобы превратить его в понятную информацию, в нём выделяют диапазон бит и говорят системе: "вот эти конкретные биты означают тревогу" - это и есть переменная

graph TD
   A["Шлюз<br/>опрашивает устройства по сети"] --> B["Устройство<br/>конкретный прибор, свой адрес"]
   B --> C["Команда<br/>какой регистр прочитать"]
   C --> D["Регистр<br/>ответ устройства, 16 бит"]
   D --> E["Переменная<br/>диапазон бит = конкретное значение"]
Hold "Alt" / "Option" to enable pan & zoom
| Термин | Что это | Пример | |----------------|-------------------------------------------------------------|-------------------------------| | Шлюз | Устройство-посредник, опрашивающее оборудование по сети | PROTOSS-PE11-H | | Устройство | Конкретный физический прибор со своим Modbus-адресом | WP8026ADAM | | Команда | Запрос: какой регистр читать, с какого адреса, сколько штук | GET_DATA, PING | | Регистр | Сырой ответ устройства - 16 бит (2 байта) | Регистр 0 | | Переменная | Диапазон бит внутри регистра, которому присвоено значение | Биты 3-12 → тревожное событие |

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

Биты Что означают
0-2 не используется
3-12 Переменная: тревожное событие
13-15 не используется

Часть 1: Создание команд и переменных в типе устройства

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

Шаг 1: Параметры типа устройства

  1. В боковом меню выберите "Конфигуратор""Типы""Modbus-устройства"
  2. Нажмите "+ Добавить тип"
  3. Заполните параметры устройства:

    • Активность: переключатель в правом верхнем углу
    • Название типа: уникальное название (например, WP8026ADAM) (обязательное поле)
    • Преднастроенный Modbus-адрес: адрес устройства на шине Modbus (обязательное поле)
    • Тип события: тип события, связанный с устройством (обязательное поле)
    • Описание: (опционально)

Шаг 2: Добавление команды устройства

  1. В блоке "Команды" нажмите "+ Добавить"
  2. Заполните параметры команды:

    • Название: например, Команда 1 (обязательное поле)
    • Тип события: тип события, связанный с командой (обязательное поле)
    • Тип регистра: выберите тип регистра Modbus, например "Регистры ввода" или "Регистры хранения" (обязательное поле)
  3. Укажите начальный регистр ("Старт") и количество регистров ("Регистров")

  4. Система отобразит визуальную карту регистра по байтам и битам

Шаг 3: Создание переменной

  1. В визуальной карте регистра выделите нужный диапазон бит, можно несколько бит подряд (например, биты 3-12)
  2. Под картой регистра появится подсказка "Выделено: биты N-N" с кнопками "+ Создать переменную" и "Отменить выделение"
  3. Нажмите "+ Создать переменную"
  4. Заполните параметры переменной:

    • Активность: переключатель
    • Название: обязательное поле
    • Тип события: обязательное поле
    • Стартовый бит в команде: подставляется автоматически по выделению (обязательное поле)
    • Длина: количество бит, подставляется автоматически по выделению (например, для диапазона 3-12 длина будет 10) (обязательное поле)
    • Описание: опционально
  5. Нажмите "Сохранить" (или "Отмена")

Часть 2: Работа с командами на странице "Modbus-устройства"

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

Шаг 4: Назначение роли команде

  1. Под устройством в таблице вы увидите карточки всех его команд - тип регистра, диапазон, количество переменных, статус
  2. Нажмите на значок карандаша на карточке команды, чтобы открыть окно "Изменить команду" и изменить "Название команды", "Тип события" или "Описание"
  3. Нажмите на значок молнии на карточке, чтобы назначить команде роль:

  4. "Использовать команду для получения данных" - команда будет читать данные с устройства

  5. "Использовать команду для пинга устройства" - команда будет использоваться для проверки доступности устройства

  6. Статус под карточкой покажет текущую роль (например, "Читает данные и пингует", "Используется для пинга") или "Выключена", если роль не назначена

  7. Столбец "Состав" в таблице "Modbus-устройства" показывает, сколько команд из общего числа уже получили роль (например, 1/2 команды)

Шаг 5: Если переменные не настроены

Если под карточками команд написано "Переменные команды отсутствуют" - значит, для устройства не настроены переменные. Вернитесь к Шагу 3 в справочнике типа устройства и добавьте нужные переменные

Возможные проблемы и решения

"Команда не получает данные"

Причины:

  • Команде не назначена роль "Использовать команду для получения данных"
  • Для команды не настроены переменные

Решение:

  1. Нажмите на значок молнии на карточке команды и назначьте нужную роль
  2. Настройте переменные в справочнике типа устройства (Часть 1, Шаг 3)

Важная информация

  • Команды и переменные настраиваются один раз на уровне типа устройства - все экземпляры этого типа получают одинаковый набор команд
  • На странице "Modbus-устройства" команды и переменные нельзя создать или изменить состав - только назначить роль и отредактировать название/тип события/описание существующей команды
  • Одна команда может содержать несколько переменных, если в её регистрах закодировано несколько независимых сигналов