Jump to content

G-POST, много вопросов. Хочется понять логику работы.


DJ Astro

Recommended Posts

DJ Astro

Пытаюсь обработать команду CAMERA (матрица поворота и смещения), чтобы для обработки 3+2 получить на выходе

 

 

 

 

CYCL DEF 7.0 DATUM SHIFT
CYCL DEF 7.1 X
CYCL DEF 7.2 Y
CYCL DEF 7.3 Z

и CYCL DEF 19.0 WORKING PLANE A B C

или PLANE SPATIAL SPA SPB SPC.

 

В настройках G-POST есть закладка Planar Macining. Там можно выбрать что выводить: 

ABC orthogonal angles

ABC machine axis angles

Euler angles

....

Вывожу ABC orthogonal angles. В обработке у меня система координат поворачивается на +90 вокруг X, т.е. для цикла PLANE SPATIAL нужно заиметь в итоге A90 B0 C0. При этом GPOST выдаёт следующие углы - A0 B90 C270.

 

Всё-таки, что это за ортогональные углы и как их привести к нужным значениям? 

 

ps. станок HURON kx50, поворотный шпиндель (Primary rotary head - Z, Secondary rotary head - Y)

 

  • Нравится 1
Link to post
Share on other sites


ben_laden

Предположу, что кинематика вашего станка настроена как В и С. Соот-но, пост может ваш угол по оси А раскладывать на повороты по В и С. Если есть доступ в станку, попробуйте в MDI сначала повернуть по А+90, а потом по В и С на +90 и +270 градусов соот-но. С большой вероятностью получите один и тот же результат.

Link to post
Share on other sites
DJ Astro

Предположу, что кинематика вашего станка настроена как В и С. Соот-но, пост может ваш угол по оси А раскладывать на повороты по В и С. Если есть доступ в станку, попробуйте в MDI сначала повернуть по А+90, а потом по В и С на +90 и +270 градусов соот-но. С большой вероятностью получите один и тот же результат.

Доступа к станку пока нет. Проверил в Vericut.. да, голова станка поворачивается в обоих случаях одинаково, только оси системы координат оказываются направлены по-разному. 

 

Я спрашивал про углы в окошке Output Method

 

62766c2341d287eb0f8e9cf31bf4ae78.jpg

 

по идее по первому пункту G-Post должен рассчитывать углы трансформации осей системы координат без учёта кинематики станка, т.е. чтобы перейти от одной СК к другой, нужно ее повернуть на такие-то углы относительно исходной (и не важно какой станок у нас). Но даже в этом случае поворот A90 B0 C0  не равнозначен повороту A0 B90 C270 :no:  А вот у же во втором пункте должны выводиться именно углы поворота осей станка с учетом его кинематики (это даже внизу в комментариях написано). Но, что в первом, что во втором случае - выводятся одинаковые углы - A0 B90 C270. И не знаю, что с этим делать :sad:

Link to post
Share on other sites
ben_laden

Если честно, то с G-POST не имею вообще никакого опыта. :biggrin:  Просто вы спрашивали о логике работы, вот я и пояснил разницу в программном повороте и реальном, с учетом кинематики станка. :smile:

Link to post
Share on other sites

Коллеги, не парьте мозговые извилины себе и окружающим. Профессиональные курсы по разработке постпроцессоров заказывают нормальные техдиректора предприятий. И реселлеры от РТС обучают и сертифицируют специалистов. Это разьве так трудно?

Link to post
Share on other sites
DJ Astro

Коллеги, не парьте мозговые извилины себе и окружающим. Профессиональные курсы по разработке постпроцессоров заказывают нормальные техдиректора предприятий. И реселлеры от РТС обучают и сертифицируют специалистов. Это разьве так трудно?

Курсы заказать не трудно. Трудно заказать нормального техдиректора предприятия, который заказал бы эти курсы. :wacko: 

 

Вопросы про углы ещё в силе :worthy:

  • Нравится 2
Link to post
Share on other sites
NCC_@RAMBLER.RU

 

Коллеги, не парьте мозговые извилины себе и окружающим. Профессиональные курсы по разработке постпроцессоров заказывают нормальные техдиректора предприятий. И реселлеры от РТС обучают и сертифицируют специалистов. Это разьве так трудно?

