26.04.2022, 05:45
|
#11
|
Бывалый
Регистрация: 23.04.2022
Сообщения: 28
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
|
скрин не могу прилепить, тут только по ссылке. у мня скорее всего версия 4. и в меню и на роботе наклейка.
возможно я дураком кажусь, и вопросы с объяснениями глуповато звучат, но я посчитал, на роботе в пятницу будет все 12 дней ровно как работаю. до этого с ними дел не имел вообще. понять. простить.
|
|
|
|
26.04.2022, 07:05
|
#12
|
Гуру
Регистрация: 20.12.2017
Сообщения: 712
Сказал Спасибо: 19
Сказали Спасибо 145 раз(а) в 138 сообщении
|
пульт управления роботом у тебя сенсорный или только кнопки?
|
|
|
|
26.04.2022, 08:29
|
#13
|
Бывалый
Регистрация: 23.04.2022
Сообщения: 28
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
|
сенсорный. слева 8 кнопок. справа 6 сдвоенных для осей
|
|
|
|
26.04.2022, 08:42
|
#14
|
Гуру
Регистрация: 20.12.2017
Сообщения: 712
Сказал Спасибо: 19
Сказали Спасибо 145 раз(а) в 138 сообщении
|
ок. вечером постараюсь накидать что-нибудь
|
|
|
|
27.04.2022, 10:43
|
#15
|
Бывалый
Регистрация: 23.04.2022
Сообщения: 28
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
|
ещё вопрос. есть стандартный формуляр. при его раскрытии он выглядит так
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 в 10:47
Причина: двоеточие и откр скобки слитно = смайлик. пришлось переделать
|
|
|
|
27.04.2022, 11:11
|
#16
|
Гуру
Регистрация: 20.12.2017
Сообщения: 712
Сказал Спасибо: 19
Сказали Спасибо 145 раз(а) в 138 сообщении
|
все запутано. но я себе вижу это так.
Допустим все твои формуляры имеют одну базу, 21 например. Так?
Ок. Твоя задача менять координаты этой базы, правильно?
Что мешает сделать так, что когда будет вызываться твоя функция ты меняешь координаты базы 21 на другие командой
base_data[21]=base_data[25] - данную строчку прописываешь перед всеми формуляроми точек
Все твои точки поедут в 21 базе, но с координатами 25-ой базы.
Только не забудь перед этим оригинальные координаты 21 базы записать на другую какую-нибудь базу командой
base_data[1]=base_data[21]
|
|
|
|
27.04.2022, 11:24
|
#17
|
Гуру
Регистрация: 20.12.2017
Сообщения: 712
Сказал Спасибо: 19
Сказали Спасибо 145 раз(а) в 138 сообщении
|
Касаемо входящего параметра можно прописать условие
IF numberOfBase=14 then
base_data[21]=base_data[25]
|
|
|
|
28.04.2022, 07:40
|
#18
|
Бывалый
Регистрация: 23.04.2022
Сообщения: 28
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
|
всплыла новая проблема.
до этого касаниями пользовался в пределах [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 замерами, средняя точка в итоге уплывает.
а мне нужно половину от замеров приплюсовать к первому, чтоб поймать середину. в общем как только мне кажется что Я понимаю как он работает, мне робот подкидывает новую головную боль.
Последний раз редактировалось СамоучкаРобот, 28.04.2022 в 08:12
Причина: схема не учитывает пробелов. пришлось для выравнивания ставить точки
|
|
|
|
03.05.2022, 08:09
|
#19
|
Бывалый
Регистрация: 23.04.2022
Сообщения: 28
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
|
а чем отличается
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
|
#20
|
Бывалый
Регистрация: 23.04.2022
Сообщения: 28
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
|
и ещё вопрос. как принудительно назначить базу из кода?
Я пробую так
home_base=21
не работает. смысл в чём.
когда в функцию передаю в качестве аргумента точку, то внутри функции инструмент едет в назначенную координату, но в базе[0]. пока формуляр не создам с базой 21, все точки работают в нулевой.
|
|
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +2, время: 09:04.
|
|