Перейти к публикации

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


DJ Astro

Рекомендованные сообщения

Добрый день.

 

При постпроцессировании токарно-фрезерной обработки с постоянно меняющимся вектором инструмента возникла следующая проблема:

при обработке постпроцессором .acl файла, в .lst файл координаты передаются с 5ю знаками после запятой, а этого не хватает) хотелось бы 10, как и в cl файле.

 

Никто не сталкивался с подобной проблемой? Полазил в инструкция по fil и gpost ответа не нашел..

Изменено пользователем dutiful
Ссылка на сообщение
Поделиться на других сайтах


По каким параметрам в таком случае определить, какого вида обработка, чтобы перед многоосевой вставлять дополнительные необходимые кадры? 

 

И еще один вопрос: G-post не хочет выводить G0/G1 во втором блоке при обработке перемещений с одинаковыми координатами.

Например:

 

GOTO/5,5,10

GOTO/5,5,10

 

после обработки получается

1 G1 X5 Y5 Z10

2 X5 Y5 Z10

 

хотя все модальности выключены, вывод одинаковых точек включен.

Что еще сделать, чтобы G-код всё-таки выводился в такой ситуации?

 

По поводу определения вида обработки, пробуйте следующее:

(прописывается в секцию GOTO)

 

 

...

DMY = POSTF(20)

NUMWRD = POSTF(5)
XVAL = POSTF (7,6)
YVAL = POSTF (7,7)
ZVAL = POSTF (7,8)
IF( NUMWRD .GT. 8) THEN
$$ MULTI AXIS
IVAL = POSTF(7,9)
JVAL = POSTF(7,10)
KVAL = POSTF(7,11)
ELSE
$$ 3 AXIS GOTO
IVAL = 0
JVAL = 0
KVAL = 1
ENDIF
 
CLREC = POSTF(7,1) + 1
 
DO/GOTO01,I=1,10,1
I = 1
DMY = POSTF(14) $$ READ NEXT LINE
CLSTYP = POSTF(7,2)
CASE/CLSTYP
WHEN/2000
IF( POSTF(7,3) .EQ. ICODEF(REMARK) ) THEN
PPTXT = TEXT/CLW
IF( INDXF(PPTXT, (TEXT/'END /')) .GT. 0 ) THEN
I = 100
ENDIF
ENDIF
WHEN/5000 $$GOTO
NUMWRD = POSTF (5)
IF ( NUMWRD .GT. 8) THEN
$$ MUTI AXIS
NIVAL = POSTF (7,9)
NJVAL = POSTF (7,10)
NKVAL = POSTF (7,11)
ELSE
$$ 3_AXIS GOTO
NIVAL = 0
NJVAL = 0
NKVAL = 1
ENDIF
IF( IVAL .EQ. NIVAL .AND. $
JVAL .EQ. NJVAL .AND. $
KVAL .EQ. NKVAL) THEN
ANGTST = 0 $$ обработка с постоянным вектором инструмента
ELSE
ANGTST = 1 $$ обработка с постоянно меняющимся вектором инструмента
ENDIF
I = 100
WHEN/14000 $$FINI
I = 100
WHEN/OTHERS
CONTIN
ENDCAS
GOTO01)
ENDIF
 
DMY = POSTF(21)
DMY = POSTF(13)
DMY = POSTF(15,CLREC)
...
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

 

По поводу определения вида обработки, пробуйте следующее:

(прописывается в секцию GOTO)

 

 

...

DMY = POSTF(20)

NUMWRD = POSTF(5)
XVAL = POSTF (7,6)
YVAL = POSTF (7,7)
ZVAL = POSTF (7,8)
IF( NUMWRD .GT. 8) THEN
$$ MULTI AXIS
IVAL = POSTF(7,9)
JVAL = POSTF(7,10)
KVAL = POSTF(7,11)
ELSE
$$ 3 AXIS GOTO
IVAL = 0
JVAL = 0
KVAL = 1
ENDIF
 
CLREC = POSTF(7,1) + 1
 
