Skip to Content

Добавление устройства

Добавление устройства

Для добавления нового устройства перейдите в соответствующий подраздел:

  • Паллетайзеры
  • Зарядные станции
  • Другое оборудование

Затем нажмите кнопку «+ Добавить [тип устройства]» в правом верхнем углу.

Процесс настройки состоит из нескольких этапов:

  1. Основные параметры устройства
  2. Настройка соединения
  3. Конфигурация данных
  4. Сохранение

Шаг 1. Основные настройки

Этот блок определяет идентификацию устройства и его расположение на карте склада.

ПараметрОписание
ИмяПроизвольное название устройства (например, PAL-01-West)
Серийный номерЗаводской идентификатор оборудования
ТочкаID точки на карте склада, к которой привязано устройство. Роботы будут приезжать именно в эту точку для взаимодействия
ОриентацияУгол поворота устройства относительно карты склада, в градусах (0, 180 и т.д.). Используется для корректного отображения на карте
Активный

Да — устройство включено в работу и готово к выполнению задач.

Нет — устройство временно выведено из эксплуатации системой.

Шаг 2. Настройка соединения

Система WCS взаимодействует с оборудованием через протокол Modbus.

Укажите параметры подключения контроллера.

ПараметрОписание
Тип подключенияТип протокола Modbus
Host (IP-адрес)IP-адрес контроллера оборудования
PortПорт подключения (обычно 502)
Slave IDАдрес устройства в сети Modbus (обычно 1)
Таймаут (мс)Максимальное время ожидания ответа от устройства
Интервал опроса (мс)Частота опроса состояния оборудования

{% hint style=“info” %} Пример: 1000 мс = 1 запрос состояния в секунду. {% endhint %}

Шаг 3. Конфигурация данных

Чтобы WCS могла корректно интерпретировать данные контроллера, необходимо указать формат передачи данных.

ПараметрОписание
Порядок байт (Byte Order)Определяет порядок байтов внутри регистра
Порядок слов (Word Order)Порядок слов для 32-битных значений
Схема параметров (JSON)Описание регистров контроллера и их назначения

JSON-схема определяет:

  • какие регистры опрашиваются
  • какие сигналы или команды они содержат
  • как эти данные называются внутри WCS

Шаг 4. Сохранение

После завершения настройки нажмите Сохранить.

После сохранения:

  • устройство появится в реестре оборудования
  • при корректных сетевых параметрах статус подключения станет «Подключено»
  • устройство будет отображаться на карте склада в указанной точке

Технические настройки соединения (Modbus)

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

Типы подключения

Система поддерживает несколько вариантов протокола Modbus.

ПротоколОписание
Modbus TCP (рекомендуется)Работа через сеть Ethernet. Преимущества: высокая скорость, стабильное соединение, поддержка большинством современных контроллеров.
Modbus RTUПередача данных через RS-485 / RS-232. В WCS обычно используется через Ethernet-шлюзы.
Modbus ASCIIРедко используемая версия протокола. Применяется только для специфического или устаревшего оборудования.

Интерпретация данных

Разные контроллеры могут хранить данные в регистрах по-разному.
Поэтому необходимо настроить порядок байт и слов.

Порядок байт (Byte Order)

Определяет порядок байтов внутри 16-битного регистра.

ЗначениеОписание
Big EndianСтарший байт передается первым
Little EndianМладший байт передается первым

{% hint style=“info” %} Совет: Если в разделе Registers вместо ожидаемого значения 1 отображается 256, это почти всегда означает неправильный Byte Order. Попробуйте изменить порядок байт с Big Endian на Little Endian. {% endhint %}

Порядок слов (Word Order)

Используется для значений, которые занимают несколько регистров (например, 32-битные числа).

ЗначениеОписание
ABCDСтандартный порядок
BADC / CDABПереставленные слова
DCBAОбратный порядок

Необходимые значения обычно указаны в документации производителя оборудования (Modbus Map).

Если после сохранения схемы в окне «Детали» в блоке Registers вы видите некорректные значения, убедитесь, что параметры Byte Order и Word Order в настройках соединения соответствуют спецификации вашего контроллера.

