NmmmEG

Доработка постпроцессора!

Доюрый день!!!

 

В спруткам имеется постпроцессор на ДМГ - Heidenhain (CNC Pilot 4290)_TurnMill, у нас имеются станки с такой же стойкой, сам код программы совпадает, но в программе которую выдает постпроцессор нехвает описание контура изделия, без которого станок не хочет принимать программу. Код который выдает постпроцессор выглядет следующим образом:

 

 

PROGRAMMKOPF [ PROGRAM HEAD]
#MASCHINE                CTX-310        [ MACHINE ]
#WERKSTUECK              DMG ПРОБА 2    [ WORKPIECE ]
#FIRMA                   VIMPEL         [ DEPT. ]
#AUTOR                   PG             [ AUTOR ]
#DATUM                   23.07.2015     [ DATE ]
#EINSPANNDURCHM          150            [ CLAMP. DIAM. ]
#AUSSPANNLAENGE          6              [ CLAMP. LENGTH ]
#SPANNDRUCK              25             [ CLAMP. PRESS. ]
#KOMMENTAR               DMG ПРОБА 2    [ COMMENT ]
#SYNCHRO                 0              [ SYNCHRO ]
#SCHLITTEN               $1             [ SLIDE ]


REVOLVER 1 [ TURRET ]
[ T   5 ID"New  l16, Ti1.98" ]


SPANNMITTEL 1


ROHTEIL [ BLANK ]
N   1 G20 X7.6 Z33.3 K23


BEARBEITUNG [ MACHINING ]
[ Tоkаrnyj kоntur ]
N   2 G14 Q0
N   3 T5 G96 S150 M3 G95 F0.5
N   4 G0 X4.6 Z0.7
N   5 G1 G42 X6 Z0 M108
N   6 G1 X7.2 Z-0.9
N   7 G1 Z-10.1
N   8 G1 G40 X8.8 Z-10.9
N   9 M5 M109
N  10 G14 Q0
N  11 G0

ENDE [ END ]

 

В данной программе присутствует описание заготовки Rohteil, что очень хорошо, и следом за заготовкой для станка должно быть описание контура детали "FERTIGTEIL [ FINISHED PART ]", которого как вы видите нет, в самом посте подпрограммы выдачи контура тоже нет и как я понимаю его необходимо дописать в виде подпрограммы или где то в командах!! подскажите как сделать этот контур с чего вообще начать??

 

 

Поделиться сообщением


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

Мне кажется в этой УП просто не хватает строчки   FERTIGTEIL [FINISHED PART], а описание образующего контура,  после FERTIGTEIL, не обязательно.
Другое дело если вы обрабатываете деталь циклом. Думаю, в этом случает постпроцессор отработает нормально и выведет этот контур в УП.
А пока попробуйте организовать вывод строки FERTIGTEIL [FINISHED PART] 
Скорее всего это делается в PPFUN командой    Output "FERTIGTEIL [FINISHED PART]"
В общем, в любом случае, сообщите что получилось, постараюсь помочь.

Поделиться сообщением


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

Да так и есть, нехватало строчки FERTIGTEIL [FINISHED PART], добавил вывод в постпроцессоре, пока все нормально. Спасибо!!))

Поделиться сообщением


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

Добрый день!

Вопрос по постпроцессору Морисеики!

При выполнении подряд 2 операций (2д контур) с одной осевой фрезой и используя ось С, постпроцессор на Мори (да и все остальные), к сожалению, после первой операции не возвращают ось в С=0 и имея поворотные преобразования, получается так что точка отсчета по оси С начинается (во второй операции) не в нуле и после включения G12 происходит смещение траектории обработки, подскажите как это можно исправить в постпроцессоре в каких командах!. Показал для наглядности в скриншоте:post-49150-0-72195700-1438145214_thumb.jpg

Изменено пользователем NmmmEG

Поделиться сообщением


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

Добрый день!

Вопрос по постпроцессору Морисеики!

