DJ Astro

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

389 posts in this topic

ID: 81   Posted (edited)

Добрый день.

 

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

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

 

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

Edited by dutiful

Share this post


Link to post
Share on other sites


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

 

И еще один вопрос: 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)
...

Share this post


Link to post
Share on other sites

 

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

(прописывается в секцию 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 обработку? Есть, конечно, и более простые и надежные способы.

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 С 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:

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

 

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

 

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

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

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

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

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

1 person likes this

Share this post


Link to post
Share on other sites

 

 

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

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

 

 

 

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

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

 

 

спасибо 

Share this post


Link to post
Share on other sites

ID: 91   Posted (edited)

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

Edited by fangelion

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

ID: 93   Posted (edited)

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

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

Edited by fangelion

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
Получение координат   

 

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)

Share this post


Link to post
Share on other sites

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

 

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)

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

 

MB=ACOSF(MK)

MC=ACOSF(MJ)

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

Share this post


Link to post
Share on other sites

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

Судя по экспериментам, не нужно. Даже знак поворота сохраняется.

Share this post


Link to post
Share on other sites

Вопрос программистам...  :lamo:

Можно ли создать bat-файл, с помощью которого можно было бы скопировать две строки текста из одного текстового файла во вторую строку другого текстового файла?

Хочу попытаться немного оптимизировать создание BLK FORM. Чтобы не прогонять вначале всю программу на поиск минимальных и максимальных координат по всем осям, а в конце взять значения из переменных G-post'a, создать из них BLK FORM с выводом в отдельный файл, и из этого файла в самом конце работы G-post'a скопировать текст в основную программу во вторую строку.

Share this post


Link to post
Share on other sites

С помощью команд FILEF формируете bat-файл и формируете строку типа

T1=TEXT/ 'RBATFILE имя.bat'

RSLT=SPWNF(T1)

 

Посмотрите в документации

SPWNF запускает подпроцесс. Текстовая строка t1 содержит командную строку, которая передается в операционную систему.

rslt = SPWNF(t1, [t2])

rslt:       переменная

t1:         Текстовая строка

t2:          0=обрабатывает  команду после FINI. Это позволит управлять выходными файлами из постпроцессора после завершения.

                1=ожидает окончания процесса для продолжения постпроцессирования. (По умолчанию)

                                                        2=не ожидает окончания запущенного процесса для продолжения постпроцессирования

Share this post


Link to post
Share on other sites

Сделал-таки....  :smile:

шапку программы выводим в отдельный файл filename_1.h. Остальную программу выводим в filename_3.h. В конце считываем переменные 898(XMIN),899(YMIN),900(ZMIN),904(XMAX),905(YMAX),906(ZMAX) из раздела DBLCOM и формируем из них BLK FORM с выводом в файл filename_2.h.

GARRY, спасибо! Вопрос был не как создать батник, а что в него прописать  :rolleyes: ... и оказалось всё очень просто:

copy <filename_1.h>+<filename_2.h>+<filename_3.h> <filename.h>

где <filename.h> - имя конечного файла, куда будут скопированы 3 исходных части

 

Share this post


Link to post
Share on other sites

Коллеги, натолкните на мысль.

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

 

Для реализации этого добавил в FIL следующую процедуру:

CIMFIL/ON,SPINDL
SPTYP=POSTF(7,4)$$4th word
IF (SPTYP.EQ.ICODEF(PARLEL)) THEN
  PARTYP=POSTF(7,5)
IF (PARTYP.EQ.ICODEF(ZAXIS)) THEN
DMY=POSTF(2,1,4619,0)
DMY=POSTF(2,1,2086,6)
$$DMY=POSTF(2,1,4609,0)
ELSE
DMY=POSTF(2,1,2086,4)
DMY=POSTF(2,1,4619,1)
ENDIF
ELSE
XXX=POSTF(13)
ENDIF
CIMFIL/OFF
Эта процедура читает строку SPNDL/PARLEL и в зависимости от аргумента должна изменять тип постпроцессора, т.е. вносить изменения в INTCOM 4619 и 2086, которые регулируют тип постпроцессора, но ничего не изменяется. 
Довольно путано получилось объяснить, но если кто-то работал в FIL то поймет, я думаю. Что я делаю не так? 
 

Share this post


Link to post
Share on other sites

Bastion, есть еще целая куча переменных 1993, 4609-4622, которые, возможно, как-то влияют на работу mill-turn поста. Надо экспериментировать...

1 person likes this

Share this post


Link to post
Share on other sites

Спасибо. вроде получилось, хотя еще сам не понял как )))

1 person likes this

Share this post


Link to post
Share on other sites

