Jump to content

Вывод торцевого сверления через ZXC(ось вращения) в станке с осью У


vanek77777

Recommended Posts

vanek77777

Здравствуйте! Токарный станок имеет ось У. Поэтому для фрезерной части поста брался шаблон четырёх осевого станка XYZC. Но при настройке  осевого цикла сверления приводным инструментом получается позиционирование только в полярной системе xy(c)z. А хотелось бы чтобы позиционировался как при шаблоне XZC(только с поворотом при У0, без полярки). Как это реализовать в посте? 

На рис 1 как хотелось бы, на рис 2 как реализовано сейчас.

Заранее спасибо!

 

20201222_190836.jpg

20201222_190911.jpg

Edited by vanek77777
Link to post
Share on other sites


UnPinned posts

@vanek77777 Можно попробовать переопределить шаблон сверления при включении полярки и таким образом убрать ось Y. Не то чтобы это было сложно, но мне кажется должно быть решение проще. Можно посмотреть как MOM_disable_address себя покажет.

Link to post
Share on other sites
vanek77777

Спасибо за ответ. Для эксперимента создал стандартный пост XYZC. Прописал в start of pach 

26 минут назад, mr_Voden сказал:

MOM_disable_address

Y

Но пост только исключил У из кода. Но не заставил пост выводить через угол поворота как при XZC.(токарно-фрезерный)

20201222_195542.jpg

Link to post
Share on other sites
vanek77777
3 минуты назад, mr_Voden сказал:

@vanek77777 Понятно. Полагаю что подмена шаблонов тоже ничего не даст.

Что имеется в виду под подменой шаблонов? Если объясните, попробую, что выйдет.

Link to post
Share on other sites

@vanek77777 Например:

Есть стандартная реализация MOM_drill_move

Скрытый текст

#=============================================================
proc MOM_drill_move { } {
#=============================================================
   global cycle_init_flag


   global mom_sys_abort_next_event
   if { [info exists mom_sys_abort_next_event] } {
      if { [llength [info commands PB_CMD_kin_abort_event]] } {
         PB_CMD_kin_abort_event
      }
   }


   PB_CMD_set_cycle_plane
   MOM_do_template cycle_drill
   set cycle_init_flag FALSE
}

 

Чтобы ее подменить можно написать в том же start_of_path

 

Скрытый текст

#***********
uplevel #0 {

#=============================================================
proc MOM_drill_move { } {
#=============================================================

тут будут указаны уже ваши функции и шаблоны вывода
}

} ;# uplevel
#***********

и дальше пост будет выводить сверление используя уже то что указано в uplevel.

Но это не поможет в решении этого вопроса.

Тут скорее дело в PB_CMD_kin_before_motion

Как она реализована в 4хосевом посте:

Скрытый текст

#=============================================================
proc PB_CMD_kin_before_motion { } {
#=============================================================
#  This custom command is used by UG Post to support Set/Lock,
#  rotary axis limit violation retracts and auto clamping.
#
#  --> Do not change this command!  If you want to improve
#      performance, you may comment out any of these commands.
#
   global mom_kin_machine_type

   if { [info exists mom_kin_machine_type] } {
      if { [string match "*3_axis_mill*" $mom_kin_machine_type] ||\
           [string match "*lathe*" $mom_kin_machine_type] } {
return
      }
   }


  # Lock on and not circular move
   global mom_sys_lock_status  ;# Set in MOM_lock_axis
   global mom_current_motion
   if { [info exists mom_sys_lock_status] && ![string compare "ON" $mom_sys_lock_status] } {
      if { [info exists mom_current_motion] && [string compare "circular_move" $mom_current_motion] } {

         LOCK_AXIS_MOTION
      }
   }


  # Handle rotary over travel for linear moves
   global mom_sys_rotary_error mom_motion_event
   if { [info exists mom_sys_rotary_error] } {
      if { $mom_sys_rotary_error != 0 && \
           [info exists mom_motion_event] && ![string compare "linear_move" $mom_motion_event] } {

         ROTARY_AXIS_RETRACT
      }

     # Error state s/b reset every time to avoid residual effect!
      unset mom_sys_rotary_error
   }


  # Auto clamp on
   global mom_sys_auto_clamp
   if { [info exists mom_sys_auto_clamp] && ![string compare "ON" $mom_sys_auto_clamp] } {

      AUTO_CLAMP
   }
}
 

И как в XZC

Скрытый текст

