PDA

Просмотр полной версии : роберт Yrc1000


MoHoMaX
03.12.2021, 11:35
Доброго времени суток.

Организация приобрела робота YASKAWA YRC1000 model GP25 с написанными уже прогами и запрограммированным контроллером от Митсы на выполнение сверления отверстий в кольцах.
Роботом с горем пополам управляться научился, после KUKA конечно то ещё "удовольствие", всё через 1 место сделано..ну да ладно..придется привыкать и к этому Роберту ((( деваться некуда.

Собственно стал вникать в написанный код господами из Тайваня, многое не понятно. Самое неясное то, что как я понял Роберт общается с контроллером, который управляет другим оборудованием, через свой порт и все входа-выхода у него виртуальные что ли и вот я не понимаю, в коде Роберта пишется что Выход 17 допустим OFF, выход 18 ON.. это типа грипер открыть ну или закрыть. Но на контроллере входа начинаются с 0 до 7, затем 10 ... 17 и так далее. по 8 входов и также снизу выхода. Ну и такой вопрос, неужели нельзя кнопкой грипер открывать/закрывать как например на KUKA? А то общаться через код ну вовсе не удобно.

Вот например весь код, который нам достался от производителя. После работы с KUKA для меня это просто бред сумасшедшего ))) Комменты все писал я, для последователей..т.к. разбираюсь пока что я один..а потом надо это как минимум 6 человекам расскать и научить.
IF IN#(41)=ON => R-GET-CV
DOUT OT#(56) ON // ВКЛючаем ВЫХОД56
WAIT IN#(17)=ON // ждем когда ВКЛючится ВХОД17
DOUT OT#(51) OFF // ВЫКЛючаем ВЫХОД51
MOVJ P021 VJ=100.00 PL=5 NWAIT // двигаемся в режиме PTP на точку Р021
*RCYCLE // объявляем маркер RCYCLE
DOUT OT#(18) OFF // ВЫКЛючаем ВЫХОД18
PULSE OT#(17) T=0.50 // даем импульс на ВЫХОД17
WAIT IN#(17)=ON // ждем когда ВКЛючится ВХОД17
GETREG I000 MREG#(0)
SET D000 I000 // 0 элемент типа DOUBLE = 0 элементу типа INTEGER (0=0)
CWAIT
MOVL P[D000] V=1500.0 PL=0 // двигаемся в режиме LIN на точку Р0
DOUT OT#(18) ON // ВКЛючаем ВЫХОД18
WAIT IN#(17)=OFF T=0.80 // ждем когда ВЫКЛючится ВХОД17
MOVL P021 V=1500.0 NWAIT // двигаемся в режиме LIN на точку Р021
PULSE OT#(51) T=1.00 // даем импульс на ВЫХОД51
CWAIT
MOVJ P023 VJ=100.00 // двигаемся в режиме PTP на точку Р023
IFTHENEXP IN#(19)=OFF // если ВХОД19 ВЫКЛючен, то
JUMP *RCYCLE // переходим на маркер RCYCLE
ENDIF
MOVJ P080 VJ=100.00 NWAIT // двигаемся в режиме PTP на точку Р080
PULSE OT#(41) T=1.00 // даем импульс на ВЫХОД41
CWAIT

IF IN#(42)=ON => R-PUT-WELDING
MOVJ P080 VJ=100.00 // двигаемся в режиме PTP на точку Р080
MOVL P081 V=1500.0 PL=0 // двигаемся в режиме LIN на точку Р081
DOUT OT#(18) OFF // ВЫКЛючаем ВЫХОД18
DOUT OT#(17) ON // ВКЛючаем ВЫХОД17
WAIT IN#(17)=ON // ждем когда ВКЛючится ВХОД17
MOVL P080 V=1500.0 NWAIT // двигаемся в режиме LIN на точку Р080
PULSE OT#(42) T=1.00 // даем импульс на ВЫХОД42
CWAIT

IF IN#(43)=ON => R-GET-WELDING
WAIT IN#(17)=ON // ждем когда ВКЛючится ВХОД17
MOVJ P080 VJ=100.00 // двигаемся в режиме PTP на точку Р080
MOVL P081 V=1500.0 PL=0 // двигаемся в режиме LIN на точку Р081
DOUT OT#(17) OFF // ВЫКЛючаем ВЫХОД17
DOUT OT#(18) ON // ВКЛючаем ВЫХОД18
WAIT IN#(17)=OFF // ждем когда ВЫКЛючится ВХОД17
WAIT T=0.30
MOVL P080 V=1500.0 NWAIT // двигаемся в режиме LIN на точку Р080
PULSE OT#(43) T=1.00 // даем импульс на ВЫХОД43
CWAIT
IFTHENEXP IN#(73)=ON // если ВХОД73 ВКЛючен, то
MOVJ P060 VJ=100.00 // двигаемся в режиме PTP на точку Р060
ENDIF

