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

FAQ/Unigraphics/POST


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

13 часа назад, mr_Voden сказал:

@Alexkid Мне стало любопытно почему функция, которую я написал не сработала в вашем посте. В итоге я выяснил, что она будет работать только в постах созданных на основе библиотеки систем чпу, встроенной в постбилдер, а именно fanuc_30i_advanced. Ни в каких других вариантах она не работает, и было бы очень интересно узнать почему переменные mom_nxt_event_count и mom_nxt_event остаются пустыми.

Сделал пост на 3хосевой станок, поглядите, если что доработать запросто можно.

 

new_11.08.19_21.08.zip

Сталкивался с таким же. Просто перенёс все команды пользователя в свой пост, вроде заработало.

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


Подскажите как сделать, чтобы при 5 осевой обработке пост пересчитывал координаты Y и B в соответствии с заданной длиной инструмента?

Токарные автоматы с поворотной осью B не умеют работать с корректором на длину инструмента, чтобы смещения пересчитывались в стойке, либо я что-то делаю не так...

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

Добрый день. 

Подскажите, какая команда отвечает за вывод G50 в токарном цикле?

у меня выводит G92 (это фанук B) , хочу поменять на G50. 

 

7 минут назад, bri сказал:

Добрый день. 

Подскажите, какая команда отвечает за вывод G50 в токарном цикле?

у меня выводит G92 (это фанук B) , хочу поменять на G50. 

Вопрос снят) вроде разобрался

 

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

Здравствуйте, подскажите пожалуйста как мне узнать было ли в предыдущей операции вызвана событие MOM_stop?

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

Добрый день. Неожиданно возник вопрос....

при линейном врезании и выходе траектория все равно делиться на участки:

G1 x...    y....

y...

y...

y...

x.. y..

Как нибудь можно побороть в посте?

Ссылка на сообщение
Поделиться на других сайтах
В 28.08.2019 в 07:38, dimsond88 сказал:

Здравствуйте, подскажите пожалуйста как мне узнать было ли в предыдущей операции вызвана событие MOM_stop?

В обработчике события поставь флаг.

2 часа назад, bri сказал:

Добрый день. Неожиданно возник вопрос....

при линейном врезании и выходе траектория все равно делиться на участки:

G1 x...    y....

y...

y...

y...

x.. y..

Как нибудь можно побороть в посте?

сравни эти координаты с координатами clsf-файла. Что бы определить это постпроцессор разбивает траекторию, или сам UG. Тогда будет понятно, где лечить.

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

Какой пост?  Какая траектория? Что по вашему мнению должно быть? 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, kosmonaft сказал:

Какой пост?  Какая траектория? Что по вашему мнению должно быть? 

Пост свой, линейное перемещение. Хотелось бы без промежуточных значений

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

@bri Можно по каждой координате проверять условие: если в следующем кадре меняется только эта координата, то подавляем вывод, если же она не меняется, или меняется несколько - то выводим. Была подобная мысль, но не реализовывал, по наличию времени на днях попробую. А выводит пост несколько У или Х подряд, потому для него они принадлежат к разным событиям, а не к одному событию "линейное перемещение".

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, mr_Voden сказал:

@bri Можно по каждой координате проверять условие: если в следующем кадре меняется только эта координата, то подавляем вывод, если же она не меняется, или меняется несколько - то выводим. Была подобная мысль, но не реализовывал, по наличию времени на днях попробую. А выводит пост несколько У или Х подряд, потому для него они принадлежат к разным событиям, а не к одному событию "линейное перемещение".

С созданием условий у меня плохо) 

 

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

@bri Нашлась свободная минутка. В общем я имел в виду что-то типа того:

Команда пользователя  

#=============================================================
proc PB_CMD_POS_SUPPRESS { } {
#=============================================================

global mom_pos mom_nxt_pos mom_prev_pos

set cx [format "%.3f" $mom_pos(0)]
set cy [format "%.3f" $mom_pos(1)]
set cz [format "%.3f" $mom_pos(2)]

set nx [format "%.3f" $mom_nxt_pos(0)]
set ny [format "%.3f" $mom_nxt_pos(1)]
set nz [format "%.3f" $mom_nxt_pos(2)]

set px [format "%.3f" $mom_prev_pos(0)]
set py [format "%.3f" $mom_prev_pos(1)]
set pz [format "%.3f" $mom_prev_pos(2)]

if { $cx!=$nx } {
    if {  ($cy==$ny && $cz==$nz) && ($cy==$py && $cz==$pz) } {
        MOM_suppress once X
    }
}

if { $cy!=$ny } {
    if {  ($cx==$nx && $cz==$nz) && ($cx==$px && $cz==$pz) } {
        MOM_suppress once Y
    }
}

}