Курсы заказать не трудно. Трудно заказать нормального техдиректора предприятия, который заказал бы эти курсы. :wacko:

 

Вопросы про углы ещё в силе :worthy:

 

Какой смысл директору заказывать курсы по разработке постпроцессоров .Он что , в дальнейшем будет предоставлять услуги по постпроцессорам . Разве что , у него очень много оборудования с различными стойками ЧПУ. 

Link to post
Share on other sites

Пытаюсь обработать команду CAMERA (матрица поворота и смещения), чтобы для обработки 3+2 получить на выходе

 

 

 

 

CYCL DEF 7.0 DATUM SHIFT

CYCL DEF 7.1 X

CYCL DEF 7.2 Y

CYCL DEF 7.3 Z

и CYCL DEF 19.0 WORKING PLANE A B C

или PLANE SPATIAL SPA SPB SPC.

 

В настройках G-POST есть закладка Planar Macining. Там можно выбрать что выводить: 

ABC orthogonal angles

ABC machine axis angles

Euler angles

....

Вывожу ABC orthogonal angles. В обработке у меня система координат поворачивается на +90 вокруг X, т.е. для цикла PLANE SPATIAL нужно заиметь в итоге A90 B0 C0. При этом GPOST выдаёт следующие углы - A0 B90 C270.

 

Всё-таки, что это за ортогональные углы и как их привести к нужным значениям? 

 

ps. станок HURON kx50, поворотный шпиндель (Primary rotary head - Z, Secondary rotary head - Y)

 

 

Смотрите, вы создали в Gpost 5ax станок с осями B и С. Но при этом хотите на выходе получить угол А, как вы себе это представляете? Какой станок и с какими осями вы изначально создали, в тех осях он и будет выводить результат.

Link to post
Share on other sites

привет всем.

очень интересный вопрос разложений 5 на 3+2

я пытался заниматся им но бросил потому как

команда CAMERA не всегда корректно выдавала вектора углов ну по крайней мере в версии 5

сейчас пользуюсь Creo и не проверял больше этот момент

 

если не получится через стандартные настройки то можно попробывать

все это обработать через фил

там любую команду можно обработать

 

******************************************************

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

в данный момент больше административную работу выполняю чем инженерную

но могу поделится небольшими наработками на тему 5 координатного станка со стойкой хайден

если кто собирается эту тему развивать

Link to post
Share on other sites

привет всем.

очень интересный вопрос разложений 5 на 3+2

я пытался заниматся им но бросил потому как

команда CAMERA не всегда корректно выдавала вектора углов ну по крайней мере в версии 5

сейчас пользуюсь Creo и не проверял больше этот момент

 

если не получится через стандартные настройки то можно попробывать

все это обработать через фил

там любую команду можно обработать

 

******************************************************

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

в данный момент больше административную работу выполняю чем инженерную

но могу поделится небольшими наработками на тему 5 координатного станка со стойкой хайден

если кто собирается эту тему развивать

Поделитесь, конечно. Как раз сейчас собираюсь с силами, чтобы начать писать постпроцессор для DMU 70. Любая информация будет очень полезна. 

Link to post
Share on other sites

Также интересует данная тема, предстоит осваивать 5 осевик с Heidenhain. 

Link to post
Share on other sites
DJ Astro

Смотрите, вы создали в Gpost 5ax станок с осями B и С. Но при этом хотите на выходе получить угол А, как вы себе это представляете? Какой станок и с какими осями вы изначально создали, в тех осях он и будет выводить результат.

 

Я уже писал выше, что судя по описаниям закладки Planar Machining, при таких настройках пост должен выдавать углы поворота математических осей координат (т.е. в какую сторону и на сколько нужно крутить исходную систему координат(СК) вокруг каждой из осей, чтобы СК заняла новое положение), а не углов поворота кинематических осей станка. И эти углы никак не должны быть связаны с тем, какие оси физически есть у станка. Ведь в цикл PLANE SPATIAL можно (и нужно!) вводить сразу три угла A B C, не смотря на то, что у станка только две поворотные оси. Потом стойка эти углы пересчитает в углы физических осей станка и повернет оси станка в нужную сторону (при этом значения вычисленных углов сохраняются в параметрах стойки Q120=A, Q121=B, Q122=C). 

 

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