Спасибо. вроде получилось, хотя еще сам не понял как )))

А полярочкой воспользоваться нет желания?

"Токарно-фрезерный станок" - это в смысле с приводным инструментом в револьвере или со фрезерным шпинделем с токарной функцией, наподобие Mazak Integrex 200 или DMG CTX Beta? Это я к тому, что если оси Y вообще на станке нет, так и не зачем ее определять в MCD таблице... Тогда у вас будет то, что вы хотите - вся программа будет в формате XZC. И никакого кода в FIL обычно не требуется...

Если же все таки ось Y присутсвует - можно тупо отключить регистр Y при SPINDL/PARLEL,ZAXIS (естественно табл. соответствия символов кодам должна быть определена в начале, например - А=1; B=2; ..)

 

Что-то типа: 

CIMFIL/ON,MACHIN

   DMY=POSTF(13)

   ...

   YST=POSTF(1,1,Y) $$ считываем данные об оси Y из MCD таблицы

CIMFIL/OFF

 

CIMFIL/AT,SPINDL,PARLEL,ZAXIS

  DMY=POSTF(2,1,Y,53)  $$ выкл. ось Y 

CIMFIL/OFF

 

CIMFIL/AT,SPINDL,PARLEL,XAXIS

  DMY=POSTF(2,1,Y,YST)  $$ вкл. ось Y обратно

CIMFIL/OFF

1 person likes this

Share this post


Link to post
Share on other sites

А полярочкой воспользоваться нет желания?

"Токарно-фрезерный станок" - это в смысле с приводным инструментом в револьвере или со фрезерным шпинделем с токарной функцией, наподобие Mazak Integrex 200 или DMG CTX Beta? Это я к тому, что если оси Y вообще на станке нет, так и не зачем ее определять в MCD таблице... Тогда у вас будет то, что вы хотите - вся программа будет в формате XZC. И никакого кода в FIL обычно не требуется...

Если же все таки ось Y присутсвует - можно тупо отключить регистр Y при SPINDL/PARLEL,ZAXIS (естественно табл. соответствия символов кодам должна быть определена в начале, например - А=1; B=2; ..)

 

Что-то типа: 

CIMFIL/ON,MACHIN

   DMY=POSTF(13)

   ...

   YST=POSTF(1,1,Y) $$ считываем данные об оси Y из MCD таблицы

CIMFIL/OFF

 

CIMFIL/AT,SPINDL,PARLEL,ZAXIS

  DMY=POSTF(2,1,Y,53)  $$ выкл. ось Y 

CIMFIL/OFF

 

CIMFIL/AT,SPINDL,PARLEL,XAXIS

  DMY=POSTF(2,1,Y,YST)  $$ вкл. ось Y обратно

CIMFIL/OFF

Спасибо за интересное предложение, но реализовать его не так просто. Дело в том, что когда я отключил вывод регистра у , программа не пересчиталась в формат хzc , а просто перестала печатать у. Т.е. было х21.у18.5 , стало х21. И все

Share this post


Link to post
Share on other sites

Так я ж и спрашиваю, какой станок-то? Токарный с револьвером и приводными инструментами или же с поворотным токарно-фрезерным шпинделем в котором устанавливается 1 инструмент? Посмотрите предыдущее сообщение. В зависимости от этого и нужно выбирать тип станка и в посте - либо просто Live Tooling, либо писать замерженый пост из двух (токарного и фрезерного) модулей. Это важно.

Для последнего типа я включаю режим ХС следующим образом (опять же если есть полярная обработка нужно забыть про тип XZC):

DMY=POSTF(2,1,2089,6) $$ меняем тип станка на Live Tooling

DMY=POSTF(2,1,2456,1) $$ включаем радиальную ось X

DMY=POSTF(2,1,2457,6) $$ ось С - основная ось поворота

Станок выводит все в ZXC координатах.

Отключение режима - восстановление прежних значений для этих переменных. Естессно, их перед этим лучше куда-то запомнить :)

Но лучше полярки эта приблуда "ZXC" все равно не будет - в полярке и корректора работают, и циклы, и круговая интерполяция на кучу сегментных перемещений не раскладывается - вощем один кайф, но далеко не на всех станках она есть.

1 person likes this

Share this post


Link to post
Share on other sites

Так я ж и спрашиваю, какой станок-то? Токарный с револьвером и приводными инструментами или же с поворотным токарно-фрезерным шпинделем в котором устанавливается 1 инструмент? Посмотрите предыдущее сообщение. В зависимости от этого и нужно выбирать тип станка и в посте - либо просто Live Tooling, либо писать замерженый пост из двух (токарного и фрезерного) модулей. Это важно.