Hide  

 

Без нее пост выводит  

(POV1_CHIST_D10)
G0 X-177.266 Y57.462
Z10.
Z3.
G1 G90 Z0. D#4120 F250.
G41 X-182.7 Y55.
Y54.
Y45.
G3 X-167.7 Y30. R15.
G2 X-147.857 Y22.5 R30.
G3 X-128.014 Y15.
G1 X-43.925
G3 X-38.925 Y20. R5.
G1 Y23.5
Y32.5
Y33.5
G40 X-44.359 Y35.962
Z3.
Z10.

Hide  

 

С ней  

(POV1_CHIST_D10)
G0 X-177.266 Y57.462
Z10.
Z3.
G1 G90 Z0. D#4120 F250.
G41 X-182.7 Y55.
Y45.
G3 X-167.7 Y30. R15.
G2 X-147.857 Y22.5 R30.
G3 X-128.014 Y15.
G1 X-43.925
G3 X-38.925 Y20. R5.
G1
Y33.5
G40 X-44.359 Y35.962
Z3.
Z10.

Hide  

Нужно потестировать это решение, тк у него могут быть негативные побочные эффекты.

Ссылка на сообщение
Поделиться на других сайтах
14 часа назад, mr_Voden сказал:

@bri Нашлась свободная минутка. В общем я имел в виду что-то типа того:

Команда пользователя

#=============================================================
proc PB_CMD_POS_SUPPRESS { } {
#=============================================================

global mom_pos mom_nxt_pos mom_prev_pos

set cx [format "%.3f" $mom_pos(0)]
set cy [format "%.3f" $mom_pos(1)]
set cz [format "%.3f" $mom_pos(2)]

set nx [format "%.3f" $mom_nxt_pos(0)]
set ny [format "%.3f" $mom_nxt_pos(1)]
set nz [format "%.3f" $mom_nxt_pos(2)]

set px [format "%.3f" $mom_prev_pos(0)]
set py [format "%.3f" $mom_prev_pos(1)]
set pz [format "%.3f" $mom_prev_pos(2)]

if { $cx!=$nx } {
    if {  ($cy==$ny && $cz==$nz) && ($cy==$py && $cz==$pz) } {
        MOM_suppress once X
    }
}

if { $cy!=$ny } {
    if {  ($cx==$nx && $cz==$nz) && ($cx==$px && $cz==$pz) } {
        MOM_suppress once Y
    }
}

}

Hide

 

Без нее пост выводит

(POV1_CHIST_D10)
G0 X-177.266 Y57.462
Z10.
Z3.
G1 G90 Z0. D#4120 F250.
G41 X-182.7 Y55.
Y54.
Y45.
G3 X-167.7 Y30. R15.
G2 X-147.857 Y22.5 R30.
G3 X-128.014 Y15.
G1 X-43.925
G3 X-38.925 Y20. R5.
G1 Y23.5
Y32.5
Y33.5
G40 X-44.359 Y35.962
Z3.
Z10.

Hide

 

С ней

(POV1_CHIST_D10)
G0 X-177.266 Y57.462
Z10.
Z3.
G1 G90 Z0. D#4120 F250.
G41 X-182.7 Y55.
Y45.
G3 X-167.7 Y30. R15.
G2 X-147.857 Y22.5 R30.
G3 X-128.014 Y15.
G1 X-43.925
G3 X-38.925 Y20. R5.
G1
Y33.5
G40 X-44.359 Y35.962
Z3.
Z10.

Hide

Нужно потестировать это решение, тк у него могут быть негативные побочные эффекты.

Моя работа это разработка постпроцессоров. И я против того, что бы постпроцессор додумывал за программиста ЧПУ (что программист хотел несколько линейных перемещений, или одно.). Если вы хотите одно линейное перемещение вместо нескольких, то исправляйте траекторию в UG.

Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, Wp11 сказал:

Моя работа это разработка постпроцессоров. И я против того, что бы постпроцессор додумывал за программиста ЧПУ (что программист хотел несколько линейных перемещений, или одно.). Если вы хотите одно линейное перемещение вместо нескольких, то исправляйте траекторию в UG.

Думал про решение в самом nx. Но это убирать врезание/отход, ну и расширять траекторию. Ручками быстрее) 

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

В основном убирать лишние точки (кадры в УП) просят операторы ЧПУ, т.к. им так удобнее читать координаты. Но те же операторы потом просят добавить точки на траектории подхода перед врезанием, что бы им было безопаснее отрабатывать программу в покадровом режиме. Поэтому по моему мнению пост усложнять не надо, т.к. это черевато ударами. А нужно найти компромисс с оператором. Как лучше программисту напрячся над траекторией, или оператору смириться с дополнительными точками на траектории.

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

Коллеги подскажите, как побороть тигра?

После использования команды "MOM_cycle_objects" UG скидывает в буфер данные из последний операции, в первой операции.

 

Код для получения данных из дерева UG и вывода их в оглавление перед УП:

    proc  MOM_OPER_BODY {} {
        global  lib_prog_info
        global mom_object_name
        global mom_oper_tool
        if {![info exists lib_prog_info(list)]} {set lib_prog_info(list) {}}
        set  index  [llength $lib_prog_info(list)]
        lappend  lib_prog_info(list)  $mom_object_name
        set  lib_prog_info(size)  [expr $index+1]
        set  lib_prog_info(oper,$index,name) $mom_object_name
        set  lib_prog_info(oper,$index,tool_name) $mom_oper_tool
        global mom_tool_number 
        if {[info exists mom_tool_number]} {
            set  lib_prog_info(oper,$index,tool_number)  $mom_tool_number
        } else {
            set  lib_prog_info(oper,$index,tool_number)  0
        }    
        global mom_toolpath_time mom_template_subtype
        set  lib_prog_info(oper,$index,template_subtype)  $mom_template_subtype
        if {[info exists mom_toolpath_time]} {
            if {[string match "*_CONTROL" $mom_template_subtype] == 1} {
                set  lib_prog_info(oper,$index,time)  0
            } else {
                set  lib_prog_info(oper,$index,time)  $mom_toolpath_time
            }
        } else {
            set  lib_prog_info(oper,$index,time)  0
        }
        
        global mom_template_type
        global mom_tool_holder_angle_for_cutting
        global mom_use_a_axis mom_use_b_axis
        
        set lib_prog_info(oper,$index,type) $mom_template_type; 
        
        if {$lib_prog_info(oper,$index,type) == "turning"} {
            set lib_prog_info(oper,$index,angleHolder) $mom_tool_holder_angle_for_cutting;
            set lib_prog_info(oper,$index,use_a) $mom_use_a_axis;
            set lib_prog_info(oper,$index,use_b) $mom_use_b_axis;         
        }
    }
    
    MOM_cycle_objects {SETUP {PROGRAMVIEW {MEMBERS}}}
    proc  MOM_PROGRAM_BODY {} {}
    proc  MOM_OPER_BODY {} {}

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

@Wp11

5 часов назад, Wp11 сказал:

Моя работа это разработка постпроцессоров. И я против того, что бы постпроцессор додумывал за программиста ЧПУ (что программист хотел несколько линейных перемещений, или одно.). Если вы хотите одно линейное перемещение вместо нескольких, то исправляйте траекторию в UG.

Вероятно вы единственный в мире разработчик постпроцессоров, раз считаете что ваше мнение единственно верное и его крайне необходимо навязывать другим.

ИМХО постпроцессор должен делать то, что от него хочет программист. Все что может быть автоматизировано постом - должно быть автоматизировано. На крайний случай можно оставить ude-шку, чтобы технолог мог сам решить какой функционал ему нужен в данный момент.

Касаемо функции, которую я выложил. При каких-либо условиях она может привести к столкновению (перестраховываюсь, но пока что я не вижу такого случая, тк речь идет о линейном перемещении в плоскости), но:

1 - она не оттестирована, о чем я писал

2 - никто не отменял верификаторы

3 - можно не лепить эту функцию к каждому посту и к каждой траектории. Можно оставить это решение за технологом с помощью ude. А лезть ручками в траекторию каждый раз - потери человеко-часов зашкалят.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...
В 31.08.2019 в 12:28, Wp11 сказал:

Коллеги подскажите, как побороть тигра?

После использования команды "MOM_cycle_objects" UG скидывает в буфер данные из последний операции, в первой операции.

 

Код для получения данных из дерева UG и вывода их в оглавление перед УП:

    proc  MOM_OPER_BODY {} {
        global  lib_prog_info
        global mom_object_name
        global mom_oper_tool
        if {![info exists lib_prog_info(list)]} {set lib_prog_info(list) {}}
        set  index  [llength $lib_prog_info(list)]
        lappend  lib_prog_info(list)  $mom_object_name
        set  lib_prog_info(size)  [expr $index+1]
        set  lib_prog_info(oper,$index,name) $mom_object_name
        set  lib_prog_info(oper,$index,tool_name) $mom_oper_tool
        global mom_tool_number 
        if {[info exists mom_tool_number]} {
            set  lib_prog_info(oper,$index,tool_number)  $mom_tool_number
        } else {
            set  lib_prog_info(oper,$index,tool_number)  0
        }    
        global mom_toolpath_time mom_template_subtype
        set  lib_prog_info(oper,$index,template_subtype)  $mom_template_subtype
        if {[info exists mom_toolpath_time]} {
            if {[string match "*_CONTROL" $mom_template_subtype] == 1} {
                set  lib_prog_info(oper,$index,time)  0
            } else {
                set  lib_prog_info(oper,$index,time)  $mom_toolpath_time
            }
        } else {
            set  lib_prog_info(oper,$index,time)  0
        }
        
        global mom_template_type
        global mom_tool_holder_angle_for_cutting
        global mom_use_a_axis mom_use_b_axis
        
        set lib_prog_info(oper,$index,type) $mom_template_type; 
        
        if {$lib_prog_info(oper,$index,type) == "turning"} {
            set lib_prog_info(oper,$index,angleHolder) $mom_tool_holder_angle_for_cutting;
            set lib_prog_info(oper,$index,use_a) $mom_use_a_axis;
            set lib_prog_info(oper,$index,use_b) $mom_use_b_axis;         
        }
    }
    
    MOM_cycle_objects {SETUP {PROGRAMVIEW {MEMBERS}}}
    proc  MOM_PROGRAM_BODY {} {}
    proc  MOM_OPER_BODY {} {}

Коллеги подсказали как достать все необходимые данные из NX перед постпроцессированием. Кому интересно с NX9 есть команда "MOM_run_postprocess"

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

