Добрый день,
Подскажите, где ошибка и возможно ли вообще реализовать такое.
Есть робот паллетоукладчик KRC4 - 8.6.8, на захвате есть сенсоры столкновения, пытаюсь написать программу аварийного возврата в домашнюю позицию, вызывает эту программу обработчик прерывания в случае сработки датчиков столкновения.
1. Выполняю функцию (BREAK) которая как я понял должна прервать предыдущее движение.
2. Задаю новые координаты исходя из текущего положения робота, а именно поднимаю захват оси Z на 2650 для предотвращения столкновения с собранными палеттами
3. Двигаюсь в точку домашней позиции
4. Ожидаю подтверждения от оператора что всё ок.
Код:
|
&ACCESS R1
&COMMENT Palletizing emg
DEF PAL_backhomeEM ( )
INT SpeedSave
DECL KRLMSG_T MSG
DECL KRLMSGPAR_T MsgPar[4]
DECL KRLMSGOPT_T Opt
DECL INT Ticket
MSG.Nr = 2902
MSG.MODUL[] = "USER"
MSG.MSG_TXT[] = "BackHome Emergency"
Opt = {VL_STOP FALSE, CLEAR_P_RESET FALSE, LOG_TO_DB TRUE}
Ticket = SET_KRLMSG(#State,MSG,MsgPar[],Opt)
BRAKE
Speedsave = $OV_PRO
$OV_PRO = 10
PAL_UpPos = PAL_UpPosInit
PAL_UpPos = $POS_ACT
PAL_UpPos.Z = 2600
SLIN PAL_UpPos
PTP XHOME
$OV_PRO = Speedsave
WAIT FOR $IN [6] == TRUE
END |
По итогу получаю ошибку KSS01425, как правильно выполнить данный алгоритм.