Это всё понятно. Вопрос стоит - КАК это правильно обработать, если КАМЕРА действительно работает не так, как хочется (ну или не так, как написано в мануале). 

Сам уже много чего раскопал в G-post'е, но вот упёрся в эту КАМЕРУ и всё :(

 

Metan, любая информация по этому вопросу была бы очень полезной!

Link to post
Share on other sites
fenics555
Сам уже много чего раскопал в G-post'е, но вот упёрся в эту КАМЕРУ и всё :(

А в самом файле NCL  что пишет? там цифры позиционирования должны быть теми же. Может Вы что не так делаете в УП?

Link to post
Share on other sites
DJ Astro

В самом файле NCL пишет всё правильно, только цифр позиционирования там нету, там матрица векторов осей повернутой СК.

По поводу обработки CAMERA у меня есть два варианта - простой и сложный. 

Простой: в цикле PLANE SPATIAL есть ещё вариант задания плоскости обработки кроме ортогональных углов и углов Эйлера ещё и через векторы осей X и Z. А они в явном виде прописаны в матрице CAMERA. Остаётся их только извлечь и вписать в цикл PLANE VECTOR BX BY BZ NX NY NZ. Решение очень простое, рабочее, но совсем не наглядное для программиста и оператора, т.к. из кода программы не поймёшь, правильно ли поворачиваются оси. 

Сложный: каким-то образом решить адскую сисему уравнений. CAMERA - это матрица, которая является результатом перемножения трёх матриц, отвечающих за поворот вокруг каждой оси (+ учитывая последовательность поворотов). 

Есть три матрицы MX, MY, MZ известного вида, в каждой - одна неизвестная (угол повороа вокруг данной оси СК). Есть известная конечная матрица M = MX * MY * MZ, в которой углы фигурируют в немыслимых выражениях математических действий. И из этого всего надо как-то извлечь искомые углы.

 

В FIL есть команда DATA/CAM,n...с разными опциями, так же как и Planar Machining, которая должна вычислять углы поворота.

Беру матрицу из CAMERA, прогоняю со всеми возможными опциями двух вариантов - результаты разные. :(

Самое интересное, что углы осей станка выводит правильно. 

Link to post
Share on other sites

Да, с углами там интересно получается. Прилагаю файл с функциями (язык C) поворота стола. Сделано банально через ж$%$ прямоугольные треугольники (на большее моих математических знаний не хватило) :smile:. Но, вообще-то интересно было бы узнать, как на самом деле правильно математически вычислять, вроде через матрицу как-то надо :g:.

plane_func.txt

Link to post
Share on other sites
DJ Astro

VIKT0R, поясните, пожалуйста, цепочку рассуждений при расчётах? а то я в "С" полный дуб, чтобы по коду понять что там происходит... :blush:

Link to post
Share on other sites

По сути логика рассуждений простая - последовательный перебор всех возможных положений координатной системы стола, с выделением каких-то случаев, типа поворота только вокруг оси X, или поворотов, кратных 90 град. В коде можете ориентироваться по комментариям на русском языке, да и по именам функций и переменных - они, как правило, "говорящие". Я просто на бумажке нарисовал все возможные положения - какой вектор в какой четверти, их проекции, а там дело техники - синус, косинус... ну и логики. Смысл такой, чтобы выяснить, поворотами вокруг каких осей и насколько градусов можно достичь указанного положения координатной системы стола.

 

По коду - например new_matrix[3][3] - это массив, представляющий матрицу CAMERA CSYS из *.ncl, поскольку в языке C счет у массивов начинается с нуля, то массив 4х4:

 

0 1 2 3

1

2

3

 

Дальше, например  (если проекция единичного вектора оси X на абсолютную систему координат равна единице - значит вокруг других осей вращения не было):

if(new_matrix[0][0] == 1.0) {      // если поворот только вокруг оси X
  UserAngleEval(new_matrix[1][1], new_matrix[2][1], &a_rad);
 }

вызывается функция UserAngleEval, которой в качестве параметров передаются проекции единичного вектора-оси Y на абсолютную систему координат, а также параметр-угол (который надо вычислить) поворота вокруг оси X. Согласно определению данной функции (см. в самом конце файла) эти проекции обрабатываются как абсцисса и ордината (катеты прямоугольного треугольника), вычисляется угол, который записывается в соответствующий параметр и возвращается в вызывающую функцию.

 

Ну как-то так. Кстати, функция UserQuorterDefine не используется (осталась, кажется от черновика), а также есть закомментированные участки типа  /* это комментарий  */.


Вот я тогда скачал инфу по матрицам - думаю, если по науке, то где-то в этом направлении надо копать.

post-1614-0-22416500-1428605966_thumb.jpg

Матрицы (Matrix)- матрицы в С++, типы матриц, использование матриц.zip

Edited by VIKT0R
Link to post
Share on other sites

все верно, только в G-post это все проще. там есть функции работающие с векторами.

матрицы решать не нужно ))

