PDA

Просмотр полной версии : коррекция базы


СамоучкаРобот
23.04.2022, 15:48
Доброго времени суток. Я только начал осваивать робота, на новом месте работы стоит Кука сварочный. у меня 12 лет ЧПУ опыта, и 2 год как программирую. больше веб-разработчик. Но робот даётся довольно не сложно. Но столкнулся с проблемой. Из базы[0], она же мировая, или нулевая, получается сделать базу[21]( просто тестовая).
грубо код выглядит так
Base_data[21].x=xp1.x и тд.
xp2.x=0 и тд
ptp xp2,
приводит инструмент в ноль, всё нормально.
база создаётся, формуляры работают, программно координаты точек меняю. но, как только пытаюсь сделать из под этой базы базу[22](тоже для тестов сделал, она не срабатывает. точнее коррекция привязывает точки к нуля глобальной базы. пример, если точка p3 уже в координатах базы[21], то
base_data[22]=xp3.x и тд, не срабатывает,
и соответственно ptp p4 приводит инструмент не туда.
далее если указать base_data[22]=base_data[21]
то нули базы 22 равны нулям базы 21.
для чего мне такие трудности?
есть некая плоскость, где нужно варить в определённых местах, у нас это отверстия по окружностям.
нули 21 это центр круглой детали, а в динамично обновляемой 21, нужно приводить инструмент, прощупывать центр отверстия, и его же обваривать.
как менять эти отверстия ещё предстоит решить, есть радиус. есть расстояние от центра детали до центра отверстий. в чпу это называются полярные координаты, думаю по ходу решу как это делается в роботах. базу ли поворачивать. или через синус и косинус решать, решу потом.

помогите!!!


пс. в этой же 21 работает написанный мной алгоритм для поиска отверстий, потом он же должен переписать эту базу в ноль, для более точной обварки в координатах этой же 21 базы. а потом снова вернуться в 22, прейти к новому отверстию, и снова работа в 21.

СамоучкаРобот
23.04.2022, 18:07
а, надумал ещё вариант. в точке где должна быть база 22, перейти в глобальные координаты, затем прописать базу 22, но для этого надо принять за точку базы текущие координаты. а я пока не знаю как это сделать и где их взять, если конечно их можно в переменную присвоить.

Роботёр
25.04.2022, 08:43
пришли часть неработающего кода с описанием, по тексту сложно понять, что ты вообще хочешь.

Роботёр
25.04.2022, 08:49
для сохранения актуальных координат используется системная команда $pos_act.
Т.е. может быть вот такие строчки:
Decl E6POS TARGET_POS - декларация переменной типа E6POS

TARGET_POS = $POS_ACT - запись актуальной позиции робота в переменную TARGET_POS

PTP TARGET_POS - PTP движение в данную точку

Роботёр
25.04.2022, 09:03
хочу обратить внимание, что препроцессор робота считает на 3 строчки вперед. это может быть очень существенно для сохранения актуальной позиции. в данном случае самое правильное решение убрать препроцессор на 0 командой $advance = 0. потом главное не забыть его вернуть в 3

СамоучкаРобот
25.04.2022, 15:40
честно не думал что быстро ответите. Всем спасибо. все выходные не сидел на месте. а решение оказалось проще некуда. из под базы он может перезаписать любую базу, даже текущую. но только по касанию. TouchSense. И параллельно понял как работает поворот базы относительно осей.
и сразу вопрос, вы :D на эльфийском что то пишите, а есть какая либо литература по основным командам? Я разобрался с основными перемещениями, перезаписям точек и программной коррекцией формуляров, сменой базы, скоростей и ускорений и по мелочи. то что вы написали, Я даже таких команд не знаю. По G кодам они же исо7 легко найти. да и Я давно варюсь в этом. а по роботам Я даже не знаю что искать. заранее спасибо.

СамоучкаРобот
25.04.2022, 15:42
а, и ещё. пишу код с пульта робота, не удобно. а есть возможность писать код на буке, а потом его заливать в робота? cam программ у нас нет. пишу чисто ручками. и логику так же.

Роботёр
25.04.2022, 21:16
а, и ещё. пишу код с пульта робота, не удобно. а есть возможность писать код на буке, а потом его заливать в робота? cam программ у нас нет. пишу чисто ручками. и логику так же.

конечно же есть. но весь софт такого рода платный и найти ломаную версию нереально. к тому же постпроцессор к такой программе идет на определенную модель робота, т.к. роботов очень много и все они со своей кинематикой. ну и по опыту могу сказать, что данный софт для сварки не применим. можно конечно попробывать накидать траекторию, но траекторию процесса сварки придется корректировать по-любому.
Такие программы используются в основном для фрезеровки.

Роботёр
25.04.2022, 21:21
дай почту. накидаю мануальчиков киких-нибудь.
система Krc2 у тебя или Krc4?

СамоучкаРобот
26.04.2022, 03:02
дай почту. накидаю мануальчиков киких-нибудь.
система Krc2 у тебя или Krc4?

alex-sinobi@mail.ru
по поводу системы. Я честно говоря хз. при запуске робота, на экране появляется 3,8 или что то типа того. обычно не смотрю на экран. сегодня буду запускать. посомтрю.

СамоучкаРобот
26.04.2022, 05:45
скрин не могу прилепить, тут только по ссылке. у мня скорее всего версия 4. и в меню и на роботе наклейка.
возможно я дураком кажусь, и вопросы с объяснениями глуповато звучат, но я посчитал, на роботе в пятницу будет все 12 дней ровно как работаю. до этого с ними дел не имел вообще. понять. простить.

Роботёр
26.04.2022, 07:05
пульт управления роботом у тебя сенсорный или только кнопки?

СамоучкаРобот
26.04.2022, 08:29
сенсорный. слева 8 кнопок. справа 6 сдвоенных для осей

Роботёр
26.04.2022, 08:42
ок. вечером постараюсь накидать что-нибудь

СамоучкаРобот
27.04.2022, 10:43
ещё вопрос. есть стандартный формуляр. при его раскрытии он выглядит так
LIN P2 Vel=2m/s CPDAT2 Tool[1]: (название) Base[0]: (название)

$BWDSTART=FALSE (хз куда это нужно)
LDAT_ACT=LCPDAT2(тоже хз, но и не нужно, это Я так понял служебное)
FDAT_ACT=FP2(вроде тоже описывается что то связанное с точкой Р2)
BAS(#CP_PARAMS,2)(по идее сюда и надо прописать команду, которая сменит базу для данного формуляра.
LIN XP2
и вот как раз базу мне и нужно изменить программно, что бы автоматом база нужная прописывалась, в зависимости от того, что будет во входящем параметре, сейчас чтоб изменить номер базы, нужно выделить формуляр, нажать изменить, кликнуть на иконку левее названия точки (Р1) выбрать номер базы, например 21.
тогда формуляр будет выглядеть вот так
LIN P2 Vel=2m/s CPDAT2 Tool[1]: (название) Base[21]: (название)

для чего и как это будет работать.
есть некая глобальная программа, в которой надо обварить отверстия на пласти детали, с определённым размерами и зашитой под неё базой. у меня для теста это 21. далее в определённом точке на этой базе будет вызываться функция(она работает, уже написал), которая выполняет замер центра отверстия, но работает в координатах базы 21, относительно точки e6pos, которую Я передаю в эту функцию, а затем результат измерений записывает в базу 22( у меня).

так вот, изначальных деталей несколько, со своими размерами, соответственно с разными номерами баз. например 14.
чтоб моя функция работала, мне нужно передать номер 14 как аргумент, функция отработала в этой базе.


схематично так
decl int numberOfBase
numberOfBase=14

(считаем что Р1 это точка, в виде e6pos)
ptp p1 (номер инструмента и тд) base[14]: (название)

centerHole(xp1, numberOfBase)
или
centerHole(ХР1, 14 или 20 или любой номер)

и вот именно это и нужно прописать как базу для операций внутри этой функции CenterHole

баз будет много, а Я хочу чтоб моя функция была одна на все базы.

Роботёр
27.04.2022, 11:11
все запутано. но я себе вижу это так.
Допустим все твои формуляры имеют одну базу, 21 например. Так?
Ок. Твоя задача менять координаты этой базы, правильно?
Что мешает сделать так, что когда будет вызываться твоя функция ты меняешь координаты базы 21 на другие командой
base_data[21]=base_data[25] - данную строчку прописываешь перед всеми формуляроми точек
Все твои точки поедут в 21 базе, но с координатами 25-ой базы.
Только не забудь перед этим оригинальные координаты 21 базы записать на другую какую-нибудь базу командой
base_data[1]=base_data[21]

Роботёр
27.04.2022, 11:24
Касаемо входящего параметра можно прописать условие
IF numberOfBase=14 then
base_data[21]=base_data[25]

СамоучкаРобот
28.04.2022, 07:40
всплыла новая проблема.
до этого касаниями пользовался в пределах [0] (базы).
чтоб найти центр отверстия, нужно либо прямоугольный, либо равнобедренный треугольник. Я выбрал второй.
схематично так
..............cd3
................|
...............Vy
................|
................о
................|
cd1_Vx- _O_Vx+_cd2
1,2 и 3 это точки которые замеряются (например: x1=vcd1.meas_w.x и тд)
О это центр, а с буквой "V" это вектор замеров.

алгоритм такой. приезжаю примерно в центр отверстия ->корректирую формуляр -> относительно этой точки делаю смещение для старта по иксам -> затем (vcd2-vcd1)/2+vcd1 (то есть центр по иксам для игрика третьего замера в точке о малое) -> замеряю третью точку ((x3/y3)=vcd3.meas_w.(x/y) -> пересчитываю по формуле (геометрия) центр, и два значения (у меня CX,CY) использую для центра базы
base_data[21].x=CX
base_data[21].y=CY


и теперь проблема
как только Я это же делаю, но находясь в базе[21], первая математика для поиска о малого для игрика, ломается.
Я так понял, что замеры касаний указываются в мировых координатах,
например
base[0]
vcd1=500
vcd2 = 600
(600-500)/2+500 = 550
НО!
для базы[21] уже есть смещение относительно мировой, и получается если [21] относительно [0] по иксу = 700мм, то, например для
xp1 = 0 в [21] базе + половина от замеров = 700+550мм. и соответственно инструмент едет неадекватно далеко.
как то так.
меня смущает в этой строке
x1.x=vcd1.meas_w.x
именно "w'. как будто "world",
Я попробовал написать так
x1.x=vcd1.meas_21.x (для моей 21), но закидало ошибками.
почему это важно? если точка икса для третьего замера по оси Игрик от балды, а не по центру между 1 и 2 замерами, средняя точка в итоге уплывает.
а мне нужно половину от замеров приплюсовать к первому, чтоб поймать середину. в общем как только мне кажется что Я понимаю как он работает, мне робот подкидывает новую головную боль.

СамоучкаРобот
03.05.2022, 08:09
а чем отличается
decl frame xxx
decl e6pos yyy

ini


xxx={x 0,y 0,z 0,a 0,b 0,c 0}
yyy={x 0,y 0,z 0,a 0,b 0,c 0}
то есть чем вообще фрейм отличается от е6поз?

СамоучкаРобот
03.05.2022, 09:49
и ещё вопрос. как принудительно назначить базу из кода?
Я пробую так
home_base=21
не работает. смысл в чём.
когда в функцию передаю в качестве аргумента точку, то внутри функции инструмент едет в назначенную координату, но в базе[0]. пока формуляр не создам с базой 21, все точки работают в нулевой.

СамоучкаРобот
03.05.2022, 10:12
и ещё вопрос. как принудительно назначить базу из кода?
Я пробую так
home_base=21
не работает. смысл в чём.
когда в функцию передаю в качестве аргумента точку, то внутри функции инструмент едет в назначенную координату, но в базе[0]. пока формуляр не создам с базой 21, все точки работают в нулевой.

Я нашел такой пример внутри кода
$base=$world
пробовал вместо "ворлд" и номер, и по названию, и вообщем ничего.

Роботёк, можно на почту напишу?

СамоучкаРобот
03.05.2022, 13:00
Я нашел такой пример внутри кода
=
пробовал вместо "ворлд" и номер, и по названию, и вообщем ничего.

Роботёк, можно на почту напишу?

Вопрос снимаю. нашел инфу. и сразу решил свою проблему с позиционированием.
по поводу почты вопрос в силе.

Роботёр
03.05.2022, 13:02
да, конечно можно.