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

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


vanek77777

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

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

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

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

 

20201222_190836.jpg

20201222_190911.jpg

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


UnPinned posts

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

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

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

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

MOM_disable_address

Y

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

20201222_195542.jpg

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

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

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

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

@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.

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

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

Ссылка на сообщение
Поделиться на других сайтах
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 постоянно прописывать это включение.

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

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

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

 

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

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

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

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

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

 

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

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

 

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

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

 

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

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

 

global mom_sys_cycle_feed_mode

 

set  mom_sys_cycle_feed_mode "MMPR"

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

Ссылка на сообщение
Поделиться на других сайтах
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!!!)

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

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

 

Всегда пожалуйста. 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • 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
      только перед обновлением обязательно выполните  все что написано в руководстве и касается сохранения состояния станка и чпу. и обязательно сделайте образ диска и помните что слишком новые версии могут не заработать на вашем чпу относительно безопасно ставить только сервиспаки
    • NordCom
      Большое спасибо! Через это меню удалось зайти в меню. 95148->MOD
    • Danil89nur
      Доброе время суток. Столкнулся с проблемой на новой работе. Много деталей у который в свойствах отсутствует раздел "Материал" и приходится каждый раз вручную заходить туда, создавать раздел и выбирать там ""SW-Material@Name.SLDPRT". Возможно кто-то знает, либо сможет помочь с написанием простенького макроса, при нажатии на который в свойствах детали будет создаваться необходимый раздел и в нем сразу написан выбранный материал (желательно, чтоб там было указано сразу наименование материала, а не формула для его получения ""SW-Material@Name.SLDPRT"). Пытался самостоятельно через ChatGPT, но так как в програмировании я 0, то ничего не получилось)
    • Bot
      Коллеги, Благодарю вас за интерес к проекту электронной энциклопедии в области инженерного программного обеспечения PLMpedia, который более 15 лет развивался группой компаний ЛЕДАС. Представленный ниже скриншот передаёт содержание и структуру базы данных энциклопедии, накопленной за эти годы: именно такую начальную страницу, можно было до сегодняшнего дня увидеть, придя по адресу https://plmpedia.ru/ В последние несколько лет ЛЕДАС особенно интенсивно и результативно вкладывает все ресурсы в развитие своего основного бизнеса: см. ниже «О компании ЛЕДАС». Сегодня я с некоторым сожалением констатирую, что у компании ЛЕДАС более нет возможности отвлекать ресурсы своих сотрудников на некоммерческий (фактически волонтерский) проект PLMpedia. Вся база данных ресурса может быть безвозмездно передана любому юридическому или физическому лицу с единственным условием: наш преемник должен будет публично объявить о состоявшейся передаче и взятии на себя [...] View the full article
    • gudstartup
      @NordCom  у вас наверное это так происходит читайте этот раздел itnc_530.pdf
    • fenics555
      интересный индус. А нового то чего?
    • gudstartup
      откудова качаете мне интересно?
    • ДОБРЯК
      Совсем забыл про собственные вектора       собственный тон частота           0.013                        1   Расчет собственных форм и частот   1         1   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   1         2   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00       собственный тон частота       15910.75                         2   Расчет собственных форм и частот   1         1   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   1         2  -7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00        
    • gudstartup
      так я это и написал
×
×
  • Создать...