# Полное руководство: Интеграция HMI Weintek и роботов KUKA (KRC4/KRC5)

## 1. Общие сведения и преимущества

Интеграция панелей Weintek в экосистему KUKA — это стандарт индустрии для бюджетных и среднебюджетных решений, где требуется качественная визуализация без затрат на дорогостоящие проприетарные панели управления.

**Основные преимущества:**

- **Прямая связь:** Исключение ПЛК из цепочки снижает задержки и упрощает архитектуру.
- **Гибкость:** Возможность отображения кастомных графиков, ведения логов аварий и управления рецептурами.
- **Масштабируемость:** К одной панели можно подключить несколько роботов.

---

## 2. Физический уровень и сетевая топология

Связь осуществляется через интерфейс **KLI (KUKA Line Interface)**. На контроллерах KRC4 это обычно разъем **X66**.

### Рекомендации по монтажу:

- Используйте экранированные кабели (S/FTP) категории 5e или 6.
- В условиях сильных электромагнитных помех (например, рядом со сварочными инверторами) прокладывайте кабели в металлических лотках.
- Убедитесь, что заземление контроллера робота и стойки HMI выполнено по общей шине.

---

## 3. Глубокая настройка в WorkVisual (KUKA)

Для работы EtherNet/IP на роботе должен быть установлен пакет **KUKA.EtherNetIP**.

### Конфигурация драйвера:

1. В WorkVisual добавьте в «Bus Structure» узел **EtherNet/IP**.
2. Настройте робота как **Adapter** (Slave). Это означает, что он будет предоставлять свои данные для сканера (панели).
3. **Объем данных:** Видеоинструкция рекомендует 64 байта. В битовом эквиваленте это 512 входов и 512 выходов. Этого объема достаточно для передачи координат, скоростей, усилий и всех системных сигналов.
4. **I/O Mapping:** Самый важный этап.
    
    
    - **Дискретные сигналы:** Сопоставьте системные входы (например, `$DRIVES_ON`, `$CONFIRM_MESS`) с битами из области EtherNet/IP.
    - **Аналоговые/Числовые данные:** Используйте группировку битов (Signal) для передачи целых чисел (Integer) или вещественных чисел (Real) через несколько байт.

---

## 4. Настройка интерфейса в EasyBuilder Pro (Weintek)

Использование нативного драйвера **KUKA (EtherNet/IP)** избавляет от необходимости ручного прописывания адресов регистров.

### Типы данных и адресация:

- **Тип I (Input):** Соответствует выходным данным из робота (`$OUT`).
- **Тип O (Output):** Соответствует входным данным в робота (`$IN`).
- **Разрядность:** Драйвер поддерживает работу с битами (Bit), словами (Word) и двойными словами (DWord). При передаче вещественных чисел (например, текущей координаты X) используйте формат **32-bit Float** с правильным порядком байтов (обычно Little Endian).

---

## 5. Программная логика на языке KRL

Чтобы панель «ожила», необходимо прописать обработку сигналов в файлах робота.

### Объявление переменных в `$CONFIG.DAT`:

<div _ngcontent-ng-c3591678305="" class="code-block ng-tns-c3591678305-60 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwids_m56sWTAxUAAAAAHQAAAAAQ0gE" decode-data-ved="1" id="bkmrk-%D0%A4%D1%80%D0%B0%D0%B3%D0%BC%D0%B5%D0%BD%D1%82-%D0%BA%D0%BE%D0%B4%D0%B0" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_98bc0c8a408e52e6","c_df607ae3cb551032",null,"rc_240bf396a7e11288",null,null,"ru",null,1,null,null,1,0]]"><div _ngcontent-ng-c3591678305="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3591678305-60 ng-star-inserted"><span class="ng-tns-c3591678305-60">Фрагмент кода</span><div _ngcontent-ng-c3591678305="" class="buttons ng-tns-c3591678305-60 ng-star-inserted"><button aria-label="Скопировать код" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3591678305-60 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3591678305="" class="formatted-code-block-internal-container ng-tns-c3591678305-60"><div _ngcontent-ng-c3591678305="" class="animated-opacity ng-tns-c3591678305-60">  
</div></div></div>```
; Сигналы управления с панели
SIGNAL hmi_Start $IN[101]
SIGNAL hmi_Stop $IN[102]
SIGNAL hmi_Reset $IN[103]

; Сигналы состояния для панели
SIGNAL rob_InHome $OUT[101]
SIGNAL rob_Error $OUT[102]
SIGNAL rob_ActualSpeed $OUT[105] TO $OUT[120] ; Групповой сигнал (WORD)

```