Для последнего типа я включаю режим ХС следующим образом (опять же если есть полярная обработка нужно забыть про тип XZC):

DMY=POSTF(2,1,2089,6) $$ меняем тип станка на Live Tooling

DMY=POSTF(2,1,2456,1) $$ включаем радиальную ось X

DMY=POSTF(2,1,2457,6) $$ ось С - основная ось поворота

Станок выводит все в ZXC координатах.

Отключение режима - восстановление прежних значений для этих переменных. Естессно, их перед этим лучше куда-то запомнить :)

Но лучше полярки эта приблуда "ZXC" все равно не будет - в полярке и корректора работают, и циклы, и круговая интерполяция на кучу сегментных перемещений не раскладывается - вощем один кайф, но далеко не на всех станках она есть.

Станок  DMG CTX Beta TC с токарно-фрезерным шпинделем. Оси Y присутствует.В постпроцессоре выбираю 5-Axis Rotary Table/Rotary Head. Ставлю галку Mill-Turn Mode is available. Далее в FIL по вашему совету просто отключал ось Y (если фрезеруем на торце). 

CIMFIL/ON,MACHIN

   DMY=POSTF(13)

   ...

   YST=POSTF(1,1,Y) $$ считываем данные об оси Y из MCD таблицы

CIMFIL/OFF

 

CIMFIL/AT,SPINDL,PARLEL,ZAXIS

  DMY=POSTF(2,1,Y,53)  $$ выкл. ось Y 

CIMFIL/OFF

 

CIMFIL/AT,SPINDL,PARLEL,XAXIS

  DMY=POSTF(2,1,Y,YST)  $$ вкл. ось Y обратно

CIMFIL/OFF

 

И как я уже говорил - просто перестает выводить Y, а не переключался в XZC.

 

Настроил режим XZC так:

CIMFIL/ON,SPINDL
SPTYP=POSTF(7,4)$$4th word
IF (SPTYP.EQ.ICODEF(OFF)) THEN
X1=TEXT/'M5';X2=TEXT/'M1=5';REPLAC/X1,X2
  XX=POSTF(13) $$ Process now
ELSE
IF (SPTYP.EQ.ICODEF(PARLEL)) THEN
  $$XX=POSTF(13) $$ Process now
PARTYP=POSTF(7,5)
IF (PARTYP.EQ.ICODEF(ZAXIS)) THEN
INSERT/';ZAXIS$'
DMY=POSTF(2,1,2089,6) 
DMY=POSTF(2,1,2053,6) 
DMY=POSTF(2,1,2052,1) 
ELSE
INSERT/';XAXIS$'
DMY=POSTF(2,1,2089,4)
ENDIF
ELSE
IF (SPTYP.EQ.ICODEF(RPM)) THEN
X1=TEXT/'M3';X2=TEXT/'M1=3';REPLAC/X1,X2
DMY=POSTF(13)
 
ELSE
DMY=POSTF(13)
ENDIF
ENDIF
ENDIF

 

CIMFIL/OFF

 

Остальные параметры переключать не обязательно, поскольку они по умолчанию выставляются правильные.

Share this post


Link to post
Share on other sites

ID: 112   Posted (edited)

LxCoder, заметьте, что моем варианте G-POST (V64 в CREO 2, по-моему) за включение радиальной оси X и ось С - основная ось поворота, отвечают переменные 2052 и 2053

 

По поводу полярной обработки не поясните подробнее что Вы имеете ввиду. Как ее включить в G-Post? 

 

И, если не секрет, то как же нужно настроить пост, чтобы отключение оси Y приводило к пересчету программы в XZC? 

Edited by Bastion

Share this post


Link to post
Share on other sites

Здравствуйте.

А не поделятся ли уважаемые профессионалы постом под sinumerik 810d на ма-а-а-аленький станочек Emcomill E600. Или наVMC 300. Или вообще хоть на что то четырёх координатное с поворотной осью А :)

А то программы нужно делать. ))

Мне бы хоть что то похоже - дальше я уж подправлю )

Share this post


Link to post
Share on other sites

F1del чем 810d отличается от 840d? Если что могу постом для 840d поделиться.

Share this post


Link to post
Share on other sites

Да, пожалуйста!

Поделитесь. :)

У вас какой станок?

Share this post


Link to post
Share on other sites

F1del, написал.

Share this post


Link to post
Share on other sites

Снова накопился один вопрос... :)

Как можно оптимизировать распознавание 5-тиосевой обработки? 