#=============================================================
proc PB_CMD_kin_before_motion { } {
#=============================================================
# This command is called before every motion.  It converts the
# xyz input from UG to xzc for the mill/turn.  It also processes
# the tool axis and verifies its correctness.
#
# --> Do NOT rename this command!
#

   global mom_kin_machine_type

   if { [info exists mom_kin_machine_type] } {
      if { ![string match "*3_axis_mill_turn*" $mom_kin_machine_type] } {
return
      }
   }


   global mom_out_angle_pos mom_sys_coordinate_output_mode mom_sys_output_mode mom_pos
   global mom_mcs_goto mom_tool_axis mom_prev_pos mom_sys_millturn_yaxis
   global mom_kin_arc_output_mode

   if { ![string compare "POLAR" $mom_sys_coordinate_output_mode] } {

      if { [string compare "TRUE" $mom_sys_millturn_yaxis] } { MOM_suppress always Y }
      if { [string compare "POLAR" $mom_sys_output_mode] }  {
        #
        # This section outputs the code needed to change the control to polar
        # output mode.
        #
         PB_CMD_init_polar_mode
         set mom_sys_output_mode "POLAR"
      }

      MILL_TURN

      MOM_reload_variable -a mom_out_angle_pos
      set mom_prev_pos(3) $mom_out_angle_pos(0)
      set mom_pos(3)      $mom_out_angle_pos(0)
      MOM_reload_variable -a mom_pos
      MOM_reload_variable -a mom_prev_pos

   } elseif { ![string compare "CARTESIAN" $mom_sys_coordinate_output_mode] } {

      if { [string compare "TRUE" $mom_sys_millturn_yaxis] } { MOM_suppress off Y }
      if { [string compare "CARTESIAN" $mom_sys_output_mode] } {
        #
        # This section outputs the code needed to change the control to cartesian
        # output mode.
        #
         PB_CMD_init_cartesian_mode
         set mom_sys_output_mode "CARTESIAN"
      }
   }
}
 

Тем более в версии XZC явно намекают на:

# This command is called before every motion.  It converts the
# xyz input from UG to xzc for the mill/turn.
 It also processes
# the tool axis and verifies its correctness.

  • Нравится 1
Link to post
Share on other sites

Можно создать и залинковать отдельный пост на сверление, из главного, только придётся через события в начале траектории head постоянно прописывать это включение.

Link to post
Share on other sites
vanek77777
1 час назад, mr_Voden сказал:

@vanek77777 Например:

Есть стандартная реализация MOM_drill_move

  Скрыть содержимое

#=============================================================
proc MOM_drill_move { } {
#=============================================================
   global cycle_init_flag


   global mom_sys_abort_next_event
   if { [info exists mom_sys_abort_next_event] } {
      if { [llength [info commands PB_CMD_kin_abort_event]] } {
         PB_CMD_kin_abort_event
      }
   }


   PB_CMD_set_cycle_plane
   MOM_do_template cycle_drill
   set cycle_init_flag FALSE
}

 

Чтобы ее подменить можно написать в том же start_of_path

 

  Скрыть содержимое

#***********
uplevel #0 {

#=============================================================
proc MOM_drill_move { } {
#=============================================================

тут будут указаны уже ваши функции и шаблоны вывода
}

} ;# uplevel
#***********

и дальше пост будет выводить сверление используя уже то что указано в uplevel.

Но это не поможет в решении этого вопроса.

Тут скорее дело в PB_CMD_kin_before_motion

Как она реализована в 4хосевом посте:

  Показать содержимое

#=============================================================
proc PB_CMD_kin_before_motion { } {
#=============================================================
#  This custom command is used by UG Post to support Set/Lock,
#  rotary axis limit violation retracts and auto clamping.
#
#  --> Do not change this command!  If you want to improve
#      performance, you may comment out any of these commands.
#
   global mom_kin_machine_type

   if { [info exists mom_kin_machine_type] } {
      if { [string match "*3_axis_mill*" $mom_kin_machine_type] ||\
           [string match "*lathe*" $mom_kin_machine_type] } {
return
      }
   }


  # Lock on and not circular move
   global mom_sys_lock_status  ;# Set in MOM_lock_axis
   global mom_current_motion
   if { [info exists mom_sys_lock_status] && ![string compare "ON" $mom_sys_lock_status] } {
      if { [info exists mom_current_motion] && [string compare "circular_move" $mom_current_motion] } {

         LOCK_AXIS_MOTION
      }
   }


  # Handle rotary over travel for linear moves
   global mom_sys_rotary_error mom_motion_event
   if { [info exists mom_sys_rotary_error] } {
      if { $mom_sys_rotary_error != 0 && \
           [info exists mom_motion_event] && ![string compare "linear_move" $mom_motion_event] } {

         ROTARY_AXIS_RETRACT
      }

     # Error state s/b reset every time to avoid residual effect!
      unset mom_sys_rotary_error
   }


  # Auto clamp on
   global mom_sys_auto_clamp
   if { [info exists mom_sys_auto_clamp] && ![string compare "ON" $mom_sys_auto_clamp] } {

      AUTO_CLAMP
   }
}
 

И как в XZC

  Показать содержимое