<div _ngcontent-ng-c3591678305="" class="code-block ng-tns-c3591678305-60 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwids_m56sWTAxUAAAAAHQAAAAAQ0gE" decode-data-ved="1" id="bkmrk--5" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_98bc0c8a408e52e6","c_df607ae3cb551032",null,"rc_240bf396a7e11288",null,null,"ru",null,1,null,null,1,0]]"><div _ngcontent-ng-c3591678305="" class="formatted-code-block-internal-container ng-tns-c3591678305-60"><div _ngcontent-ng-c3591678305="" class="animated-opacity ng-tns-c3591678305-60"></div></div></div>### Пример обработки в основном цикле (`.SRC`):

<div _ngcontent-ng-c3591678305="" class="code-block ng-tns-c3591678305-61 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwids_m56sWTAxUAAAAAHQAAAAAQ0wE" decode-data-ved="1" id="bkmrk-%D0%A4%D1%80%D0%B0%D0%B3%D0%BC%D0%B5%D0%BD%D1%82-%D0%BA%D0%BE%D0%B4%D0%B0-1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_98bc0c8a408e52e6","c_df607ae3cb551032",null,"rc_240bf396a7e11288",null,null,"ru",null,1,null,null,1,0]]"><div _ngcontent-ng-c3591678305="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3591678305-61 ng-star-inserted"><span class="ng-tns-c3591678305-61">Фрагмент кода</span><div _ngcontent-ng-c3591678305="" class="buttons ng-tns-c3591678305-61 ng-star-inserted"><button aria-label="Скопировать код" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3591678305-61 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3591678305="" class="formatted-code-block-internal-container ng-tns-c3591678305-61"><div _ngcontent-ng-c3591678305="" class="animated-opacity ng-tns-c3591678305-61">  
</div></div></div>```
LOOP
  ; Если нажата кнопка Старт на панели и робот в авто-режиме
  IF hmi_Start AND $AUT_EXT THEN
    ; Логика запуска программы
  ENDIF

  ; Передача текущей скорости в REAL формате (требует конвертации в INT)
  rob_ActualSpeed = $VEL_ACT * 100 
ENDLOOP

```

<div _ngcontent-ng-c3591678305="" class="code-block ng-tns-c3591678305-61 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwids_m56sWTAxUAAAAAHQAAAAAQ0wE" decode-data-ved="1" id="bkmrk--8" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_98bc0c8a408e52e6","c_df607ae3cb551032",null,"rc_240bf396a7e11288",null,null,"ru",null,1,null,null,1,0]]"><div _ngcontent-ng-c3591678305="" class="formatted-code-block-internal-container ng-tns-c3591678305-61"><div _ngcontent-ng-c3591678305="" class="animated-opacity ng-tns-c3591678305-61"></div></div></div>---

## 6. Диагностика и устранение неполадок

<table data-path-to-node="31" id="bkmrk-%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D0%9F%D1%80%D0%B8%D1%87%D0%B8%D0%BD%D0%B0-%D0%A0%D0%B5%D1%88"><thead><tr><td>**Проблема**</td><td>**Причина**</td><td>**Решение**</td></tr></thead><tbody><tr><td><span data-path-to-node="31,1,0,0">**PLC No Response**</span></td><td><span data-path-to-node="31,1,1,0">Неверный IP или маска</span></td><td><span data-path-to-node="31,1,2,0">Проверьте `ping` с ноутбука до обоих устройств.</span></td></tr><tr><td><span data-path-to-node="31,2,0,0">**Данные «скачут»**</span></td><td><span data-path-to-node="31,2,1,0">Конфликт циклов обновления</span></td><td><span data-path-to-node="31,2,2,0">Установите время опроса в Weintek не менее 100 мс.</span></td></tr><tr><td><span data-path-to-node="31,3,0,0">**Ошибка EtherNet/IP на роботе**</span></td><td><span data-path-to-node="31,3,1,0">Ошибка конфигурации в WorkVisual</span></td><td><span data-path-to-node="31,3,2,0">Проверьте, что размер данных (64 байта) совпадает в обоих устройствах.</span></td></tr></tbody></table>

---

## 7. Безопасность (Safety)

**ВНИМАНИЕ:** Панель Weintek не является устройством безопасности.

1. **E-STOP:** Кнопка аварийной остановки на панели должна быть подключена физическими проводами к цепи безопасности робота (X11 или SIB), а не передаваться по Ethernet.
2. **Мертвая зона:** При наладке всегда используйте SmartPad. Панель HMI предназначена только для работы в автоматическом режиме.

---

### Заключение

Связка **KUKA + Weintek** — это мощный инструмент в руках инженера. При правильной настройке маппинга и KRL-логики вы получаете полноценную станцию управления, которая не уступает дорогим аналогам, обеспечивая при этом высокую скорость отклика и наглядность процесса.

Видео примера настройки: https://www.youtube.com/watch?v=HvXQWTot1w8