При выполнении подряд 2 операций (2д контур) с одной осевой фрезой и используя ось С, постпроцессор на Мори (да и все остальные), к сожалению, после первой операции не возвращают ось в С=0 и имея поворотные преобразования, получается так что точка отсчета по оси С начинается (во второй операции) не в нуле и после включения G12 происходит смещение траектории обработки, подскажите как это можно исправить в постпроцессоре в каких командах!. Показал для наглядности в скриншоте:attachicon.gifВопрос.jpg

Может воспользоваться правилами подводов/отводов ? Например указать, что после отработки операции необходимо делать отвод (по умолчанию в станке прописан вроде как такой: X;Z; а потом дописать еще следом C0.

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

а можете Ваш проект приложить ? 

Поделиться сообщением


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

Заметил  что пост реализован так, что если в этих двух операциях были бы разные инструменты, то после первой операции ось С по умолчанию ушла бы в ноль, если один инструмент. то действительно приходится в правилах отвода, в первой операции, прописать С0, но на это, в принципе, можно закрыть глаза. Основная проблема в том, что G12 включается после того как ось С проворачивается в начало обработки и получается так, что начальное значение оси С станок принимает за ноль и происходит смещение. Для нормальной работы необходимо, чтобы G12 выводилось до того как ось С провернется в начало обработки, но как это сделать я пока не понял, дело в том что G12 выводится в команде Interp, а данная команда В СLDATA всегда идет после Multigoto.

post-49150-0-51486600-1438238174_thumb.jpg

Проект.zip

Поделиться сообщением


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

Установите галочку, как показано на рисунке. В результате в начале операции ось С принудительно выводится в ноль. А внутри полярной интерполяции (между G12 и G13) ускоренные перемещения интерполируются со скоростью перемещения 10000.
post-717-0-92220400-1438247068_thumb.png
 

Станок который вы используете с противошпинделем, а пост морисейки - без. Поэтому высылаю в личку пост где в Multigoto прописана ось С противошпинделя. Имейте ввиду на станке не проверялось, поэтому, если в УП что то не так сообщите, подправим или скажу что подправить. 


Насчет лички погорячился.  Сообщите куда можно выслать постпроцессор.

Поделиться сообщением


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

Установите галочку, как показано на рисунке. В результате в начале операции ось С принудительно выводится в ноль. А внутри полярной интерполяции (между G12 и G13) ускоренные перемещения интерполируются со скоростью перемещения 10000.

attachicon.gifРис1.png

 

Станок который вы используете с противошпинделем, а пост морисейки - без. Поэтому высылаю в личку пост где в Multigoto прописана ось С противошпинделя. Имейте ввиду на станке не проверялось, поэтому, если в УП что то не так сообщите, подправим или скажу что подправить. 

Насчет лички погорячился.  Сообщите куда можно выслать постпроцессор.

 

Почта: eppavel105@yandex.ru

Поделиться сообщением


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

Установите галочку, как показано на рисунке. В результате в начале операции ось С принудительно выводится в ноль. А внутри полярной интерполяции (между G12 и G13) ускоренные перемещения интерполируются со скоростью перемещения 10000.

attachicon.gifРис1.png

 

Станок который вы используете с противошпинделем, а пост морисейки - без. Поэтому высылаю в личку пост где в Multigoto прописана ось С противошпинделя. Имейте ввиду на станке не проверялось, поэтому, если в УП что то не так сообщите, подправим или скажу что подправить. 

Насчет лички погорячился.  Сообщите куда можно выслать постпроцессор.

 

Касаемо моего вопроса, добавление Оси С2 по большому счету ничего не изменило и для работы в противошпинделе тоже, так как помимо вывода С2 , нужен вывод соответствующих М-функций, которые не прописаны. Мой вопрос был не в выводе оси, с осями в постпроцессоре все нормально, проблема в том что G12.1 в операциях выводится после того как ось поворачивает шпиндель в начало обработки и в итоге G12 воспринимает угол на который повернулся шпиндель как ноль, и далее происходит смещение, показывал на скрине в сообщении выше. Мне надо сделать так, чтобы G12 выводилось в начале обработки до вывода каких либо значений оси С, но как это сделать я пока не пойму.

Поделиться сообщением


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

Заметил  что пост реализован так, что если в этих двух операциях были бы разные инструменты, то после первой операции ось С по умолчанию ушла бы в ноль, если один инструмент. то действительно приходится в правилах отвода, в первой операции, прописать С0, но на это, в принципе, можно закрыть глаза. Основная проблема в том, что G12 включается после того как ось С проворачивается в начало обработки и получается так, что начальное значение оси С станок принимает за ноль и происходит смещение. Для нормальной работы необходимо, чтобы G12 выводилось до того как ось С провернется в начало обработки, но как это сделать я пока не понял, дело в том что G12 выводится в команде Interp, а данная команда В СLDATA всегда идет после Multigoto.

Ведь при полярной интерполяции, ось Y меняется на C.  И вот так вот с бухты-барахты переставлять команду я бы не советовал.

Скорее всего, надо разделить начальную строку на части

 

т.е допустим сейчас выводится так...

G0X0.Y51.369Z-11.C115.444
Z20.375
G12.1
 
а надо проверить вот такую конструкцию..
G0Z-11.
C115.444
G12.1
G1X0.C51.369F10000.
Z20.375

 

Возможно смещение даже не столько из-за С, сколько из-за Y

Поделиться сообщением


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

Ведь при полярной интерполяции, ось Y меняется на C.  И вот так вот с бухты-барахты переставлять команду я бы не советовал.

Скорее всего, надо разделить начальную строку на части

 

т.е допустим сейчас выводится так...

G0X0.Y51.369Z-11.C115.444
Z20.375
G12.1
 
а надо проверить вот такую конструкцию..
G0Z-11.
C115.444
G12.1
G1X0.C51.369F10000.
Z20.375

 

Возможно смещение даже не столько из-за С, сколько из-за Y

 

Если перед G12.1 стоит ось С, то он ее будет принимать как точку отсчета, т.е. в нашем случае С115.444 после кадра G12.1 будет восприниматься станком как С0, что не совсем правильно...

Поделиться сообщением


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

Если перед G12.1 стоит ось С, то он ее будет принимать как точку отсчета, т.е. в нашем случае С115.444 после кадра G12.1 будет восприниматься станком как С0, что не совсем правильно...

да команды местами поменять - дело то житейское  :smile:

Изменено пользователем Dantist
1 пользователю понравилось это

Поделиться сообщением


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

да команды местами поменять - дело то житейское  :smile:

 

попробуй аккуратненько 

attachicon.gifMoriSeiki_TurnMill_experimenten.rar

 

Посмотрел пост, также выводит G12.1 после кадра с осью С.post-49150-0-52764400-1439188266.jpg

Поделиться сообщением


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

Посмотрел пост, также выводит G12.1 после кадра с осью С.attachicon.gifБезымянный.jpg

да, извиняюсь. действительно, залил неверный

 MoriSeiki_TurnMill_experimenten_v2.rar

Поделиться сообщением


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

Посмотрел пост, также выводит G12.1 после кадра с осью С.attachicon.gifБезымянный.jpg

 

ну и как, подошло? все-таки ждем продолжения этой саги :)