Здравствуйте. Кто разбирается в Post Configurator? Там есть Edit post configurator files выводит пост частично в текстовом режиме, там есть настройка которая влияет на величину ретракта кинематики, оно у меня 500, но если изменить его на другое, то пост все равно будет отводить инструмент на 500мм, где можно найти эту настройку еще или как ее изменить?

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

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

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

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

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

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

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

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

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

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

    • TugoDum



  • Сообщения

    • Anat2015
      Какой станок, какое ЧПУ, какой магазин, и т.д. и т.п.? Задаете вопросы, как будто здесь все экстрасенсы.
    • Fedor
      верхняя линия это если не учитываем давления воздуха, а нижняя если учитываем.  То есть если не учитываем то считаем грунт более прочным чем на самом деле ...  
    • maxx2000
      @asd выводит нормально, с постпроцессором что-то  
    • Orchestra2603
      Это уже больше похоже на конструктивный разговор.   Я это понимаю. Мой тезис заключается в том, что когда мы ищем собственные вектора, мы вообще не решение ищем. Ну, не совсем решение, если хотите. В терминах СЛАУ можно сказать, что мы ищем базисные вектора фундаментальной системы решений. Нам не нужно что-то фиксировать и вводить какие-то точки отсчета. Нам нужно установить все пространство возможных решений однородной системы целиком, и потом из него просто выделить некоторый базис. Это не то же самое, что найти решение СЛАУ.   Про факторизацию... В моем понимании факторизация (в частоности, матрицы) - это разложение на множители (здесь на матричные множители), так чтобы получились какие-то другие матрицы, которые обладают какими-то выгодными свойствами (разложение Холецкого для положительно определенных матриц, LU, QR, QZ, сингулярное разложение и т.д.) В моем понимании это обычно нужно для повышении эффективности последующих операций, ускорения работы алгоритмов, для лучшей сходимости итерационных методов, где-то для эффективной параллелизации и т.д. Ничего не слышал раньше о ситуациях, когда факторизация жизненно необходима, и без нее задача не решается. Как я это вижу, существует много различных способов факторизации матрицы. Я просто не могу понять про какую конкретно факторизацию вы говорите и не могу понять, как она должна помочь, и почему ее невозможно сделать для вырожденной матрицы? Я бы, честно говорю, хотел разобраться в этом. Возможно, я что-то вообще неправильно понимаю.
    • asd
      Надеюсь, это то, что вы имели в виду.   TOOL PATH/THREAD_MILLING_1_COPY,TOOL,STD_DRILL TLDATA/TCUTTER,10.0000,0.0000,0.0000,80.0000,10.0000,8.0000 MSYS/0.0000,0.0000,0.0000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,0.0000000 $$ centerline data PAINT/PATH PAINT/FEED PAINT/SPEED,10 PAINT/COLOR,186 FROM/0.0000,0.0000,50.0000,0.0000000,0.0000000,1.0000000 LOAD/TOOL,1 RAPID GOTO/0.0000,0.0000,3.0000 PAINT/COLOR,181 FEDRAT/MMPM,500.0000 GOTO/0.0000,0.0000,-33.0211 PAINT/COLOR,6 FEDRAT/250.0000 GOTO/21.6792,-1.2470,-33.0211 CIRCLE/21.7509,0.0000,-33.0000,0.0000000,0.0000000,-1.0000000,1.2491,0.0100,0.5000,10.0000,0.0000 GOTO/23.0000,0.0000,-33.0000 PAINT/COLOR,31 CIRCLE/0.0000,0.0000,-4.5000,0.0000000,0.0000000,-1.0000000,23.0000,0.0100,0.5000,10.0000,0.0000,TIMES,19 GOTO/23.0000,0.0000,-4.5000 PAINT/COLOR,1 CIRCLE/21.7509,0.0000,-4.4789,0.0000000,0.0000000,-1.0000000,1.2491,0.0100,0.5000,10.0000,0.0000 GOTO/21.6792,1.2470,-4.4789 GOTO/0.0000,0.0000,-4.4789 PAINT/COLOR,103 RAPID GOTO/0.0000,0.0000,50.0000 PAINT/FEED,NOMORE PAINT/SPEED,10 PAINT/TOOL,NOMORE END-OF-PATH  
    • gudstartup
      @Aiche если у вас осталасть на столе привязанная деталь  то можете выставить нули так чтобы значения совпали и ничего снимать не придется к тому же от того что вы снимите ничего не поменяется ведь под кожухами у вас нет никаких 0 меток ни направляющих ни на станине очень неприятные. надо было оставить режим принудительного обнуления @Aiche и срочно сделайте нормальный бэкап в вашем кроме программ ничего нет. хотябы копию памяти надо иметь а то может и в чпу батарейка сесть и тогда будет очень плохо
    • Fedor
      То есть грунт физически находится в сжатом состоянии на поверхности земли. И при вычислении связности грунта логично бы учесть это при построении предельного графика сигма - тау... 
    • maxx2000
    • gudstartup
      нет ранее абсолютные можно было обнулять в любом месте и не надо было никуда ехать а сейчасбывает что система выдает ошибку о невозможности установить 0 пока не сделаешь оборот датчика. особенно это достает при обнулении рев.головки приходится датчик снимать и крутить
    • nicomed
      @alek77 Если еще интересно, то вот код, который рисует два сегмента эскиза поверх выбранной кромки. Первый сегмент от начальной точки кромки до точки выбора, второй сегмент - от конечной точки выбранной кромки до точки выбора. При этом учитывается: положение компонента в сборке; поворот чертежного вида относительно пространства модели. Код как обычно - лишь бы работало - все в одном методе.   Вот что не пробовал, так это многоуровневые сборки. Боюсь что бы не приходилось делать  пересчет положения выбранного компонента столько раз, на каком уровне вложения находится выбранный компонент.   Upd: Нашел глюк (точнее свою недоработку с которой еще предстоит разбираться) - если вид с разрывом - то точка выбора смещается ...
×
×
  • Создать...