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

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


DJ Astro

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

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

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

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


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

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

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

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

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

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

RSLT=SPWNF(T1)

 

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

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

rslt = SPWNF(t1, [t2])

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

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

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

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

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

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

Сделал-таки....  :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 исходных части

 

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

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

Имеется токарно-фрезерный станок. Задача сделать так, чтобы если фрезеруем на торце, то постпроцессор выводил бы движение с помощью координат 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 то поймет, я думаю. Что я делаю не так? 
 
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

"Токарно-фрезерный станок" - это в смысле с приводным инструментом в револьвере или со фрезерным шпинделем с токарной функцией, наподобие 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

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

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

"Токарно-фрезерный станок" - это в смысле с приводным инструментом в револьвере или со фрезерным шпинделем с токарной функцией, наподобие 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. И все

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

Так я ж и спрашиваю, какой станок-то? Токарный с револьвером и приводными инструментами или же с поворотным токарно-фрезерным шпинделем в котором устанавливается 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 инструмент? Посмотрите предыдущее сообщение. В зависимости от этого и нужно выбирать тип станка и в посте - либо просто 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

 

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

В таблице производственного процесса есть столбец "Оси" в котором указано кол-во осей на каждый переход. Если бы этот параметр можно было бы вывести в 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 (и можно ли вообще?). Может как-то через уравнения?
 
Ссылка на сообщение
Поделиться на других сайтах

 

В таблице производственного процесса есть столбец "Оси" в котором указано кол-во осей на каждый переход. Если бы этот параметр можно было бы вывести в 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 при таком подходе (если не все что угодно, то очень многое). 

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

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

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

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

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

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

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

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

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

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

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



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