Ресурсы Unigraphics: Создание постпроцессоров. Использование PostBuilder

Темы:

 
 

   История PostBuilder началась в 16-ой версии Unigraphics, именно в ней появились его первая  реализация в исходных кода на Tcl/Tk. Но уже в обновлении Unigraphics 16.3.3 - создатели расчухались и вдруг не с того, и сего, закрыли исходники. Просто зашифровав их. При запуске функция ...._decrypt (или иная другая по названию) - расшифровывает функции в память, поэтому при запуске  PostBuilder-а - компьютер 'вставал', и продолжает 'вставать', колом, если у него не хватало оперативной памяти.

  Сначала, Все новички, используют PB, не поняв его - начинают вручную править и создавать ПП, но потом, после приобретения определенного опыта, поняв принципы и устои Юга, начинают пользоваться PB в полную силу.

   Изначально, да и сейчас, структура работы PB не отличалась оригинальностью от обычной схемы работы оболочек Gui Unix\Linux.
   Есть файл проекта - *.pui на его основе компилятор/сборщик формирует несколько файлов , в данном случает *.tcl , *.def. Взаимосвязь между ними довольна призрачна.

Я подразумеваю, что человек, читающий Это. Может запустить ПостБилдер. Может создать Адрес, Блок, Вспомогательную команду. Может редактировать. При создании постпроцессора в Постбилдере, он первым делом начинает редактировать описание адреса G_cutcom , убирая ненавистные уже  +-999999999.9999. Ругаясь и чертыхаясь.


  • Порядок Адресов в кадре

    Глубоко вникнуть в состав pui - файла меня вынудило несколько случаев. Один из них был просто дурацкий: мне нужно было получить такой порядок адресов в кадре : G90 G41..... Используя PB, получалось только так: G41 G90 ....

    Я много раз пытался сделать это  - не выходило. Создавать свой адрес, когда был такой же в наличие (по функционалу), было как то глупо. Ругнулся и открыл pui-файл. Внимательно изучив содержимое, я обнаружил описание и порядок адресов, решил их переставить ..... и у меня получилось  :):):)
    Точно так же, мне удалось решить и проблему адресов еще для одного постпроцессора, и получить требуемое: M3 S...

    ДоПосле
    ## MASTER SEQUENCE START
    G_cutcom "$mom_sys_cutcom_code(OFF)" 0 "Cutcom G-Code" 0
    G_plane "$mom_sys_cutcom_plane_code($mom_cutcom_plane)" 0 "Plane G-Code" 0
    G_adjust "$mom_sys_adjust_code" 0 "Tool Length Adjust G-Code" 0
    G_feed "$mom_sys_feed_rate_mode_code($feed_mode)" 0 "Feedrate Mode G-Code" 0
    G_spin "$mom_sys_spindle_mode_code($mom_spindle_status)" 0 "Spindle Output Mode G-Code" 0
    G_return "$mom_sys_cycle_ret_code(MANUAL)" 0 "Return Plane for Canned Cycles" 0
    G_motion "$mom_sys_linear_code" 0 "Motion G-Code" 0
    G_cycle "$mom_usd_add_var" 0 "(G_cycle)" 1
    G_mode "$mom_sys_output_code($mom_output_mode)" 0 "Positioning Mode G-code" 0
    G "$mom_sys_blank_code" 0 "Other G-Codes" 0
    X "$mom_sys_blank_code" 0 "X Axis Position or Canned Cycle X Axis Position" 0
    Y "$mom_sys_blank_code" 0 "Y Axis Position or Canned Cycle Y Axis Position" 0
    Z "$mom_sys_blank_code" 0 "Z Axis Position or Canned Cycle Z Axis Position" 0
    fourth_axis "$mom_sys_blank_code" 0 "4th Axis Position" 0
    fifth_axis "$mom_sys_blank_code" 0 "5th Axis Position" 0
    I "$mom_sys_blank_code" 0 "X Axis Position of the Circle Center" 0
    J "$mom_sys_blank_code" 0 "Y Axis Position of the Circle Center" 0
    K "$mom_sys_blank_code" 0 "Z Axis Position of the Circle Center" 0
    .....
    F "$mom_sys_blank_code" 0 "Feedrate" 0
    S "$mom_sys_blank_code" 0 "Spindle Speed" 0
    ...
    M_spindle "$mom_sys_spindle_direction_code($mom_spindle_direction)" 0 "Spindle Direction M-Code" 0
    ....
    N "" 0 "Sequence Number" 0
    ....
    Text "" 0 "Text String" 0
    ## MASTER SEQUENCE END
    ## MASTE SEQUENCE START
    G_mode "$mom_sys_output_code($mom_output_mode)" 0 "Positioning Mode G-code" 0
    G_cutcom "$mom_sys_cutcom_code(OFF)" 0 "Cutcom G-Code" 0
    G_plane "$mom_sys_cutcom_plane_code($mom_cutcom_plane)" 0 "Plane G-Code" 0
    G_adjust "$mom_sys_adjust_code" 0 "Tool Length Adjust G-Code" 0
    G_feed "$mom_sys_feed_rate_mode_code($feed_mode)" 0 "Feedrate Mode G-Code" 0
    G_spin "$mom_sys_spindle_mode_code($mom_spindle_status)" 0 "Spindle Output Mode G-Code" 0
    G_return "$mom_sys_cycle_ret_code(MANUAL)" 0 "Return Plane for Canned Cycles" 0
    G_motion "$mom_sys_linear_code" 0 "Motion G-Code" 0
    G_cycle "$mom_usd_add_var" 0 "(G_cycle)" 1
    G "$mom_sys_blank_code" 0 "Other G-Codes" 0
    X "$mom_sys_blank_code" 0 "X Axis Position or Canned Cycle X Axis Position" 0
    Y "$mom_sys_blank_code" 0 "Y Axis Position or Canned Cycle Y Axis Position" 0
    Z "$mom_sys_blank_code" 0 "Z Axis Position or Canned Cycle Z Axis Position" 0
    fourth_axis "$mom_sys_blank_code" 0 "4th Axis Position" 0
    fifth_axis "$mom_sys_blank_code" 0 "5th Axis Position" 0
    I "$mom_sys_blank_code" 0 "X Axis Position of the Circle Center" 0
    J "$mom_sys_blank_code" 0 "Y Axis Position of the Circle Center" 0
    K "$mom_sys_blank_code" 0 "Z Axis Position of the Circle Center" 0
    .....
    F "$mom_sys_blank_code" 0 "Feedrate" 0
    M_spindle "$mom_sys_spindle_direction_code($mom_spindle_direction)" 0 "Spindle Direction M-Code" 0
    S "$mom_sys_blank_code" 0 "Spindle Speed" 0
    ...
    N "" 0 "Sequence Number" 0
    Text "" 0 "Text String" 0
    ## MASTER SEQUENCE END

    Вывод: порядок Адресов в кадре - задается в pui. И его нужно при необходимости менять.
    Исключение: Вывод адреса N.


    Добавление MOM-команд, функций в структуру pui (tcl, def).

    1. Меня всегда интересовало, почему в PB так неудобно и не понятно работает с Nurbs и Helix - интерполяцией. В принципе, она была обычным видом движения. Но реализация через uplevel { } - раздражала.
     В pui-файле за это отвечает следующая часть:

    Для решения этого насущного вопроса, откроем pui-файл, и добавим строчки, чтобы получилось как показано ниже.

    #Motions Start
    {Linear Move} {linear_move} {Linear Move}
    {Circular Move} {circular_move} {Circular Move}
    {Rapid Move} {rapid_traverse rapid_spindle} {Rapid Move}
    {Nurbs Move} {} {Nurbs Move}
    {Helix Move} {} {Helix Move}
    #Motions End

    После открытия модифицированного Pui в PB получим следующую картинку, и более того, в tcl - файле будут образованы следующие команды, которые мы можем редактировать и наполнять прямо из PB:

    #==========================================
    proc MOM_nurbs_move { } {
    #==========================================
    }
    #==========================================
    proc MOM_helix_move { } {
    #==========================================
    }

     

    Точно также, Вы можете добавлять и обработчики, и другие вспомогательные команды:

    ##Tool Path Start
    #Control Functions Start
    {Tool Change} {} {$gPB(event,tool_change,name)}
    {Length Compensation} {} {Length Compensation}
    {Set Modes} {} {Set Modes}
    {Spindle RPM} {PB_CMD_spindle} {Spindle RPM}
    {Spindle Off} {spindle_off} {Spindle Off}
    {Coolant On} {coolant_on} {Coolant On}
    {Coolant Off} {coolant_off} {Coolant Off}
    {Inch Metric Mode} {} {Inch Metric Mode}
    {Feedrates} {} {Feedrates}
    {Cutcom On} {} {Cutcom On}
    {Cutcom Off} {cutcom_off PB_CMD_D_flag_v_nol} {Cutcom Off}
    {Delay} {delay} {Delay}
    {Opstop} {opstop} {Opstop}
    {Auxfun} {auxfun} {Auxfun}
    {Prefun} {prefun} {Prefun}
    {Load Tool} {} {Load Tool}
    {Stop} {stop} {Stop}
    {Tool Preselect} {tool_preselect} {Tool Preselect}
    {Pprint} {PB_CMD_pprint} {Pprint}
    {Operator Message} {PB_CMD_operator_message} {Operator Message}
    {Insert} {PB_CMD_insert} {Insert}
    {Origin} {PB_CMD_origin} {Origin}
    {Text} {PB_CMD_text} {Text}
    {Zero} {PB_CMD_zero} {Zero}
    #Control Functions End

     

    2. Используя выше приведенную методику. Теперь вы можете, добавлять в меню PB нужные Вам функции. И не только, начинающееся на знакомое PB_CMD_*.
    Ограничение, я думаю одно - процедура не должна содержать аргументы.
    Если, Вы, хотите добавить свою собственную процедуру, то предварительно, опишите её в tcl - файле, дополните pui, а уж , затем открывайте Ваш проект в PB.

    {Command} \
    {"Custom Command" "" "New Custom Command"} \
    {"MOM_set_seq_off" "" "MOM Command"} \
    {"MOM_set_seq_on" "" "MOM Command"} \
    {"MOM_coolant_off" "" "MOM Command"} \
    {"MOM_coolant_on" "" "MOM Command"} \
    {"MOM_set_modes" "" "MOM Command"} \
    {"MOM_spindle_css" "" "MOM Command"} \
    {"MOM_spindle_off" "" "MOM Command"} \
    {"MOM_spindle_rpm" "" "MOM Command"} \
    {"SET_SIGN_OF_RADIUS" "" "Custom Command"} \
    {"int_value" "" "Custom Command"} \
    {"PRBCUT" "" "Custom Command"} \
    {"PROBE" "" "Custom Command"} \
    {"SET_Tool_type" "" "Custom Command"} \
    {"PB_CMD_5axis_flag" "" "Custom Command"} \
    {"PB_CMD_5axis_flag3_V_nol" "" "Custom Command"} \
    ......

     


    Copyright © 2001—2009 че