Схема параметров (JSON)

Поле Схема параметров JSON является ключевым элементом настройки оборудования. Это «карта» данных, которая объясняет WCS-системе, как интерпретировать сигналы из Modbus-регистров контроллера, какие из них являются критическими ошибками, а какие — командами управления.

Схема не является статичной: вы можете добавлять новые параметры или удалять неиспользуемые в зависимости от модели вашего оборудования.

Пример полной JSON-схемы для паллетайзера

{ "description": "Palletizer PX-1000 Modbus Map", "vendor": "PalletizerCo", "version": "1.0", "exit_point_code": "600079", "model": "PX-1000", "objects": [ { "id": "ready_status", "name": "Ready Status", "address": 16386, "type": "state", "category": "workflow", "data_type": "uint16", "access": "ro", "block": "holding_main", "description": "Статус готовности к работе (0 - не готов, 1 - готов)" }, { "id": "error_safety_system", "name": "Error: Safety System", "address": 16389, "type": "alarm", "severity": "critical", "category": "diagnostics", "data_type": "uint16", "access": "ro", "block": "holding_main", "description": "Сработала система безопасности ячейки" }, { "id": "cmd_start_palletizing", "name": "Start Palletizing", "address": 16384, "type": "command", "category": "control", "trigger": "level", "data_type": "uint16", "access": "rw", "block": "holding_main", "description": "Команда на начало цикла паллетизации" } ], "register_blocks": [ { "name": "holding_main", "address": 16384, "count": 20, "type": "holding_register", "polling_interval_ms": 1000 } ], "register_groups": [ { "id": "error_registers", "name": "Error Registers", "register_ids": ["error_safety_system"] } ] }

Описание ключевых блоков и полей для паллетайзеров:

1. Блок objects (Индивидуальные параметры):

  • id: уникальный программный код параметра.
  • address: физический адрес регистра в памяти оборудования (согласно Modbus Map).
  • type: роль параметра в системе:
    • state — текущее состояние устройства.
    • alarm — сигнал об ошибке.
    • command — управляющее воздействие (кнопка).
  • access: права доступа (ro — только чтение, rw — чтение и запись).
  • severity: важность (только для alarm):
    • critical — блокирует работу в данной точке.
    • warning — уведомляет диспетчера, не прерывая процесс.
  • trigger: логика срабатывания команды:
    • level — сигнал активен, пока значение равно 1.
    • pulse — импульсное срабатывание (кратковременный сигнал).

2. Блок register_blocks (Оптимизация опроса):

Позволяет системе читать группы регистров целиком, а не по одному.

  • address и count: начальный адрес и количество регистров в группе.
  • polling_interval_ms: частота обновления данных для этого блока.

3. Блок register_groups (Группировка):

Объединяет параметры по смыслу для удобного отображения в интерфейсе (например, все ошибки в одной вкладке).

4. Логистические параметры:

  • exit_point_code: код точки графа, через которую груз покидает устройство.
  • points: список всех точек на карте, связанных с работой данного оборудования.

Для зарядной станции JSON-схема обычно значительно компактнее, так как она передает меньше операционных данных по сравнению с паллетайзером. Основная задача здесь — мониторинг доступности станции и контроль процесса заряда.

Вот пример типовой схемы для зарядной станции:

Пример JSON-схемы для зарядной станции