http://files.webfile.ru/file/2be4d842d759585549b965862b57a9a6

тут архив с ппостом

расчитан на XYZAC

перед использованием прочитайте коментарии в разделе фил

на выходе будет код найден. не исо !

Link to post
Share on other sites

Вспомнил подробности: шёл, что называется "от обратного". Повернутую уже систему координат последовательно доворачивал до исходного положения, запоминая углы поворотов. То есть, определяем сначала простые случаи - повороты под 90 град, а сложные пространственные положения последовательно сводим к простым.

Link to post
Share on other sites
DJ Astro

VIKT0R, Metan, пасиба!!

Победил-таки камеру и теперь имею углы для PLANE SPATIAL!!!  :lighten:

Всё-таки решил добить матрицами. На деле матрицы оказались не такими страшными, как в начале представлялось.

Умножил три матрицы поворота друг на друга в таком порядке поворотов - вокруг Z -> вокруг Y -> вокруг X. Получилась конечная матрица с формулами

 

 

674d1c4fc8b609650eada3ccb04670a0.jpg

 

(вообще камера - это матрица 3х4, где 4й столбец - это координаты смещения нуля. при рассмотрении поворотов их можно не учитывать, поэтому имеем дело с матрицей 3х3)

значение каждой формулы известно из матрицы камеры. Остаётся только выразить углы из самых простых формул  - и всё!! 

Только потом для правильной трансформации координат нужно из матрицы камеры сделать обратную матрицу и пустить ее на вход в G-post с помощью команды TRANS, т.к. если использовать снова команду CAMERA, то после нее как-то неправильно пересчитываются координаты в повёрнутой СК.

 

Вроде бы всё правильно считает, но как-то подозрительно просто :biggrin:

 

Код FIL:

 

 

 

CIMFIL/ON,CAMERA
XI=POSTF(7,4)      $$ =cos©*cos(B)
YI=POSTF(7,5)
ZI=POSTF(7,6)
DI=POSTF(7,7)     $$ X datum shift
XJ=POSTF(7,8)     $$ =sin©*cos(B)
YJ=POSTF(7,9)
ZJ=POSTF(7,10)
DJ=POSTF(7,11)      $$ Y datum shift
XK=POSTF(7,12)      $$ =-sin(B)
YK=POSTF(7,13)     $$ =cos(B)*sin(A)
ZK=POSTF(7,14)      $$ =cos(B)*cos(A)       
DK=POSTF(7,15)     $$ Z datum shift
XVAL=TEXT/DI         $$ convert to text
YVAL=TEXT/DJ
ZVAL=TEXT/DK
XVAL=TEXT/OMIT,XVAL,3 $$ remove blanks
YVAL=TEXT/OMIT,YVAL,3
ZVAL=TEXT/OMIT,ZVAL,3

AVAL=ATAN2F(YK,ZK)      $$ plane spatial A
BVAL=ASINF(-XK)       $$ plane spatial B
CVAL=ATAN2F(XJ,XI)       $$ plane spatial C

AVAL=TEXT/CONVF,AVAL,10,5,1,0,5     $$ convert to text
BVAL=TEXT/CONVF,BVAL,10,5,1,0,5
CVAL=TEXT/CONVF,CVAL,10,5,1,0,5

INSERT/'; $'
INSERT/'CYCL DEF 7.0 DATUM SHIFT $'
INSERT/'CYCL DEF 7.1 X',XVAL,' $'
INSERT/'CYCL DEF 7.2 Y',YVAL,' $'
INSERT/'CYCL DEF 7.3 Z',ZVAL,' $'
INSERT/'; $'
INSERT/'PLANE SPATIAL SPA',AVAL,$
' SPB',BVAL,' SPC',CVAL,' MOVE F5000 $'
INSERT/'; $'
INSERT/'L1 Z+50 F10000 $'
INSERT/'; $'

