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:

  • Нравится 1
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • gudstartup
      это безопасность чтобы вас в ручном режиме на шпиндель не намотало прописывается станкостроителем в plc правда у нас 500 а 54 это прям совсем мало
    • areg
      Написал в личку. А почему в личку цены не можете скинуть?
    • Kelny
      Посмотрите свойтсва файлов из Explorer Windows, на закладке ПОДРОБНО, там может быть строчка ПОСЛЕДНЕЕ СОХРАНЕНИЕ В...   или создайте макрос, добавьте пример из справки (в замен того что имеется в новом макросе) и запустите выполнение макроса, который покажет не только последнюю версию файла, но и историю файла по разным версиям (в каких вообще версиях файл редактировался): https://help.solidworks.com/2022/english/api/sldworksapi/Get_Version_History_of_Future_Version_Document_Example_VB.htm   Текст макроса из справки (если файл уже открыт в Soildworks, то в макросе ни чего менять не надо, а если открытых документов нет и надо макросом открыть документ, то поменяйте путь к файлу в тексте макроса "strFileName = swApp.GetCurrentMacroPathFolder & "\Part1.sldprt""):  
    • lem_on
      Но комп от интернета отключен. 
    • Anat2015
      Так было всегда, или "я неделю тут работаю"? Механизм возникновения проблемы даст полезную инфу.
    • Shoker
      Насколько я понял Ваш вопрос, результат будет зависеть от типа закрепления, приложенного к проушине. Если вы используете "фиксированную геометрию", тогда все точки поверхности этой поверхности будут иметь нулевые перемещения, что фактически означает запрет на вращение вокруг оси (т.к. поворот вокруг оси будет приводить к вращению-перемещению всех точек, не лежащих строго на самой оси вращения). В SW должны быть другие виды закрепления, которые будут позволять поворачиваться, при этом у точек будет нулевые радиальные и осевые перемещения. Но это нужно будет применять, только если этот ГЦ будет входить в другую расчетную схему, как элемент, воспринимающий только осевую силу (остальные будут нулевые как раз изза этого поворота), отдельный расчет с таким закреплением вам ничего не даст и ничего он не посчитает вам.
    • laytermen
      Добрый день. Нет. Стабильно 54 оборота и все. 
    • KSVSVK
      С одного дистрибутива на 2 компьютера несколько лет назад поставлен Солид. Обновления отключены.   Последнее время начались "чудеса":   1. Файл, созданный на первом компе, не открывается на втором, утверждая, что он из "будущей версии"   2. Проверка сборки эвольвентного зубчатого редуктора в "будущей версии" находит интерференции, отсутствующие в старой.   3. Расчет данного редуктора (Motion) при одних и тех же исходных данных приводит к разным результатам. Причем, на мой не очень искушенный взгляд, правильный результат у "старой" версии.   4. В контексте сборки создаю плоский эскиз, к которому привязываю размеры деталей (системное "Расположение" не использую). В какой-то момент (не отследил точно) часть размеров в эскизе пропадают. Причем эскиз остается определенным, и соответствующие взаимосвязи в нем есть. Похоже на "скрыть размер", но данный пункт не вызывался. При попытке посмотреть размеры через уравнения (режим ) Solid сообщает об ошибке и предлагает его перезапустить.   Кто-нибудь с такими "чудесами" сталкивался?
    • gudi
      Для длинных и сложных сделали ком-порт, а сеть для коротких и простых? всё равно не понимаю. Программа передалась через ком-порт, загрузилась в чпу, цикл старт нажали станок поехал ее делать, хоть час хоть неделю, хоть как. Или вы по ходу выполнения программы вы ее  через ком-порт корректируете ?
    • AlexArt
×
×
  • Create New...