dutiful 4 Опубликовано: 3 июня 2015 Жалоба Рассказать Опубликовано: 3 июня 2015 (изменено) Добрый день. При постпроцессировании токарно-фрезерной обработки с постоянно меняющимся вектором инструмента возникла следующая проблема: при обработке постпроцессором .acl файла, в .lst файл координаты передаются с 5ю знаками после запятой, а этого не хватает) хотелось бы 10, как и в cl файле. Никто не сталкивался с подобной проблемой? Полазил в инструкция по fil и gpost ответа не нашел.. Изменено 3 июня 2015 пользователем dutiful Цитата Ссылка на сообщение Поделиться на других сайтах
dutiful 4 Опубликовано: 4 июня 2015 Жалоба Рассказать Опубликовано: 4 июня 2015 По каким параметрам в таком случае определить, какого вида обработка, чтобы перед многоосевой вставлять дополнительные необходимые кадры? И еще один вопрос: 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) ... Цитата Ссылка на сообщение Поделиться на других сайтах
LxCoder 36 Опубликовано: 14 июня 2015 Жалоба Рассказать Опубликовано: 14 июня 2015 По поводу определения вида обработки, пробуйте следующее: (прописывается в секцию 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 обработку? Есть, конечно, и более простые и надежные способы. Цитата Ссылка на сообщение Поделиться на других сайтах
dutiful 4 Опубликовано: 15 июня 2015 Жалоба Рассказать Опубликовано: 15 июня 2015 Красивый огород... Но как быть, например, с 5-ти осевым сверлением, где вектор инструмента меняется для каждого отверстия... И никаких /END/- ов там нет... Я так понимаю вы хотите сделать пост, который "хавал" бы и непрерывку и 3+2 обработку? Есть, конечно, и более простые и надежные способы. 5ах сверление вообще отдельный случай. Пока не решил проблему с ним. Более простые, это 2 поста?) или Сшить их? Цитата Ссылка на сообщение Поделиться на других сайтах
LxCoder 36 Опубликовано: 22 июня 2015 Жалоба Рассказать Опубликовано: 22 июня 2015 Все просто как апельсин. Если нет признака в системе, можно попросить пользователя обозначать непрерывную 5-ти осевую обработку какой-либо строкой или параметром. например в названии сиквенса прописать строку "_5AXIS". Обрабатывать такие вещи очень просто, меняя стратегию обработки в зависимости от наличия или отсутствия данной строки в названии сиквенса. Таким образом, ответственность за определение типа обработки лежит на пользователе. Работает изумительно, и двух постов не надо. Цитата Ссылка на сообщение Поделиться на других сайтах
DJ Astro 59 Опубликовано: 22 июня 2015 Автор Жалоба Рассказать Опубликовано: 22 июня 2015 С 5х вроде как-то разобрался, заработало Заморочился со спиральной интерполяцией . И снова завис... В ncl все красиво: команда CIRCLE с координатами центра дуги и затем GOTO с координатами конечной точки дуги. Если Z в этих двух командах разные - значит выводим спиральку, вроде всё просто. Как только этот ncl попадает в G-post - начинается что-то непонятное: к примеру оборот на 180 по часовой с заглублением 0.5 ncl: GOTO / 20.00000, 0.00000, 0.00000CIRCLE / 0.00000, 0.00000, 0.00000, $0.0000000000, 0.0000000000, -1.0000000000, 20.00000GOTO / -20.00000, 0.00000, -0.50000 acl: GOTO / 20.00000, 0.00000, 0.00000REMARK CIRIJK=0.0000000000, 0.0000000000, -1.0000000000ARCDAT / 0.00000, 0.00000, 0.00000, $0.0000000000, 0.0000000000, -1.0000000000, 20.00000ARCMOV/ CLW, -20.00000, 0.00000, -0.5000,0GOTO / -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,circlepstf1=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/offcimfil/on,gotopstf1=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 .0000041>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 .0000044>ARCSLP/OFF Единственное, что понял - это то, что в GOTO выводится куча координат точек окружности, которые выводятся, если отключить спиральную интерполяцию в посте в закладке Motion - Circular - ARCSLP Как же это всё работает-то? Цитата Ссылка на сообщение Поделиться на других сайтах
dimeil 18 Опубликовано: 4 августа 2015 Жалоба Рассказать Опубликовано: 4 августа 2015 Доброго времени, подскажите пожалуйста может кто Fil шаманил что-бы в УП после указания РИ писал комментарий из параметров РИ длина инструмента и тд. Таблицы карты наладки сделал, а Fil не знаком. интересует такой вариант N8 T1 M06 ("TOOL_COMMENT" L= "LENGTH") N8 T1 M06 (SVERLO D2.5 L= 100) Цитата Ссылка на сообщение Поделиться на других сайтах
GARRY 10 Опубликовано: 5 августа 2015 Жалоба Рассказать Опубликовано: 5 августа 2015 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 Цитата Ссылка на сообщение Поделиться на других сайтах
fenics555 218 Опубликовано: 12 августа 2015 Жалоба Рассказать Опубликовано: 12 августа 2015 Доброго времени, подскажите пожалуйста может кто Fil шаманил что-бы в УП после указания РИ писал комментарий из параметров РИ длина инструмента и тд. Таблицы карты наладки сделал, а Fil не знаком. интересует такой вариант N8 T1 M06 ("TOOL_COMMENT" L= "LENGTH") N8 T1 M06 (SVERLO D2.5 L= 100) Настройка производства -> настроить CL -> PPRINT -> создать Откроется окно, ставишь YES перед нужными параметрами и они будут выводиться в УП. Если они отсутствуют в данном инструменте- то выводиться не будут. Там много всего, можно поэксперементировать и добиться желаемого. Можно всю таблицу инструмента выводить вначале УП. Так же его (PPRINT) можно сохранить. Сохранится он по умолчанию в рабочую папку, а далее его можно переместить в папку с параметрами для обработки и подгружать оттуда в старые обработки. Ну и чтобы в новых обработках по-умолчанию уже все было, надо в шаблоне PPRINT тоже подгрузить. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
dimeil 18 Опубликовано: 19 августа 2015 Жалоба Рассказать Опубликовано: 19 августа 2015 http://support.ptc.c...03/ncgp4903.htm Здесь найдете примеры туда доступа нет к сожалению Настройка производства -> настроить CL -> PPRINT -> создать хороший вариант спасибо Цитата Ссылка на сообщение Поделиться на других сайтах
fangelion 0 Опубликовано: 10 сентября 2015 Жалоба Рассказать Опубликовано: 10 сентября 2015 (изменено) Задам вопрос сюда. Каким образом преобразовываются координаты i, j, k из "GOTO/ x, y, z, i, j, k" в углы поворотных осей. Я смотрю что угол по оси k соответствует углу поворота оси А для головы с осями AC. Где про это почитать? Изменено 10 сентября 2015 пользователем fangelion Цитата Ссылка на сообщение Поделиться на других сайтах
DJ Astro 59 Опубликовано: 10 сентября 2015 Автор Жалоба Рассказать Опубликовано: 10 сентября 2015 ijk - это не углы, а проекции оси инструмента единичной длины на оси X,Y,Z. Преобразовываются в зависимости от того, какие выбраны настройки кинематика станка. Если чисто математически, то тоже совсем просто зная кинематику станка с помощью геометрии-тригонометрии вычислить углы, на которые необходимо повернуть оси станка, чтобы инструмент стал вдоль заданного с помощью IJK направления. Цитата Ссылка на сообщение Поделиться на других сайтах
fangelion 0 Опубликовано: 11 сентября 2015 Жалоба Рассказать Опубликовано: 11 сентября 2015 (изменено) ijk - это не углы, а проекции оси инструмента единичной длины на оси X,Y,Z. Преобразовываются в зависимости от того, какие выбраны настройки кинематика станка. Если чисто математически, то тоже совсем просто зная кинематику станка с помощью геометрии-тригонометрии вычислить углы, на которые необходимо повернуть оси станка, чтобы инструмент стал вдоль заданного с помощью IJK направления. ну я не совсем идиот, прочитал в справочнике про GOTO. И что такое вектор тоже вкурсе. Вопрос слегка в другом был. Кстати, система координат станка всегда Z вверх, а у вектора Z вниз, точнее проекция k. И тут возникает вопрос в расположении остальных осей. Хотя за пару-тройку экспериментов это выяснится, но меня уже задолбал путь научного тыка. Уже третью неделю тыкаюсь. По fill конечно больше написано, чем по gui g-post, но все равно маловато. Изменено 11 сентября 2015 пользователем fangelion Цитата Ссылка на сообщение Поделиться на других сайтах
fangelion 0 Опубликовано: 11 сентября 2015 Жалоба Рассказать Опубликовано: 11 сентября 2015 Все. я вспомнил что мне напоминает это все дело. Это же полярная система координат. Теперь у меня мозги повернулись в нужную сторону. Цитата Ссылка на сообщение Поделиться на других сайтах
DJ Astro 59 Опубликовано: 11 сентября 2015 Автор Жалоба Рассказать Опубликовано: 11 сентября 2015 ...но меня уже задолбал путь научного тыка. Уже третью неделю тыкаюсь. ... Пффф.... уже скоро год как я научно тыкаю в g-post и fil и ничо... зато есть рабочие 5х посты А какая связь полярной системы и ijk? Цитата Ссылка на сообщение Поделиться на других сайтах
fangelion 0 Опубликовано: 11 сентября 2015 Жалоба Рассказать Опубликовано: 11 сентября 2015 Кстати, а есть чем дебажить fill? А то у меня код то отрабатывает, то не отрабатывает, и не понятно почему. Вроде все правильно написано, и в lst ничего не отображается А какая связь полярной системы и ijk? Ну голова head-head представляет собой вектор в полярной системе координат, который задается длиной и двумя углами. Цитата Ссылка на сообщение Поделиться на других сайтах
zeppelin 68 Опубликовано: 11 сентября 2015 Жалоба Рассказать Опубликовано: 11 сентября 2015 Получение координат 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) Цитата Ссылка на сообщение Поделиться на других сайтах
fangelion 0 Опубликовано: 11 сентября 2015 Жалоба Рассказать Опубликовано: 11 сентября 2015 Получение координат 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) Цитата Ссылка на сообщение Поделиться на других сайтах
zeppelin 68 Опубликовано: 11 сентября 2015 Жалоба Рассказать Опубликовано: 11 сентября 2015 POSTF(7,xxxx) - вычитывает непосредственно из текущей строки CL файла POSTF(1,n,xxxx) - выдает значение переменных поста и т.д. в моем примере получаем пересчитанные согласно настроек постпроцессора координаты. Их можно проанализировать перед выводом в программу и принять решение. Цитата Ссылка на сообщение Поделиться на других сайтах
DJ Astro 59 Опубликовано: 11 сентября 2015 Автор Жалоба Рассказать Опубликовано: 11 сентября 2015 Кстати, а есть чем дебажить fill? А то у меня код то отрабатывает, то не отрабатывает, и не понятно почему. Вроде все правильно написано, и в lst ничего не отображается FIL дебажится через lst. Других вариантов нет. И что, в lst совсем пусто?? MB=ACOSF(MK)MC=ACOSF(MJ) после этого еще и проверять надо в какой квадрант этот косинус "повернуть". Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.