Поделиться сообщением


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

ну и как, подошло? все-таки ждем продолжения этой саги :)

 

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

post-49150-0-35368500-1440143080_thumb.jpg

Поделиться сообщением


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

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

attachicon.gif1111.jpg

А отработает ли G0 при включенной полярной интерполяции?

И второй вопрос: 

При включенной полярной интерполяции зачем выводить Y? (пусть даже и равной нулю)

 

MoriSeiki_TurnMill_experimenten_v3.rar 

Поделиться сообщением


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

Всем привет!

Вопрос по генератору постпроцессоров. В управляющей программе  нужно вывести подачу раньше чем она появляется в тексте CLD т.е в кадре перемещения до строки FEDRATE. Как из программки GOTO посмотреть вперед по тексту CLD в FEDRATE, запомнить значение подачи, и вывести его в текущем кадре?  Станочник достал уже, говорит что не красиво... эстет чертов.

Поделиться сообщением


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

Всем привет!

Вопрос по генератору постпроцессоров. В управляющей программе  нужно вывести подачу раньше чем она появляется в тексте CLD т.е в кадре перемещения до строки FEDRATE. Как из программки GOTO посмотреть вперед по тексту CLD в FEDRATE, запомнить значение подачи, и вывести его в текущем кадре?  Станочник достал уже, говорит что не красиво... эстет чертов.

