Добавление устройства
Добавление устройства
Для добавления нового устройства перейдите в соответствующий подраздел:
- Паллетайзеры
- Зарядные станции
- Другое оборудование
Затем нажмите кнопку «+ Добавить [тип устройства]» в правом верхнем углу.
.png)
Процесс настройки состоит из нескольких этапов:
- Основные параметры устройства
- Настройка соединения
- Конфигурация данных
- Сохранение
.png)
Шаг 1. Основные настройки
Этот блок определяет идентификацию устройства и его расположение на карте склада.
| Параметр | Описание |
| Имя | Произвольное название устройства (например, PAL-01-West) |
| Серийный номер | Заводской идентификатор оборудования |
| Точка | ID точки на карте склада, к которой привязано устройство. Роботы будут приезжать именно в эту точку для взаимодействия |
| Ориентация | Угол поворота устройства относительно карты склада, в градусах (0, 180 и т.д.). Используется для корректного отображения на карте |
| Активный | Да — устройство включено в работу и готово к выполнению задач. Нет — устройство временно выведено из эксплуатации системой. |
.png)
Шаг 2. Настройка соединения
Система WCS взаимодействует с оборудованием через протокол Modbus.
Укажите параметры подключения контроллера.
| Параметр | Описание |
| Тип подключения | Тип протокола Modbus |
| Host (IP-адрес) | IP-адрес контроллера оборудования |
| Port | Порт подключения (обычно 502) |
| Slave ID | Адрес устройства в сети Modbus (обычно 1) |
| Таймаут (мс) | Максимальное время ожидания ответа от устройства |
| Интервал опроса (мс) | Частота опроса состояния оборудования |
{% hint style=“info” %}
Пример: 1000 мс = 1 запрос состояния в секунду.
{% endhint %}
.png)
Шаг 3. Конфигурация данных
Чтобы WCS могла корректно интерпретировать данные контроллера, необходимо указать формат передачи данных.
| Параметр | Описание |
|---|---|
| Порядок байт (Byte Order) | Определяет порядок байтов внутри регистра |
| Порядок слов (Word Order) | Порядок слов для 32-битных значений |
| Схема параметров (JSON) | Описание регистров контроллера и их назначения |
JSON-схема определяет:
- какие регистры опрашиваются
- какие сигналы или команды они содержат
- как эти данные называются внутри WCS
.png)
Шаг 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
}
]
}Описание ключевых блоков и полей для зарядных станций:
- Интервал опроса (
polling_interval_ms): Для зарядок его можно выставлять чуть больше (например, 2000 мс), так как уровень заряда и статус готовности не меняются так мгновенно, как датчики на паллетайзере. - Поле
current_battery_level: Позволяет диспетчеру в окне «Детали» видеть, насколько заряжен робот прямо сейчас, не переключаясь на вкладку роботов. - Критические ошибки (
severity: critical): Если сработал датчик перегрева (error_overheat), система WCS автоматически исключит эту точку из списка доступных для зарядки, и другие роботы не поедут к ней до устранения проблемы. - Команды (
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
}
]
}Особенности настройки для прочих устройств:
- Высокая частота опроса (
polling_interval_ms): Для таких устройств, как скоростные ворота или датчики безопасности, рекомендуется ставить интервал 500 мс или меньше. Это нужно, чтобы робот не «ждал» перед открытыми воротами лишнюю секунду, пока WCS обновит статус. - Многопозиционные статусы: В поле
gate_statusзначение может быть не только0или1. Например, значение2(«в движении») позволяет системе понимать, что процесс идет, и не выдавать ошибку преждевременно. - Использование
trigger: pulse: Для ворот часто используются импульсные команды. WCS посылает кратковременный сигнал «открыть», и контроллер ворот начинает выполнение цикла. - Раздел «Другое» как полигон: Сюда можно добавить любое Modbus-совместимое устройство. Если в будущем на складе появятся, например, умные весы, достаточно будет просто заменить
objectsна параметры веса и стабильности платформы.