IF IN#(44)=ON => R-PUT-TAP
MOVJ P070 VJ=100.00 // двигаемся в режиме PTP на точку Р070
MOVL P071 V=1000.0 PL=0 // двигаемся в режиме LIN на точку Р071
DOUT OT#(18) OFF // ВЫКЛючаем ВЫХОД18
DOUT OT#(17) ON // ВКЛючаем ВЫХОД17
WAIT IN#(17)=ON // ждем когда ВКЛючится ВХОД17
IMOV P072 V=1500.0 NWAIT // инкрементное движение в режиме LIN на точку Р072
PULSE OT#(44) T=1.00 // даем импульс на ВЫХОД44
CWAIT

IF IN#(46)=ON => L-PUT-CV
MOVJ P051 VJ=100.00 PL=5 NWAIT // двигаемся в режиме PTP на точку Р051
GETREG I001 MREG#(1)
SET D001 I001 // 1 элемент типа DOUBLE = 1 элементу типа INTEGER (31=31)
CWAIT
WAIT IN#(46)=ON // ждем когда ВКЛючится ВХОД46
MOVL P[D001] V=1500.0 PL=0 // двигаемся в режиме LIN на точку Р31
DOUT OT#(20) OFF // ВЫКЛючаем ВЫХОД20
DOUT OT#(19) ON // ВКЛючаем ВЫХОД19
WAIT IN#(21)=ON // ждем когда ВКЛючится ВХОД21
MOVL P051 V=1500.0 NWAIT // двигаемся в режиме LIN на точку Р051
PULSE OT#(52) T=1.00 // даем импульс на ВЫХОД52
CWAIT
MOVJ P021 VJ=100.00 PL=5 NWAIT // двигаемся в режиме PTP на точку Р021
PULSE OT#(46) T=1.00 // даем импульс на ВЫХОД46
CWAIT
IFTHENEXP IN#(74)=ON // если ВХОД74 ВКЛючен, то
MOVJ P060 VJ=100.00 // двигаемся в режиме PTP на точку Р060
ENDIF
DOUT OT#(56) OFF // ВЫКЛючаем ВЫХОД56

IF IN#(50)=ON => L-GET-TAP
WAIT IN#(21)=ON // ждем когда ВКЛючится ВХОД21
MOVJ P060 VJ=100.00 // двигаемся в режиме PTP на точку Р060
MOVL P061 V=1500.0 PL=0 // двигаемся в режиме LIN на точку Р061
DOUT OT#(19) OFF // ВЫКЛючаем ВЫХОД19
DOUT OT#(20) ON // ВКЛючаем ВЫХОД20
WAIT IN#(22)=ON // ждем когда ВКЛючится ВХОД2
IMOV P062 V=1500.0 NWAIT
PULSE OT#(50) T=1.00
CWAIT
MOVJ P070 VJ=50.00

IF IN#(51)=ON => R-NG-PUT
WAIT IN#(17)=ON
MOVJ P080 VJ=100.00
MOVL P081 V=1500.0 PL=0
DOUT OT#(17) OFF
DOUT OT#(18) ON
WAIT IN#(17)=OFF
WAIT T=0.30
IMOV P082 V=1500.0
MOVL P088 V=1500.0
MOVL P083 V=1500.0
MOVL P084 V=1500.0 PL=0
DOUT OT#(18) OFF
DOUT OT#(17) ON
WAIT IN#(17)=ON
PULSE OT#(53) T=1.00
MOVL P086 V=1500.0

IF IN#(52)=ON => EXCHANGE-POS
CALL JOB:HOME
MOVJ P098 VJ=10.00 NWAIT
PULSE OT#(54) T=0.50
CWAIT


Не понимаю точно как работает IMOV. В коде встречается IMOV P082 V=1500.0, двигаю робота и это точка.. но если зайти в переменные и там выбрать P82.. там по всем осям стоят 0, а ось Z = 200. WTF?

Чирканите что-нибудь если кто хоть как-то имел дело с сие чудом японского производства. Когда Роберт приехал, за 2 дня всё собрали, включили.. но как дальше не понятно.. боимся Робертом вокруг всё разнести ))) когда режим АВТО включим..потому что как я понял вручную фиг что выйдет..т.к. ничего не активируется из входов.

Спасибо.. надеюсь хоть что-то напишите..чтобы можно было дальше вопросы наводящие позадавать. Всех благ.

Dmitry_CH
03.12.2021, 17:37
Не понимаю точно как работает IMOV. В коде встречается IMOV P082 V=1500.0, двигаю робота и это точка.. но если зайти в переменные и там выбрать P82.. там по всем осям стоят 0, а ось Z = 200. WTF?


Я с мотоманами не работал, но мануал подсказывает что IMOV это смещение. Он берёт свою нынешнюю позицию, прибавляет к ней значение из P082 и перемещается к тому что получилось.

Из мануала: "Moves by linear interpolation from the current position for the specified incremental value."

MoHoMaX
06.12.2021, 18:18
спасибо, собственно так и подумал, но были сомнения.

Moto
12.01.2022, 13:25
Варианты сделать открытие и закрытие гриппера одной функцией есть. Используйте макросы например. Что касается Imov, то Дмитрий правильно подсказал. Выхода и входа, которые вы используете в программе включаются и регистрируются в меню general purpose output/input. Через лестницу они связаны с external входами/выходами, может быть network входами/выходами. Как именно, зависит от того, какие платы сопряжения стоят в контроллере, какие протоколы соединения.