Форум

Форум (http://robotforum.ru/forum/index.php)
-   Роботы Yaskawa Motoman (http://robotforum.ru/forum/forumdisplay.php?f=60)
-   -   роберт Yrc1000 (http://robotforum.ru/forum/showthread.php?t=5196)

MoHoMaX 03.12.2021 11:35

роберт Yrc1000
 
Вложений: 1
Доброго времени суток.

Организация приобрела робота 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

Цитата:

Сообщение от MoHoMaX (Сообщение 14296)
Не понимаю точно как работает 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 входами/выходами. Как именно, зависит от того, какие платы сопряжения стоят в контроллере, какие протоколы соединения.


Часовой пояс GMT +2, время: 11:10.

vBulletin v3.6.2, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co