DO/GOTO01,I=1,10,1
I = 1
DMY = POSTF(14) $$ READ NEXT LINE
CLSTYP = POSTF(7,2)
CASE/CLSTYP
WHEN/2000
IF( POSTF(7,3) .EQ. ICODEF(REMARK) ) THEN
PPTXT = TEXT/CLW
IF( INDXF(PPTXT, (TEXT/'END /')) .GT. 0 ) THEN
I = 100
ENDIF
ENDIF
WHEN/5000 $$GOTO
NUMWRD = POSTF (5)
IF ( NUMWRD .GT. 8) THEN
$$ MUTI AXIS
NIVAL = POSTF (7,9)
NJVAL = POSTF (7,10)
NKVAL = POSTF (7,11)
ELSE
$$ 3_AXIS GOTO
NIVAL = 0
NJVAL = 0
NKVAL = 1
ENDIF
IF( IVAL .EQ. NIVAL .AND. $
JVAL .EQ. NJVAL .AND. $
KVAL .EQ. NKVAL) THEN
ANGTST = 0 $$ обработка с постоянным вектором инструмента
ELSE
ANGTST = 1 $$ обработка с постоянно меняющимся вектором инструмента
ENDIF
I = 100
WHEN/14000 $$FINI
I = 100
WHEN/OTHERS
CONTIN
ENDCAS
GOTO01)
ENDIF
 
DMY = POSTF(21)
DMY = POSTF(13)
DMY = POSTF(15,CLREC)
...

 

Красивый огород... Но как быть, например, с 5-ти осевым сверлением, где вектор инструмента меняется для каждого отверстия... И никаких /END/- ов там нет... Я так понимаю вы хотите сделать пост, который "хавал" бы и непрерывку и 3+2 обработку? Есть, конечно, и более простые и надежные способы.

Ссылка на сообщение
Поделиться на других сайтах

Красивый огород... Но как быть, например, с 5-ти осевым сверлением, где вектор инструмента меняется для каждого отверстия... И никаких /END/- ов там нет... Я так понимаю вы хотите сделать пост, который "хавал" бы и непрерывку и 3+2 обработку? Есть, конечно, и более простые и надежные способы.

5ах сверление вообще отдельный случай. Пока не решил проблему с ним. 

Более простые, это 2 поста?) или Сшить их?

Ссылка на сообщение
Поделиться на других сайтах

Все просто как апельсин. Если нет признака в системе, можно попросить пользователя обозначать непрерывную 5-ти осевую обработку какой-либо строкой или параметром. например в названии сиквенса прописать строку "_5AXIS". Обрабатывать такие вещи очень просто, меняя стратегию обработки в зависимости от наличия или отсутствия данной строки в названии сиквенса. Таким образом, ответственность за определение типа обработки лежит на пользователе. Работает изумительно, и двух постов не надо.

Ссылка на сообщение
Поделиться на других сайтах

 С 5х вроде как-то разобрался, заработало :smile:

Заморочился со спиральной интерполяцией :doh: . И снова завис... В ncl все красиво: команда CIRCLE с координатами центра дуги и затем GOTO с координатами конечной точки дуги. Если Z в этих двух командах разные - значит выводим спиральку, вроде всё просто. Как только этот ncl попадает в G-post - начинается что-то непонятное:

 

 

к примеру оборот на 180 по часовой с заглублением 0.5

 

ncl:

GOTO / 20.00000, 0.00000, 0.00000
CIRCLE / 0.00000, 0.00000, 0.00000, $
0.0000000000, 0.0000000000, -1.0000000000, 20.00000
GOTO / -20.00000, 0.00000, -0.50000

 

acl:

GOTO / 20.00000, 0.00000, 0.00000
REMARK CIRIJK=0.0000000000, 0.0000000000, -1.0000000000
ARCDAT / 0.00000, 0.00000, 0.00000, $
0.0000000000, 0.0000000000, -1.0000000000, 20.00000
ARCMOV/ CLW, -20.00000, 0.00000, -0.5000,0
GOTO / -20.00000, 0.00000, -0.50000

 

lst:

-130>GOTO /20,0,0
-130 31 NN19 G1 X20 Y0 Z0 $

-116>ARCDAT/0,0,0,0,0,-1,20 
 41>ARCSLP/ON,-1,3.141593 

