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

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 пользователей

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




  • Сообщения

    • Denis_12
      Вот это помогло! Большое спасибо))) А я то все пытался через сборку это реализовать)  А Вы случайно не знаете как размеры в эскизе зафиксировать? Я имею ввиду при отдалении чертежа размеры стрелок и шрифтов увеличивается и происходит наслоение размеров друг на друга
    • ID_Hacker
      Для этого есть отдельная зона промышленной подсети. Если не лезть в настройки системной подсети ничего не завалится.   Сеть то грохнуть могли как на NCU так и на PCU50 и подходы к решению проблемы будут разные.
    • Artas28
      Добрый день! Есть какие ни будь рекомендации, на какую длину  нужно зажимать хвостовик в  термопатроне? Есть фреза д6, L50. Могу ли я зажать её за 15мм, или это будет мало? Или нужно зажимать  как минимум за  3 диаметра?
    • Ветерок
      Не понял что это за процедура такая "перенос в 2D".   Наверное, скрывать объекты на том или ином виде надо на соответствующем виде чертежа, а не в сборке. Или создать в сборке соответствующую конфигурацию и отображать на чертеже её.
    • Viktor2004
    • Denis_12
      Доброго времени суток! Ребят, ни как не могу решить проблему авто-обновления чертежного вида 3D сборки, к примеру скрываешь все кроме основания каркаса сборки, переносишь это в 2D (чертежный вид) указываешь размеры и т.п. (ставишь галочки "исключить из авто-обновления") после чего начинаешь в 3D сборке показывать дополнительно стойки (для создания нового вида), и вот в ранее созданном виде даже с отключенным авто-обновлением они тоже начинают проявляться. Как решить эту проблему? Нужно зафиксировать вид, чтобы он не обновлялся без моего участия. SolidWorks 2022 года.
    • Зинаида
      Возможно Вы смотрите не в той перспективе. Проверьте в перспективе "Мой Teamcenter" стоя на ревизии объекта. Возможно Вы смотрите не в той перспективе. Проверьте в перспективе "Мой Teamcenter" стоя на ревизии объекта.
    • alek77
      Да, спасибо, я уже из интереса ее нашел. Еще раз повторю, чтобы не выхватить, сам я такими методами указния размеров не пользуюсь, это самая вредная практика из всех, что встречал. В свое время имел много проблем в автокаде, корректируя чужие чертежи. Но там и отртогональные линии под углом в 0,001 градуса были в норме, и миллион линий одна поверх другой, и незамкнутые отрезки и много всего, от чего волосы дыбом. В солиде, думал, не столкнусь с таким, наивный. Поэтому искал и нашел макрос который косяки размеров подсвечивает. Он вполне рабочий, но не стабильный. В чем причина не разбирался, так как со своей задачей он справляется. Причем отрабатывает и галочки, и замену текста в размере. Хорошо, что @malvi.dp нашел время и что-то корректирует, спасибо отдельное ему за это. Макрос достаточно полезный при работе с чужими документами. И если удастся сохранить все начальные функции этого макроса против изощренных методов вредительства - будет офигенно.
    • Kelny
      Если этой ссылки достаточно для отображения материала и материал уже есть в обозначенной модели, то возможно подойдёт TabBuilder: https://help.solidworks.com/2023/russian/SolidWorks/SWHelp_List.html?id=e68c1877b4fa431483f8c751bd9fcc78&_gl=1*lby1j3*_up*MQ..*_ga*NTEyNjA5NDQ3LjE3MTQxMTU3MzA.*_ga_XQJPQWHZHH*MTcxNDExNTcyOS4xLjEuMTcxNDExNTczNy4wLjAuMA..#Pg0   В старых версиях при написанни ссылок такого радо в некоторых случаях можно было не писать имя файла, а достаточно было вместо имени файла модели оставить ПРОБЕЛ.SLDPRT и имя после этого подставлялось само. Пробовать надо.   Так же можете глянуть макрос по изменению свойств файла (методы и функции там устаревшие, но возможно даже будет работать и можно поковыряться в коде): https://kelnyproject.ucoz.ru/load/6-1-0-8 по програмированию так же есть справка (версию в ссылке поменяйте на свою, что бы справка была актуальна для вашей версии): https://help.solidworks.com/SearchEx.aspx?query=get custom property&version=2010&lang=english,enu&prod=api
    • gudstartup
      только перед обновлением обязательно выполните  все что написано в руководстве и касается сохранения состояния станка и чпу. и обязательно сделайте образ диска и помните что слишком новые версии могут не заработать на вашем чпу относительно безопасно ставить только сервиспаки
×
×
  • Создать...