Сейчас сделано так: сканирование вперёд и сравнение IJK текущего кадра c IJK из первого кадра каждого перехода. Если меняется - значит 5х обработка. Но столкнулся с такой проблемой - не всегда в пределах ограниченной области сканирования удается определить изменения вектора инструмента, а при увеличении области, например до 500 кадров (что вроде бы не так уж и много?) - начинаются довольно ощутимые тормоза при работе поста. 

Можно, конечно, руками дописывать в CL перед нужным переходом определенные команды, по которым будет распознаваться тот или иной вид обработки, но хочется исключить "человеческий фактор" (по-любому ведь забудешь прописывать всё это...).

Share this post


Link to post
Share on other sites

Bastion, я про полярку: прочитайте в руководстве на Вашу стойку (я так подозреваю, что у вас Sinumerik 840d или что-то вроде того)  - про режим TRANSMIT_S4 - это гораздо лучше любых ZXC


DJ_Astro - про 5-ти осевую.

Распознать 5-ти осевую без спец команд - это великий геморрой (и стоит ли он того?). Я например, в своих постах различаю название сиквенсов. Если в названии сиквенсов есть какая-либо сттрока, например, "_5AXIS" - значит, обрабатывать как 5-ти осевую. Нет - обычная 3+2. Это у меня непреложное правило - и на всем предприятии еще ни разу никто его не забыл. Так что - это дело привычки. Да и сами программы в дереве Creo становятся "читабельнее". Сразу видно, где есть 5-ти оска, а где ее нет. В вашем случае - весьма сомнительное удобство оборачивается еще и тем, что при переводе деталей 3+2 со станка, на котором есть непрерывка, на станок, на котором только 3+2, вам придется "залезать" в каждый шаг и смотреть, где, что и как обрабатывается, потому что, действительно, вспомнить порой способ обработки при большой номенклатуре деталей нереально.

1 person likes this

Share this post


Link to post
Share on other sites

В таблице производственного процесса есть столбец "Оси" в котором указано кол-во осей на каждый переход. Если бы этот параметр можно было бы вывести в CL - было бы вообще круто. Но не получается.

Если сохранить переход как шаблон в формате xml, то внутри можно найти вот такую строчку (для 5-осевой обработки):

 

<PRO_E_MFG_SEQ_NUM_AXES_OPT type="int">5</PRO_E_MFG_SEQ_NUM_AXES_OPT>. Т.е. по этому параметру ProE определяет, какой тип у данного перехода (3, 4, 5 осей).
Но как его вытащить в CL (и можно ли вообще?). Может как-то через уравнения?
 

Share this post


Link to post
Share on other sites

 

В таблице производственного процесса есть столбец "Оси" в котором указано кол-во осей на каждый переход. Если бы этот параметр можно было бы вывести в CL - было бы вообще круто. Но не получается.

Если сохранить переход как шаблон в формате xml, то внутри можно найти вот такую строчку (для 5-осевой обработки):

 

<PRO_E_MFG_SEQ_NUM_AXES_OPT type="int">5</PRO_E_MFG_SEQ_NUM_AXES_OPT>. Т.е. по этому параметру ProE определяет, какой тип у данного перехода (3, 4, 5 осей).
Но как его вытащить в CL (и можно ли вообще?). Может как-то через уравнения?
 

 

Завидую вашему упорству!... Нет такого способа. Если бы он был, о нем было бы известно. А пока, судя по моему опыту общения с другими разработчиками постов - люди либо используют 2 постпроцессора - один 3+2, другой чисто 5-ти осевой (что на мой взгляд вообще не красиво), либо же используют собственные команды распознавания. По другому определить количество используемых осей для отдельного сиквенса в Cl-файле если не невозможно, то ооочень геморно... Почему разработчики Creo не озаботились этой проблемой до сих пор - также не понятно, хотя вопрос, казалось бы на поверхности...

Я лично склоняюсь к PPRINT-командам и особым названиям сиквенсов, т.к. помимо простоты они несут в себе еще одну возможность - расширять функционал ProЕ/Creo (в некотором смысле он достаточно убогий - нет полноценной работы со щупами, нет нормальной работы на два канала, человеческой синхронизации и ожидания окончания обработке в одном из каналов, каких-то сервисных команд (типа скинуть заготовку, зажать заготовку, подать пруток - либо эти команды задаются посредством достаточно корявого меню CL-commands в AUXILIARY или в Trajectory). А ведь под них можно сочинить макрос с визуализацией и пользоваться вполне полноценно, если забыть про Creo-стандарты, что все должно быть через параметры, меню и выводиться в Cl-файл в виде стройной команды в кадре... Много чего можно выжать из Creo при таком подходе (если не все что угодно, то очень многое). 

Share this post


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.