-130>GOTO /-.584124,-19.991468,0
-130 44 NN21 G2 X-20 Y0 Z-0.5 $

  44>ARCSLP/OFF 

 

Что за хрень в красных строках? откуда такие кривые цифры и как они снова превращаются в нужные координаты?

Получается, что в пост уже идут  ARCDAT и GOTO  с одинаковыми Z ? Как тогда понять, где спираль а где нет?

 

Пытаясь понять, что происходит в процессе расчетов пробую считывать все параметры CL-записей, которые идут в пост вот таким FIL-ом:

 

cimfil/on,circle
pstf1=postf(7,1)
pstf2=postf(7,2)
pstf3=postf(7,3)
pstf4=postf(7,4)
pstf5=postf(7,5)
pstf6=postf(7,6)
pstf7=postf(7,7)
pstf8=postf(7,8)
pstf9=postf(7,9)
pstf10=postf(7,10)
pstf11=postf(7,11)
pstf12=postf(7,12)
pstf13=postf(7,13)
pstf14=postf(7,14)
pstf15=postf(7,15)
dmy=postf(13)
cimfil/off

cimfil/on,goto
pstf1=postf(7,1)
pstf2=postf(7,2)
pstf3=postf(7,3)
pstf4=postf(7,4)
pstf5=postf(7,5)
pstf6=postf(7,6)
pstf7=postf(7,7)
pstf8=postf(7,8)
pstf9=postf(7,9)
pstf10=postf(7,10)
pstf11=postf(7,11)
pstf12=postf(7,12)
pstf13=postf(7,13)
pstf14=postf(7,14)
pstf15=postf(7,15)
pstf16=postf(7,16)
pstf17=postf(7,17)
pstf18=postf(7,18)
dmy=postf(13)
cimfil/off

 

 

И вот кусок lst в котором получаются те красные строки:

 

-101 PSTF1 SCALAR 40.00000
-102 PSTF2 SCALAR 3000.00000
-103 PSTF3 SCALAR 2.00000
-104 PSTF4 SCALAR .00000
-105 PSTF5 SCALAR 4.00000
-106 PSTF6 SCALAR 9.00000
-107 PSTF7 SCALAR .00000
-108 PSTF8 SCALAR .00000
-109 PSTF9 SCALAR .00000
-110 PSTF10 SCALAR .00000
-111 PSTF11 SCALAR .00000
-112 PSTF12 SCALAR .00000
-113 PSTF13 SCALAR .00000
-114 PSTF14 SCALAR -1.00000
-115 PSTF15 SCALAR 20.00000
-116>ARCDAT/0,0,0,0,0,-1,20
-116 DMY SCALAR .00000
41>ARCSLP/ON,-1,3.141593
-120 PSTF1 SCALAR 42.00000
-121 PSTF2 SCALAR 5000.00000
-122 PSTF3 SCALAR 5.00000
-123 PSTF4 SCALAR .00000
-124 PSTF5 SCALAR .00000
-125 PSTF6 SCALAR 19.99600
-126 PSTF7 SCALAR -.39998
-127 PSTF8 SCALAR .00000
-128 PSTF9 SCALAR 19.98400
-129 PSTF10 SCALAR -.79979
-130 PSTF11 SCALAR .00000
-131 PSTF12 SCALAR 19.96401
-132 PSTF13 SCALAR -1.19929
-133 PSTF14 SCALAR .00000
-134 PSTF15 SCALAR 19.93603
-135 PSTF16 SCALAR -1.59830
-136 PSTF17 SCALAR .00000
-137 PSTF18 SCALAR 19.90008
-138>GOTO /-.584124,-19.991468,0
-138 44 NN21 G2 X-20 Y0 Z-0.5 $ -20 .000 .000 350 6000
-138 DMY SCALAR .00000
44>ARCSLP/OFF

 

Единственное, что понял - это то, что в GOTO выводится куча координат точек окружности, которые выводятся, если отключить спиральную интерполяцию в посте в закладке Motion - Circular - ARCSLP

 