Можно сделать так

В программе AbsMov пропиши следующее:

 

  a: Array of Real 
  b: Integer    
 
  b = GetCld(1, a)                !  читаем параметры следующей за GOTO команды (предполагаем что это FEDRAT) 
  if b=CodeOfCmd(“FEDRAT”) then  Feed=Str(a[1]) 

Поделиться сообщением


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

 

Можно сделать так

В программе AbsMov пропиши следующее:

 

  a: Array of Real 
  b: Integer    
 
  b = GetCld(1, a)                !  читаем параметры следующей за GOTO команды (предполагаем что это FEDRAT) 
  if b=CodeOfCmd(“FEDRAT”) then  Feed=Str(a[1]) 

 

а если FEDRAT не сразу после?

Поделиться сообщением


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

а если FEDRAT не сразу после?

насколько я помню (это в доке расписано), для поиска конкретной команды 

лучше использовать Функцию <FindCld>

N = FindCld({<StartIndex>, }<CmdName>, <Data>)

Ну т.е в Вашем случае:

  b = FindCld("FEDRAT", V)

  if b>0 then begin

    Feed = V[1]                  ! и.е возьмет только значени, без учета единиц измерения (мм/об или мм/мин), за это V[3] отвечает.. добавить надо будет разбор если надо конечно

  end

2 пользователям понравилось это

Поделиться сообщением


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

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

 

 

     

aa: Array of Real                        ! объявляем массив

IndF = FindCld("FedRat", aa)    ! записываем в массив параметры будущей подачи т.е. все параметры из строки  
                                                   !CLData FEDRAT, при этом, если впереди по тексту есть вывод подачи то IndF=1 ,

                                                  !  а IndF=-1 если ниже нет вывода подачи.

if IndF>0 then Feed_=Str(aa[1])  ! Если в CLD файле операции имеется задание подачи то они присваивается

                                                    !  регистру Feed_ и выводится в текущем кадре, в следующем перемещении

                                                    ! оно не будет выведено поскольку параметр модальный.

1 пользователю понравилось это

Поделиться сообщением


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

У нас есть древний станочек, у которого стойка  о том, что такое лук э хед понятия не имеет. Хочу сделать в постпроцессоре автоматическое регулирование скорости в углах траектории в зависимости от величины этого самого угла.
1. Есть ли в генераторе какие то переменные где хранится значение этого угла? 
2. Имеются ли какая то переменная где хранится текущий признак условия сопряжения соседних элементов контура, типа тангенциально, перпендикулярно, под углом итд ?

Поделиться сообщением


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

! оно не будет выведено поскольку параметр модальный.

А если в нескольких кадрах  надо? как-то сброс модальности можно осуществить? или указать, чтобы выводилось в каждом кадре ? 

 

 

Feed = V[1]                  ! возьмет только значение, без учета единиц измерения (мм/об или мм/мин), за это V[3] отвечает..

 

Добрый вечер, подскажите, а как узнать в каких единицах эта подача (в CLData выдается 315/316 - это в чем)? и как сделать пересчет? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А если в нескольких кадрах  надо? как-то сброс модальности можно осуществить? или указать, чтобы выводилось в каждом кадре ? 

 

