HCFA Integration KUKA
ПОЛНАЯ ИНСТРУКЦИЯ ПО ИНТЕГРАЦИИ HCFA SV-X5 + KUKA KRC4 (EtherCAT)
На основе 3-х технических логов проекта
СОДЕРЖАНИЕ
- Электрическое подключение (Hardware)
- Настройка драйвера HCFA (Параметры)
- Распайка кабеля энкодера
- Настройка EtherCAT в WorkVisual
- Модификация XML (PDO Mapping)
- Программирование KRL
- Решение типовых проблем
1. ЭЛЕКТРИЧЕСКОЕ ПОДКЛЮЧЕНИЕ (Hardware)
1.1. Организация питания (КРИТИЧНО!)
Раздельное питание силовой и управляющей части:
- L1C / L2C (Control Power):
- Подключить к 220В (Фаза + Ноль) напрямую от автомата питания (ДО контакторов безопасности)
- Обеспечивает работу логики и связи EtherCAT при E-Stop
- L1 / L2 (Main Power):
- Подключить к 220В через контактор безопасности робота
- ⚠️ ВАЖНО: Драйвер рассчитан только на 220В, НЕ подключать к 3-фазной сети 400В!
1.2. Подключение тормоза
⚠️ ЗАПРЕЩЕНО подключать тормоз напрямую в выход DO драйвера (сгорит транзистор, макс. 50мА)!
Правильная схема:
Выход DO1 (CN6: Pin 1 DO+ / Pin 6 DO-) → Катушка реле 24В → Контакты реле → Тормоз
Настройка драйвера:
- P04.21 = 6 (Функция Brake Release)
1.3. STO (Safe Torque Off)
На разъеме CN2 установить перемычки для деактивации аппаратной блокировки (временное решение для пусконаладки).
2. НАСТРОЙКА ДРАЙВЕРА HCFA (Параметры)
2.1. Программное обеспечение
Использовать:
- HCS-Studio(Cn) V2.13 или
- HCServoWorks 1.2.9
⚠️ Новые версии (Sysctrl Studio) этот привод НЕ ВИДЯТ!
2.2. ОБЯЗАТЕЛЬНЫЕ параметры для EtherCAT
Базовая конфигурация:
P00.01 = 7 // Режим EtherCAT
P06.28 = 1 // Отключить концевики P-OT/N-OT (КРИТИЧНО!)
P09.13 = H0015 // Единицы: RPM (скорость), ms (ускорение)
// или H0005 в зависимости от версии прошивки
P00.19 = 0 // Отключить контроль рассогласования (при пусконаладке)
⚠️ КРИТИЧНО - Настройка цифровых входов:
Для работы через EtherCAT ОБЯЗАТЕЛЬНО убрать назначение функций концевиков:
P04.01 = 0 или другая функция (не 14, не 15)
P04.02 = 0 или другая функция (не 14, не 15)
P04.03 = 0 или другая функция (не 14, не 15)
P04.04 = 0 или другая функция (не 14, не 15)
P04.05 = 0 или другая функция (не 14, не 15)
P04.06 = 0 или другая функция (не 14, не 15)
P04.07 = 0 или другая функция (не 14, не 15)
P04.08 = 0 или другая функция (не 14, не 15)
Где: 14 = P_OT (положительный концевик)
15 = N_OT (отрицательный концевик)
Причина: Если оставить функции 14 или 15, драйвер будет ждать сигналы концевиков и останется в состоянии Switch On Disabled (StatusWord = 592), игнорируя команды включения.
2.3. "Взлом" защиты для стороннего мотора
Если используется неродной мотор (например, GSK 150SJTRE):
Строго по порядку:
- P07.21 = 1 (Снятие защиты от записи)
- Выключить/Включить питание
- P18.00 = 0000FFFF (HEX) или 65535 (DEC) — код "Универсальный двигатель"
- Выключить/Включить питание
2.4. Параметры мотора (P18 Group)
Заполнить с шильдика мотора:
P18.05 = 13.00 // Номинальный ток (A)
P18.06 = 10.00 // Номинальный момент (Nm)
P18.08 = 2000 // Номинальная скорость (rpm)
P18.11 = 4 // Количество пар полюсов (КРИТИЧНО!)
// Для моторов 150-й серии = 4 (8 полюсов)
// При неправильном значении: рывки, Err.047
P18.19 = 0, 1 или 2 // Протокол энкодера (подбирать)
После изменения P18.11 ОБЯЗАТЕЛЬНО:
P20.03 = 5 // Поиск начального электрического угла
2.5. Настройка инерции и жесткости
Автоматический замер инерции:
P20.03 = 1 или 2 // Автоопределение инерции нагрузки
После замера система установит значение в P00.04 (обычно 5-15).
Жесткость регулятора:
P00.02 = 2 // Режим автонастройки (рекомендуется)
P00.03 = 10-12 // Жесткость (для высокой скорости)
// Низкое значение (5) = мягко, отставание
// Высокое значение (10-12) = жестко, точно
Скоростное упреждение (если есть отставание):
P01.12 = 30-50 // Feedforward (%)
2.6. Обнуление абсолютного энкодера
Если нужно установить текущую позицию как "0":
- Выключить Servo OFF (мотор свободен)
- Убедиться: P06.47 = 1 (Абсолютный режим)
- P20.06 = 7 (Команда сброса)
- Перезагрузить питание
Если не работает (Hард-ресет):
- Выключить привод
- Вынуть батарейку на 1 минуту
- Включить → Получить ошибку Err.012
- В состоянии ошибки: P20.06 = 7
- Перезагрузить питание
3. РАСПАЙКА КАБЕЛЯ ЭНКОДЕРА
3.1. Проблема разъемов
- Мотор: D-Sub (DB15)
- Драйвер CN7: IEEE 1394 (FireWire 6-pin)
Решение: Кастомный кабель с перепайкой.
3.2. Правильная распиновка
| Сигнал | Пин на CN7 (IEEE1394) | Пин на моторе (D-Sub) | Цвет (проверить!) |
|---|---|---|---|
| +5V | 1 | 2 | Красный |
| GND | 2 | 3 | Черный |
| Data+ | 5 | 4 | Белый |
| Data- | 6 | 5 | Желтый |
| Экран | Корпус (Shell) | Корпус/9 | Оплетка |
3.3. КРИТИЧЕСКИЕ требования к монтажу
1. НИКАКИХ СКРУТОК!
- Линии данных работают на частоте 2.5 МГц
- Скрутка = отражение сигнала + помехи (Err.013)
- Только пайка, минимальная разделка
2. Экранирование:
- Экран припаять к металлическому корпусу CN7 вкруговую
- Или зажать хомутом
- "Свиной хвостик" = антенна для помех
3. Диагностика энкодера:
- Замерить ток по линии +5В: норма 30-80 мА
- 0 мА = обрыв
-
200 мА = КЗ
3.4. Борьба с помехами (Err.013)
Если при включении или вращении вылетает Err.013:
Аппаратные меры:
- Надеть ферритовое кольцо на силовой кабель UVW возле привода
- Заземлить корпус мотора отдельным проводом на PE привода
Программный фильтр (крайняя мера):
P06.40 = 10-39 // Фильтр помех энкодера
// Заводское: 0
// Увеличивать при Err.013
// ⚠️ Высокое значение = задержка = хуже динамика
4. НАСТРОЙКА ETHERCAT В WORKVISUAL
4.1. Топология сети
Драйвер подключить в порт X44 контроллера KRC4:
KRC4 (X44) → Beckhoff EK1100 (Coupler) → HCFA SV-X5E
Порядок устройств в дереве WorkVisual = физическое подключение.
4.2. ESI-файл (XML)
Использовать оригинальный XML от производителя:
HCFA_X5B_Servo_Driver2.1.27.1.xml
4.3. Первичная диагностика
Через WorkVisual → Диагностика входов:
- Код 0x7305 = Ошибка связи с энкодером (проверить кабель)
- После правильной пайки ошибка должна исчезнуть
5. МОДИФИКАЦИЯ XML (PDO MAPPING)
5.1. Проблема
В стандартном XML отсутствуют объекты для передачи скорости и ускорения:
- 0x6081 (Profile Velocity)
- 0x6083 (Profile Acceleration)
- 0x6084 (Profile Deceleration)
Без них драйвер получает команду на движение со скоростью 0 → мотор стоит.
5.2. Решение — Модификация 1st RxPdo
Анализ:
- 1st RxPdo (#x1600) имеет
<Access>rw</Access> - Нет флага
Fixed="true" - → Драйвер поддерживает динамическую реконфигурацию
Правки в XML:
Найти секцию <Object Index="1600"> и добавить:
<Entry>
<Index>#x6081</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Profile Velocity</Name>
<DataType>UDINT</DataType>
</Entry>
<Entry>
<Index>#x6083</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Profile Acceleration</Name>
<DataType>UDINT</DataType>
</Entry>
<Entry>
<Index>#x6084</Index>
<SubIndex>0</SubIndex>
<BitLen>32</BitLen>
<Name>Profile Deceleration</Name>
<DataType>UDINT</DataType>
</Entry>
Найти секцию <RxPdo Index="#x1600"> и добавить соответствующие Entry.
После импорта нового XML и компиляции → переменные появятся в WorkVisual.
5.3. ⚠️ Что НЕ работает
Попытка 1 (Неудачная) — 5th PDO:
- 5-й набор помечен
Fixed="true"(жестко зашит) - Изменение размера → потеря связи
Попытка 2 (Неудачная) — Target Velocity:
- Существует в 5-м наборе
- Работает только в режиме скорости (Mode 3)
- В режиме позиционирования (Mode 1) игнорируется
6. ПРОГРАММИРОВАНИЕ KRL
6.1. Конфигурация ($CONFIG.DAT)
Создать SIGNAL для объединения битов:
SIGNAL do_HCFA_ControlWord $OUT[1] TO $OUT[16] ; UINT
SIGNAL do_HCFA_TargetPos $OUT[17] TO $OUT[48] ; DINT
SIGNAL do_HCFA_ProfileVel $OUT[49] TO $OUT[80] ; UDINT
SIGNAL do_HCFA_ProfileAcc $OUT[81] TO $OUT[112] ; UDINT
SIGNAL di_HCFA_StatusWord $IN[1] TO $IN[16] ; UINT
SIGNAL di_HCFA_ActPos $IN[17] TO $IN[48] ; DINT
SIGNAL di_HCFA_OpMode $IN[49] TO $IN[56] ; INT
6.2. Алгоритм включения (Servo ON)
Автомат состояний CiA 402:
DEF HCFA_ServoON()
; Проверка текущего статуса
INT status
status = di_HCFA_StatusWord
; Если есть ошибка (Bit 3 = 1)
IF (status B_AND 'H0008') == 'H0008' THEN
; Fault Reset
do_HCFA_ControlWord = 128 ; Бит 7
WAIT SEC 0.2
do_HCFA_ControlWord = 0
WAIT SEC 0.2
ENDIF
; State Machine: Shutdown → Switch On → Enable Operation
; 1. Shutdown (если не в Ready to Switch On)
IF (status B_AND 'H006F') <> 'H0021' THEN
do_HCFA_ControlWord = 6
WAIT FOR (di_HCFA_StatusWord B_AND 'H006F') == 'H0021' ; Ready to Switch On
ENDIF
; 2. Switch On
do_HCFA_ControlWord = 7
WAIT FOR (di_HCFA_StatusWord B_AND 'H006F') == 'H0023' ; Switched On
; 3. Enable Operation
do_HCFA_ControlWord = 15
WAIT FOR (di_HCFA_StatusWord B_AND 'H006F') == 'H0027' ; Operation Enabled
END
DEF HCFA_ServoOFF()
do_HCFA_ControlWord = 6 ; Shutdown (отключает момент)
END
6.3. Функция движения (Move)
Режим: Profile Position (Mode 1) — Абсолютное позиционирование
DEF HCFA_MoveToAngle(angle :REAL)
; Константы
INT encoder_resolution = 131072 ; 17-bit энкодер
REAL gear_ratio = 100.0 ; Редуктор 1:100
; Расчет импульсов
INT target_pulses
target_pulses = (angle / 360.0) * encoder_resolution * gear_ratio
; === SMART CHECK & AUTO RECOVERY ===
INT status
status = di_HCFA_StatusWord
; 1. Проверка на ошибку
IF (status B_AND 'H0008') == 'H0008' THEN
; Fault Reset + Включение
do_HCFA_ControlWord = 128
WAIT SEC 0.2
do_HCFA_ControlWord = 0
WAIT SEC 0.2
HCFA_ServoON()
ENDIF
; 2. Проверка включения
IF (status B_AND 'H006F') <> 'H0027' THEN
HCFA_ServoON()
ENDIF
; 3. Проверка режима (OpMode должен быть 1)
IF di_HCFA_OpMode <> 1 THEN
do_HCFA_OpMode = 0 ; Сброс
WAIT SEC 0.1
do_HCFA_OpMode = 1 ; Установка Profile Position
WAIT SEC 0.1
ENDIF
; 4. Сброс зависшего бита подтверждения (Bit 12)
IF (status B_AND 'H1000') == 'H1000' THEN
do_HCFA_ControlWord = 15 ; Сброс в базовое состояние
WAIT SEC 0.1
ENDIF
; === ЗАПИСЬ ПАРАМЕТРОВ ДВИЖЕНИЯ ===
do_HCFA_ProfileVel = 500 ; Скорость: 500 rpm
do_HCFA_ProfileAcc = 100 ; Ускорение: 100 ms
do_HCFA_TargetPos = target_pulses
; === HANDSHAKE (Двухступенчатый старт) ===
; Шаг 1: Подготовка (Absolute, New Set-point)
do_HCFA_ControlWord = 47 ; Биты: 0,1,2,3,4,5 (без Change Immediately)
WAIT SEC 0.05
; Шаг 2: Старт (Rising Edge бита 4)
do_HCFA_ControlWord = 63 ; Биты: 0,1,2,3,4,5,6 (с Change Immediately)
; Ждем подтверждения (Bit 12 = Set-point Acknowledge)
WAIT FOR (di_HCFA_StatusWord B_AND 'H1000') == 'H1000' TIMEOUT 2
; Сброс бита New Set-point
do_HCFA_ControlWord = 15
; Ждем начала движения (Bit 10 = Target Reached сбросится)
WAIT FOR (di_HCFA_StatusWord B_AND 'H0400') == 'H0000' TIMEOUT 2
; Ждем завершения (Bit 10 = Target Reached установится)
WAIT FOR (di_HCFA_StatusWord B_AND 'H0400') == 'H0400'
; Финиш: Отключение момента
do_HCFA_ControlWord = 6 ; Shutdown
END
6.4. Расшифровка ControlWord
| Значение | Биты | Команда |
|---|---|---|
| 6 | 0110 | Shutdown (переход в Ready to Switch On) |
| 7 | 0111 | Switch On |
| 15 | 1111 | Enable Operation (базовое рабочее состояние) |
| 47 | 0010 1111 | Absolute + New Set-point (подготовка) |
| 63 | 0011 1111 | + Change Immediately (старт по Rising Edge) |
| 128 | 1000 0000 | Fault Reset (сброс ошибки) |
6.5. Расшифровка StatusWord (ключевые биты)
| Бит | Маска | Значение |
|---|---|---|
| 3 | 0x0008 | Fault (есть ошибка) |
| 5 | 0x0020 | Quick Stop (0 = активна блокировка) |
| 10 | 0x0400 | Target Reached |
| 12 | 0x1000 | Set-point Acknowledge |
Состояния (биты 0-6):
- 0x0021 (33): Ready to Switch On
- 0x0023 (35): Switched On
- 0x0027 (39): Operation Enabled
- 0x0250 (592): Switch On Disabled (блокировка)
- 0x0637 (1591): Operation Enabled + Ready + Target Reached
7. РЕШЕНИЕ ТИПОВЫХ ПРОБЛЕМ
7.1. Драйвер не включается (StatusWord = 592)
Симптомы: Команды включения игнорируются.
Причины:
- Не сняты функции концевиков (P04.01...P04.08 содержат 14 или 15)
- Не установлен P06.28 = 1
Решение: См. раздел 2.2 (обязательные параметры).
7.2. Err.007 (Нет связи с энкодером)
Причины:
- Неправильная распайка кабеля
- Обрыв/КЗ в линиях Data+/Data-
- Не подключен +5V или GND
- Неправильный протокол (P18.19)
Диагностика:
- Замерить ток по +5V: должен быть 30-80 мА
- Проверить распайку по таблице из раздела 3.2
7.3. Err.013 (Помехи энкодера)
Причины:
- Скрутки в линиях Data+/Data-
- Плохое экранирование
- Помехи от силового кабеля
Решение:
- Перепаять кабель (без скруток)
- Экран припаять к корпусу CN7 вкруговую
- Ферритовое кольцо на силовой кабель UVW
- Заземлить корпус мотора
- Крайняя мера: P06.40 = 10-39
7.4. Err.043 (Position Deviation Too Large)
Причины:
- Низкая жесткость регулятора (P00.03)
- Неправильная инерция (P00.04)
- Слишком жесткий допуск (P00.19)
Решение:
- Выполнить автозамер инерции: P20.03 = 1
- Увеличить жесткость: P00.03 = 10-12
- На этапе пусконаладки: P00.19 = 0
- При отставании: P01.12 = 30-50 (Feedforward)
7.5. Err.047 (Перегрузка)
Причины:
- Неправильное количество пар полюсов (P18.11)
- Неправильный ток/момент мотора
- Механическая перегрузка
Решение:
- Проверить P18.11 = 4 (для моторов 150-й серии)
- После изменения: P20.03 = 5
- Проверить параметры мотора (P18.05, P18.06, P18.08)
7.6. Мотор стоит на месте (нет движения)
Причины:
- Отсутствуют объекты 0x6081/0x6083 в PDO
- Неправильные единицы измерения (P09.13)
- Скорость = 0
Решение:
- Модифицировать XML (раздел 5)
- Установить P09.13 = H0015 (RPM/ms)
- В коде задать ProfileVel > 0 (например, 500)
7.7. Зависание на WAIT FOR Bit 12
Причины:
- Бит подтверждения завис с прошлого раза
- Драйвер не в режиме позиционирования (Mode <> 1)
Решение:
- Перед движением: сброс
OpMode = 0→OpMode = 1 - Если
Bit 12 == 1перед стартом → сбросControlWord = 15
7.8. Очень медленное движение (незаметное глазу)
Причина: P09.13 = H1115 (единицы измерения = импульсы/сек)
Решение: P09.13 = H0015 (RPM/ms)
7.9. Поворот на неправильный угол
Причины:
- Не учтен редуктор
- Неправильное разрешение энкодера
Решение:
- Определить передаточное число экспериментально
- В формуле расчета:
pulses = (angle / 360) * encoder_resolution * gear_ratio
ФИНАЛЬНЫЙ ЧЕКЛИСТ ПЕРЕД ЗАПУСКОМ
- Раздельное питание L1C/L2C (220В напрямую) и L1/L2 (220В через контактор)
- Кабель энкодера: пайка по таблице, экран к корпусу, без скруток
- Диагностика энкодера: ток 30-80 мА
- P00.01 = 7 (EtherCAT)
- P06.28 = 1 (Игнорировать концевики)
- P04.01...P04.08: Все значения ≠ 14 и ≠ 15
- P09.13 = H0015 (RPM/ms)
- P18.11 = 4 (Пары полюсов для 150-й серии)
- P20.03 = 5 (Поиск угла) после изменения полюсов
- P20.03 = 1 (Автозамер инерции)
- P00.03 = 10-12 (Жесткость)
- XML модифицирован (объекты 0x6081, 0x6083 добавлены в 1st RxPdo)
- Топология EtherCAT в WorkVisual = физическое подключение
- Код KRL: включение через Shutdown → Switch On → Enable Operation
- Код KRL: движение с ProfileVel > 0 и двухступенчатым стартом (47 → 63)
- Тестовое движение на малой скорости (50-100 rpm)
СИСТЕМА ГОТОВА К РАБОТЕ!
Эта инструкция основана на реальном опыте пусконаладки и содержит все критические нюансы для успешной интеграции HCFA + KUKA через EtherCAT.
No comments to display
No comments to display