Как же это всё работает-то? :confused_1:

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Доброго времени, подскажите пожалуйста может кто Fil шаманил что-бы в УП после указания РИ писал комментарий из параметров РИ длина инструмента и тд.

Таблицы карты наладки сделал, а Fil не знаком.

интересует такой вариант 

 

N8 T1 M06  ("TOOL_COMMENT"  L= "LENGTH")

 

N8 T1 M06  (SVERLO D2.5 L= 100) 

Ссылка на сообщение
Поделиться на других сайтах

http://support.ptc.com/cs/cs_24/howto/ncgp4903/ncgp4903.htm      Здесь найдете примеры

 

типа такого:

CIMFIL/ON,PPRINT
$$ Macro to store the tool name in a variable
$$ to re-issue with the tool change
TXT=TEXT/CLW                    $$ Text of message
TEST=TEXT/'TOOL NAME'       $$ Text to test for
OKCOM=INDXF(TXT,TEST)
IF (OKCOM.NE.0) THEN
  $$ This is a tool comment
  MESS=TEXT/OMIT,TXT,1           $$ Omit trailing blank
  COL=TEXT/':'
  COLPOS=INDXF(MESS,COL)          $$ position of : in MESS
  LEN=CANF(MESS,1)              $$ number of char in MESS
  NMESS=TEXT/RANGE,MESS,COLPOS+1,LEN    $$ Extract from : to end
ELSE
  DMY=POSTF(13) $$ Process
ENDIF
CIMFIL/OFF
 
 
CIMFIL/ON,LOADTL
IF (OKCOM.EQ.0) THEN
  DMY=POSTF(13) $$ Process
ELSE
  $$ Tool name programmed
  XX=POSTF(2,1,1867,1) $$ no tape output
  DMY=POSTF(13) $$ process tool change
  TNUM=POSTF(7,4)       $$ Tool number
  XX=POSTF(2,1,1867,0) $$ re-activate tape output\
  INSERT/'T',TNUM,'M6(',NMESS,')$'
ENDIF
CIMFIL/OFF
Ссылка на сообщение
Поделиться на других сайтах

Доброго времени, подскажите пожалуйста может кто Fil шаманил что-бы в УП после указания РИ писал комментарий из параметров РИ длина инструмента и тд.

Таблицы карты наладки сделал, а Fil не знаком.

интересует такой вариант 

 

N8 T1 M06  ("TOOL_COMMENT"  L= "LENGTH")

 

N8 T1 M06  (SVERLO D2.5 L= 100) 

 

Настройка производства -> настроить CL  ->  PPRINT  -> создать 

 

Откроется окно, ставишь YES перед нужными параметрами и они будут выводиться в УП. 

Если они отсутствуют в данном инструменте- то выводиться не будут. 

Там много всего, можно поэксперементировать и добиться желаемого. Можно всю таблицу инструмента выводить вначале УП.

Так же его (PPRINT)  можно сохранить. Сохранится он по умолчанию в рабочую папку, а далее его можно переместить в папку с параметрами для обработки и подгружать оттуда в старые обработки. 

Ну и чтобы в новых обработках по-умолчанию уже все было, надо в шаблоне PPRINT тоже подгрузить. 

Ссылка на сообщение
Поделиться на других сайтах

 

 

http://support.ptc.c...03/ncgp4903.htm      Здесь найдете примеры

туда доступа нет к сожалению

 

 

 

Настройка производства -> настроить CL  ->  PPRINT  -> создать

хороший вариант

 

 

спасибо 

Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...

Задам вопрос сюда. Каким образом преобразовываются координаты i, j, k из "GOTO/ x, y, z, i, j, k" в углы поворотных осей. Я смотрю что угол по оси k соответствует углу поворота оси А для головы с осями AC. Где про это почитать?

Изменено пользователем fangelion
Ссылка на сообщение
Поделиться на других сайтах

ijk - это не углы, а проекции оси инструмента единичной длины на оси X,Y,Z. Преобразовываются в зависимости от того, какие выбраны настройки кинематика станка. Если чисто математически, то тоже совсем просто зная кинематику станка с помощью геометрии-тригонометрии вычислить углы, на которые необходимо повернуть оси станка, чтобы инструмент стал вдоль заданного с помощью IJK направления.