Feed = V[1] ;    Feed@ = maxreal  !   Символ @ обозначает что это "старое значение"   Такая конструкция позволяет отключить модальность и выводить одинаковые параметры в каждом кадре
Feed = V[1] ;    Feed@ = Feed  !   А такая конструкция позволяет невыводить параметр даже если они отличаются

 

Добрый вечер, подскажите, а как узнать в каких единицах эта подача (в CLData выдается 315/316 - это в чем)? и как сделать пересчет? 

 MMPM(315) – мм/мин,

MMPR(316) – мм/об

Например, в токарной обработке,  если значение 315 то выводим G94, если 316 то G95

У нас есть древний станочек, у которого стойка  о том, что такое лук э хед понятия не имеет. Хочу сделать в постпроцессоре автоматическое регулирование скорости в углах траектории в зависимости от величины этого самого угла.

1. Есть ли в генераторе какие то переменные где хранится значение этого угла? 

2. Имеются ли какая то переменная где хранится текущий признак условия сопряжения соседних элементов контура, типа тангенциально, перпендикулярно, под углом итд ?

<FlagIn> возвращает:
1 – если происходит внутренний обход следующего пересечения;
0 – если внешний обход;
-1 – если тип обхода невозможно определить (например, совпадение направлений соседних кадров при линейной интерполяции).
<Cross> – возвращает значение 0, если текущий элемент сопрягается с последующим, и 1 если пересекаются. В общем случае две прямые всегда пересекаются, прямая и окружность могут сопрягаться, либо пересекаются. Эта переменная может быть использована для реализации коррекции.
 
А вот величины угла нету, поэтому этих функций, не достаточно для решения вашей задачи.
Если есть желание разобраться могу выслать постпроцессор на робот Fanuc. Там эта задача решена в общем виде (без использования этих функций) т.е для пространственных углов. Поскольку плоская траектория - частный случай пространственной, то этот код можно попытаться встроить в ваш постпроцессор.
Изменено пользователем SNick

Поделиться сообщением


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

Спасибо.Отредактировал.

У меня предложение, делаем отдельную тему, например, "Поспроцессор Fanuc c нуля". Если получится,можно будет продолжить Heidenhein c нуля, потом замахнуться на наших...Sinumerik,Ocuma...

Как вам такое предложение?  

1 пользователю понравилось это

Поделиться сообщением


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

Спасибо.Отредактировал.

У меня предложение, делаем отдельную тему, например, "Поспроцессор Fanuc c нуля". Если получится,можно будет продолжить Heidenhein c нуля, потом замахнуться на наших...Sinumerik,Ocuma...

Как вам такое предложение?  

Хорошее предложение. Только сейчас сезон отпусков. Давайте вернемся к этой теме в октябре

Поделиться сообщением


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

Подскажите а как в PB отредактировать пост чтобы он вместо i j писал G2 G3?
А в токарке С и R (фаска и скругление)

Поделиться сообщением


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

Подскажите а как в PB отредактировать пост чтобы он вместо i j писал G2 G3?

А в токарке С и R (фаска и скругление)

Я, конечно, могу написать как это делается в генераторе построцессоров SprutCAM, но вам же нужно в NX?

Поделиться сообщением


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

Совершенно верно
Но если  в спруте через создание нового значения и если вдруг не сложно, то напишите, а я попробую
Спасибо

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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

  • Реклама

  • Ближайшие события

    Предстоящих событий не найдено
  • Дни рождения сегодня

    1. Aleksew
      Aleksew
      (26 лет)
    2. AndreiManz
      AndreiManz
      (29 лет)
    3. Bratets SO
      Bratets SO
      (38 лет)
    4. DenTeh
      DenTeh
      (34 года)
    5. DiakontExpert
      DiakontExpert
      (55 лет)
    Просмотреть все