#=============================================================
proc PB_CMD_kin_before_motion { } {
#=============================================================
# This command is called before every motion.  It converts the
# xyz input from UG to xzc for the mill/turn.  It also processes
# the tool axis and verifies its correctness.
#
# --> Do NOT rename this command!
#

   global mom_kin_machine_type

   if { [info exists mom_kin_machine_type] } {
      if { ![string match "*3_axis_mill_turn*" $mom_kin_machine_type] } {
return
      }
   }


   global mom_out_angle_pos mom_sys_coordinate_output_mode mom_sys_output_mode mom_pos
   global mom_mcs_goto mom_tool_axis mom_prev_pos mom_sys_millturn_yaxis
   global mom_kin_arc_output_mode

   if { ![string compare "POLAR" $mom_sys_coordinate_output_mode] } {

      if { [string compare "TRUE" $mom_sys_millturn_yaxis] } { MOM_suppress always Y }
      if { [string compare "POLAR" $mom_sys_output_mode] }  {
        #
        # This section outputs the code needed to change the control to polar
        # output mode.
        #
         PB_CMD_init_polar_mode
         set mom_sys_output_mode "POLAR"
      }

      MILL_TURN

      MOM_reload_variable -a mom_out_angle_pos
      set mom_prev_pos(3) $mom_out_angle_pos(0)
      set mom_pos(3)      $mom_out_angle_pos(0)
      MOM_reload_variable -a mom_pos
      MOM_reload_variable -a mom_prev_pos

   } elseif { ![string compare "CARTESIAN" $mom_sys_coordinate_output_mode] } {

      if { [string compare "TRUE" $mom_sys_millturn_yaxis] } { MOM_suppress off Y }
      if { [string compare "CARTESIAN" $mom_sys_output_mode] } {
        #
        # This section outputs the code needed to change the control to cartesian
        # output mode.
        #
         PB_CMD_init_cartesian_mode
         set mom_sys_output_mode "CARTESIAN"
      }
   }
}
 

Тем более в версии XZC явно намекают на:

# This command is called before every motion.  It converts the
# xyz input from UG to xzc for the mill/turn.
 It also processes
# the tool axis and verifies its correctness.

Спасибо за помощь, видимо реализовать в одном посте и полярку и вывод через доворот XZC не получится. Может всем известные здесь гуру nx еще выскажутся здесь) и направят в нужное русло)  

44 минуты назад, sokqq сказал:

Можно создать и залинковать отдельный пост на сверление, из главного, только придётся через события в начале траектории head постоянно прописывать это включение.

Спасибо за ответ! Я рассматривал этот вариант, но не хотелось делать несколько постов. Если совсем прижмет необходимость реализации данного вопроса, наверно так и сделаю. Не буду заморачиваться запихать все в один пост. 

Link to post
Share on other sites
vanek77777

Объясню в чем подвох, почему полярка не полностью устраивает) В принципе и полярка позиционирует отлично. Но в полярке не работает подача мм/об) а оператор очкует, что вывод нарезания резьбы метчиком через мм/мин. Думаю сделать принудительный вывод мм/мин в полярке. Но с пересчетом, если в nx, задано мм/об. И не париться по этому поводу. Если в nx оператор забьёт 300об/мин и подачу  шаг 0.8мм/об, пост выдаст подачу 240 мм/мин. В принципе теже вилы, только в профиль) 

 

Link to post
Share on other sites
10 часов назад, vanek77777 сказал:

Не буду заморачиваться запихать все в один пост.

Я у себя действовал по такому же принципу. Слишком муторно на токарно-фрезерном (у нас еще Y и противошпиндель) сделать единый пост, в котором учтено всё. Наши операторы тоже работают по "шаблону" и им любое отклонение в программе, которое отличается от их представления в голове = катастрофа.

  • Нравится 1
Link to post
Share on other sites
14 часов назад, vanek77777 сказал:

Если в nx оператор забьёт 300об/мин и подачу  шаг 0.8мм/об, пост выдаст подачу 240 мм/мин. В принципе теже вилы, только в профиль) 

 

Так у вас проблема другая. Вам надо подачу правильно выводить. Ставьте проверку в отдельной процедуре, о том какая у вас mom_feed_cut_unit и в зависимости от этого уже выводите. Прямо перед циклом. 

Link to post
Share on other sites
vanek77777
6 часов назад, grOOmi сказал:

 

Так у вас проблема другая. Вам надо подачу правильно выводить. Ставьте проверку в отдельной процедуре, о том какая у вас mom_feed_cut_unit и в зависимости от этого уже выводите. Прямо перед циклом. 

Типа если $mom_feed_cut_unit == "mmpm", то поделить подачу на обороты и вывести новое пересчитанное  значение уже в мм/об, в противном случае ничего не делать?

 

Link to post
Share on other sites
vanek77777