Ссылка на сообщение
Поделиться на других сайтах

ijk - это не углы, а проекции оси инструмента единичной длины на оси X,Y,Z. Преобразовываются в зависимости от того, какие выбраны настройки кинематика станка. Если чисто математически, то тоже совсем просто зная кинематику станка с помощью геометрии-тригонометрии вычислить углы, на которые необходимо повернуть оси станка, чтобы инструмент стал вдоль заданного с помощью IJK направления.

ну я не совсем идиот, прочитал в справочнике про GOTO. И что такое вектор тоже вкурсе. Вопрос слегка в другом был. Кстати, система координат станка всегда Z вверх, а у вектора Z вниз, точнее проекция k. И тут возникает вопрос в расположении остальных осей. Хотя за пару-тройку экспериментов это выяснится, но меня уже задолбал путь научного тыка. Уже третью неделю тыкаюсь. По fill конечно больше написано, чем по gui g-post, но все равно маловато.

Изменено пользователем fangelion
Ссылка на сообщение
Поделиться на других сайтах

Все. я вспомнил что мне напоминает это все дело. Это же полярная система координат. Теперь у меня мозги повернулись в нужную сторону.

Ссылка на сообщение
Поделиться на других сайтах

...но меня уже задолбал путь научного тыка. Уже третью неделю тыкаюсь. ...

Пффф.... уже скоро год как я научно тыкаю в g-post и fil :doh: и ничо... зато есть рабочие 5х посты :rolleyes:

А какая связь полярной системы и ijk? :g:

Ссылка на сообщение
Поделиться на других сайтах

Кстати, а есть чем дебажить fill? А то у меня код то отрабатывает, то не отрабатывает, и не понятно почему. Вроде все правильно написано, и в lst ничего не отображается

А какая связь полярной системы и ijk? :g:

Ну голова head-head представляет собой вектор в полярной системе координат, который задается длиной и двумя углами.

Ссылка на сообщение
Поделиться на других сайтах
Получение координат   

 

XPBPR=POSTF(1,3,344) $$ Текущие станочные координаты каждого GOTO

YPBPR=POSTF(1,3,345)

ZPBPR=POSTF(1,3,346)

APBPR=POSTF(1,3,347)

BPBPR=POSTF(1,3,348)

CPBPR=POSTF(1,3,349)

Ссылка на сообщение
Поделиться на других сайтах

Получение координат   

 

XPBPR=POSTF(1,3,344) $$ Текущие станочные координаты каждого GOTO

YPBPR=POSTF(1,3,345)

ZPBPR=POSTF(1,3,346)

APBPR=POSTF(1,3,347)

BPBPR=POSTF(1,3,348)

CPBPR=POSTF(1,3,349)

Ну у меня несколько по иному

CIMFIL/ON,GOTO
   MULMOD = POSTF(1,1,1989)       $$ MULTAX MODE (3-NON MULT; 6-MULT)
   IF (MULMOD.EQ.6) THEN     $$ Режим MULTAX
            MX=POSTF(7,6)
            MY=POSTF(7,7)
            MZ=POSTF(7,8)
            MI=POSTF(7,9)
            MJ=POSTF(7,10)
            MK=POSTF(7,11)
            MB=ACOSF(MK)
            MC=ACOSF(MJ)
Ссылка на сообщение
Поделиться на других сайтах

POSTF(7,xxxx) - вычитывает непосредственно из текущей строки CL файла

POSTF(1,n,xxxx) - выдает значение переменных поста и т.д.

в моем примере получаем пересчитанные согласно настроек постпроцессора координаты.

Их можно проанализировать перед выводом в программу и принять решение. 

Ссылка на сообщение
Поделиться на других сайтах

Кстати, а есть чем дебажить fill? А то у меня код то отрабатывает, то не отрабатывает, и не понятно почему. Вроде все правильно написано, и в lst ничего не отображается

 

FIL дебажится через lst. Других вариантов нет. И что, в lst совсем пусто??

 

 

MB=ACOSF(MK)

MC=ACOSF(MJ)

после этого еще и проверять надо в какой квадрант этот косинус "повернуть".

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...