{ "description": "Зарядная станция v.2.0 - Modbus Map", "vendor": "EnergyCore", "version": "2.1", "model": "EC-FastCharge", "objects": [ { "id": "ready_status", "name": "Station Ready", "address": 100, "type": "state", "category": "workflow", "data_type": "uint16", "access": "ro", "block": "main_registers", "description": "Готовность станции: 1 — свободна, 0 — занята/ошибка" }, { "id": "charging_active", "name": "Charging In Progress", "address": 101, "type": "state", "category": "workflow", "data_type": "uint16", "access": "ro", "block": "main_registers", "description": "Процесс зарядки: 1 — идет заряд, 0 — ток не подается" }, { "id": "error_overheat", "name": "Error: Overheat", "address": 105, "type": "alarm", "severity": "critical", "category": "diagnostics", "data_type": "uint16", "access": "ro", "block": "main_registers", "description": "Перегрев зарядного модуля" }, { "id": "current_battery_level", "name": "Current Robot Charge", "address": 110, "type": "state", "category": "workflow", "data_type": "uint16", "access": "ro", "block": "main_registers", "description": "Текущий уровень заряда подключенного робота (%)" }, { "id": "cmd_stop_charge", "name": "Emergency Stop Charge", "address": 120, "type": "command", "category": "control", "trigger": "pulse", "data_type": "uint16", "access": "rw", "block": "main_registers", "description": "Команда принудительной остановки подачи тока" } ], "register_blocks": [ { "name": "main_registers", "address": 100, "count": 30, "type": "holding_register", "polling_interval_ms": 2000 } ] }

Описание ключевых блоков и полей для зарядных станций:

  1. Интервал опроса (polling_interval_ms): Для зарядок его можно выставлять чуть больше (например, 2000 мс), так как уровень заряда и статус готовности не меняются так мгновенно, как датчики на паллетайзере.
  2. Поле current_battery_level: Позволяет диспетчеру в окне «Детали» видеть, насколько заряжен робот прямо сейчас, не переключаясь на вкладку роботов.
  3. Критические ошибки (severity: critical): Если сработал датчик перегрева (error_overheat), система WCS автоматически исключит эту точку из списка доступных для зарядки, и другие роботы не поедут к ней до устранения проблемы.
  4. Команды (command): Используются редко, но полезны для удаленной перезагрузки станции или экстренной остановки процесса через WCS.

Пример JSON-схемы для периферийных устройств (на примере ворот)

{ "description": "Автоматические ворота складской зоны - Modbus Map", "vendor": "GateMaster", "version": "1.0", "model": "GM-HighSpeed-01", "objects": [ { "id": "gate_status", "name": "Gate Position", "address": 200, "type": "state", "category": "workflow", "data_type": "uint16", "access": "ro", "block": "gate_registers", "description": "0 - закрыты, 1 - открыты, 2 - в движении" }, { "id": "error_obstruction", "name": "Error: Obstruction", "address": 205, "type": "alarm", "severity": "critical", "category": "diagnostics", "data_type": "uint16", "access": "ro", "block": "gate_registers", "description": "Препятствие в проеме ворот" }, { "id": "cmd_open_gate", "name": "Open Gate", "address": 210, "type": "command", "category": "control", "trigger": "pulse", "data_type": "uint16", "access": "rw", "block": "gate_registers", "description": "Команда на открытие ворот" }, { "id": "cmd_close_gate", "name": "Close Gate", "address": 211, "type": "command", "category": "control", "trigger": "pulse", "data_type": "uint16", "access": "rw", "block": "gate_registers", "description": "Команда на закрытие ворот" } ], "register_blocks": [ { "name": "gate_registers", "address": 200, "count": 15, "type": "holding_register", "polling_interval_ms": 500 } ] }

Особенности настройки для прочих устройств:

  1. Высокая частота опроса (polling_interval_ms): Для таких устройств, как скоростные ворота или датчики безопасности, рекомендуется ставить интервал 500 мс или меньше. Это нужно, чтобы робот не «ждал» перед открытыми воротами лишнюю секунду, пока WCS обновит статус.
  2. Многопозиционные статусы: В поле gate_status значение может быть не только 0 или 1. Например, значение 2 («в движении») позволяет системе понимать, что процесс идет, и не выдавать ошибку преждевременно.
  3. Использование trigger: pulse: Для ворот часто используются импульсные команды. WCS посылает кратковременный сигнал «открыть», и контроллер ворот начинает выполнение цикла.
  4. Раздел «Другое» как полигон: Сюда можно добавить любое Modbus-совместимое устройство. Если в будущем на складе появятся, например, умные весы, достаточно будет просто заменить objects на параметры веса и стабильности платформы.