M1=MATRIX/XI,YI,ZI,DI,XJ,YJ,ZJ,DJ,XK,YK,ZK,DK      $$ create matrix from CAMERA
M1=MATRIX/INVERS,M1       $$ inverse matrix
M1=DATA/M1        $$ convert matrix to scalar data
TRANS/M1        $$ translate all coords from CL with M1 matrix

CIMFIL/OFF

  • Нравится 2
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Сообщения

    • david1920
      В самом датчике RMS pic контроллер стоит
    • SHARit
    • A_1
      Здравствуйте. Попробуйте включить корректор на длину инструмента в одном кадре вместе с перемещением по Z: G43 Z200. H16 Ваш станок, видимо, выполняет коррекцию на длину инструмента "за счёт перемещения по оси", а не "за счёт сдвига системы координат". За это отвечает параметр 5006 #6 (TOS).
    • maxx2000
      @The_22nik учитывая склероз SW и прочие его чудачества, я бы не стал этим кичиться. Из каждой вырезать долго, но лучше
    • Viktor2004
      Здесь другая ситуация. Мы с автором уже говорили. Тут не так просто как было в телеге Не исключаю что даже крипточип стоит
    • GStesik
      Здравствуйте уважаемые, я похоже чет делаю не так. У меня китайский станок Weida VMC 640 с  Renisaw . Все то же самое только имена программ Renisaw немного другие.  Когда я пишу цикл измерения заготовки по оси Z то перед вызовом программы Renisaw нужно сделать смещение инструмента согласно таблицы вылета инструмента в стойке.  В случае если инструмент в данный момент стоит в машинном 0 то ему некуда смещается физически. Машинный ноль находится в верху, вниз идут отрицательные значения Z. Инструментальный ноль относительно которого я считаю вылет инструмента находится в торце шпинделя. Я придумал временный костыль при котором станок выходит в машинный ноль по Z потом опускается на немного большее расстояние чем вылет моего датчика, чтобы тот в последующем мог обратно подняться при команде смещения инструмента. после чего запускается программа Renisaw.  Мне кажется что это не правильно так как если операторы засунут высокую деталь в станок то датчик ее ударит при этих дерганьях. Я что-то усложняю? наверное есть простое решение ? Можно ли смешать инструмент без физического уезжания шпинделя на величину смещения, чтобы он на стойке просто координаты менял...   Вот мой цикл, Комментарии писал для форума. в программе их нет.   % O0020 (имя программы) M6T16 (взяли датчик Ренишоу из 16-того слота) M91 (включили датчик) G0G53G90Z0 (поехали в машинный ноль) M19 (сделали ориентацию шпинделя) G0G91Z-225 (поехали в низ на 225 мм.) G43H16 (указали вылет датчика он 223мм с мелочью. Шпиндель поехал вверх на 223 мм) G65P9811Z0S1 (программа Ренишоу. Обмер по оси Z, полученные данные подставим в z точки G54) M91 (выключаем датчик) M30 (конец проги) %   P.C. Всем привет из Минска!
    • clavr
      И после этого солид страшно тупит. У меня сборка из 200 деталей. из-за этих "вырезов" перестроение до 10мин((((
    • zerganalizer
      В-общем - стабилен только один алгоритм, и он самый медленный, зато новые установки - настроить радиус кривизны в носике и угол касательной - сделали ещё более точную копию тестовой кривулины и вписывает более гладко. Теперь носик замечательно копируется, а хвостик СОВСЕМ не проседает. Я ещё понастраиваю и погоняю конфигуратор профиля и попробую собирать результат вне катии - весь фреймворк для этого я уже написал и протестил.  
    • david1920
    • IgorT
      Я бы нарисовал деталь параметрическую. С неё чертёж оформил. Он бы менялся по изменению геометрии модели детали. Но это годится для простых деталей типа кирпич.  Посложнее, где нужны виды/разрезы и прочее параметрика Компаса слабовата. Например разрез не получится сделать так, что бы он отслеживал место его нанесения. С прочими элементами оформления чертежа аналогичная засада.
×
×
  • Create New...