Почему не работает если перед циклом прописать custom command???:

 

global mom_sys_cycle_feed_mode

 

set  mom_sys_cycle_feed_mode "MMPR"

Может есть переменая если прописать которую, пост принудительно будет выводить подачу в требуемых  единицах?

Link to post
Share on other sites
vanek77777
22 часа назад, grOOmi сказал:

 

Так у вас проблема другая. Вам надо подачу правильно выводить. Ставьте проверку в отдельной процедуре, о том какая у вас mom_feed_cut_unit и в зависимости от этого уже выводите. Прямо перед циклом. 

Спасибо, очень помогло!

Вот текст custom command для постоянного вывода в мм/об (может кому пригодится):

 

global mom_feed_cut_value
global mom_feed_cut_unit
global mom_spindle_speed
global f_mm_ob
global f_raschet


set f_zadannaya $mom_feed_cut_value
set s_ob_min $mom_spindle_speed

if {$mom_feed_cut_unit=="mmpm"} {

set f_raschet [format "%.3f" [expr $f_zadannaya/$s_ob_min]]
set f_mm_ob $f_raschet

} elseif {$mom_feed_cut_unit=="mmpr"} {

set f_mm_ob [format "%.3f" $f_zadannaya]

}

 

Всех с наступающим Новым 2021!!!)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • DVAS
      Много спиральной расточки, если не использовать цикл,программы получаются длинные . На Фануке ,Oi-MF хочу воспользоваться подпрограммой через функцию G66 используя Helical  Setup   Если диаметр отверстий одинаков и одинаковая глубина получается хорошо :   G66P4001C12.5 D16 E2. F-12.5 H-25. I27. K1. M350.0  Q2. G0X30.Y90. N136 Y30. N137 Y60. Где    C  D  E  F  H   I   K   M   Q  значения переменных в подпрограмме P4001   Если диаметр отверстий разный или разная глубина , или разное и диаметр и глубина  получается  так :   G66P4001C12.5 D16 E2. F-12.5 H-30. I32. K1. M350.0  Q2. G0X120.Y35. G66P4001C12.5 D E F-12.5 H-20. I22. K1. M Q G0X120.Y65. G66P4001C12.5 D E F-12.5 H-10. I12. K1. M Q G0X120.Y105. С первым отверстием все хорошо, на остальных не прописываются значения некоторых переменных  : D   E   M  Q. Значит они приравниваются к 0.  Переменная  D  , это номер корректора на радиус инструмента. Значения 0 нет, программа останавливается, иначе было бы грустно. Подскажите, где ошибка в постпроцессоре. Fanuc.pmoptz Отверстия Разные.zip
    • viktor0vich
      Ноутбук Asus VivoBook s430UN , 8GB ОЗУ 2gb GeForce mx110, Intel Core I5 8th Gen ...   Программу нужно настраивать под железо??   https://drive.google.com/drive/folders/1l4tOiuktFc6bEvI5QsHBBh-iOqHrKKiw?usp=sharing - видео обработки
    • Ishimtcev
      Чудес не бывает, значит не так делаете.
    • Europartner
      Мы делаем пресс-формы. Но запросов на действительно сложные пресс-формы мало (1/10)  и все они под NDA.    
    • Docuk1
      Решил эту проблему заменой шрифта в значении массы. С помощью редактора шрифтов (например FontForge) изменил визуальное изображение точки на запятую. Потом в папке "основные надписи" все первые листы корректируешь шрифт в значении массы на новый. Если используешь шрифт ГОСТ 2.304, то прикладываю изменённый, пользуйся. Для уже готовых чертежей нужно выбрать любой другой формат, а потом опять свой, тупо перегрузить не работает. Если что-то не понял, то спрашивай. Сам очень долго с этим провозился. Этот шрифт также можно(нужно) использовать для масштаба 2,5:1 GOSTTypeAbez.ttf
    • zerganalizer
      Неа. Скорость обмена в нейронных связях мозга тоже скоростью света ограничена - там же лепиздричество блуждает, оно не может быстрее скорости света в вакууме, потому что в мозгах блуждает И ваши мозги сопротивляются распространению в них электричества сильнее вакуума! Если только у вас не ветер из вакуума блуждает в голове, тогда скорости равны!
    • zerganalizer
      И не надо - у мя свой, туристический, ношу когда на камушке присесть надо на скале какой-нибудь! Не Интерстеллар смотреть собрались?
    • wildthing
      Огромное спасибо , помогло 
    • ДОБРЯК
      Никаких сомнений нет. У вас все в литрах.  И жидкое давление в литрах... Очень остроумно и очень смешно.    Но только ничего нового. Уже больше 10 лет крутите эту шарманку на этом форуме.   Что еще остроумного про время скажите?
    • CNC_SKILL
      попробуй в файле станка сделать такие настройки  
×
×
  • Create New...