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

Вывод торцевого сверления через 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 пользователей

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




  • Сообщения

    • MagicNight
      Да дело не в бедности, ищу оптимальный ноут, пока не могу найти.
    • Bot
      АСКОН объявляет о старте открытого бета-тестирования новой версии КОМПАС-3D и приложений. Коммерческая версия КОМПАС-3D v23 выйдет летом 2024 года, но уже сейчас испытать новинки может любой желающий. Бета-тестирование — это проверка новой функциональности в «полевых» условиях, когда пользователи знакомятся с нововведениями на собственных проектах и сценариях работы, а также проверяют совместимость со своим программно-аппаратным обеспечением. Новая версия создавалась в соответствии с дорожной картой АСКОН для задач проектирования изделий высокотехнологичных отраслей и стала еще более функциональной и производительной. При разработке учитывались предложения пользователей по темам трехмерного моделирования, подготовки чертежей и спецификаций, приложений для машиностроения, приборостроения и строительства. Бета-версия КОМПАС-3D открыта для всех. Дистрибутив предоставляется бесплатно на время проведения тестирования. *** Период проведения бета-тестирования: с 6 [...] View the full article
    • fenics555
      Уважаемые Дамы и Господа!  Есть библиотечные изделия, которые почему-то очень доооооолго грузятся в сборках. Я хочу попросить Вас потестить их и сказать в чем причина, ибо совсем невозможно работать. gost18829-73.prt.1 pin_split.prt.1 Как это всё можно ускорить?
    • gudstartup
      а вы хоть станок проверяли по программе на изделии на точность прежде чем товарищей этих выгнать? если нет то грешите на самих себя! система в наших краях еще не распространенная поэтому и тем тут нет надо в поднебесную писать
    • AlexArt
      Ну допустим, ты и на другом ресурсе это опубликовал. А не коммуниздил. Но вот продвигать воровство от государства, ворующее из Вики, это верх мерзости.
    • maxx2000
      Ах, да. Фильтры выбора добавили. Теперь можно выбрать только то что видно на первом плане, а не вместе с тем что с обратной стороны детали. В общем надо обновляться. Как раз работёнка на прессформу нарисовалась 
    • maxx2000
      Причина того - Кроилово. Кроилово всегда приводит к попадалову. Месяц простоял сколько мильонов деревянных потеряли? Вопрос риторический. И ещё будет стоять. Как памятник человеческой глупости и жадности.
    • AlexKaz
      "9 июля 1968 года на мышах был проведен самый знаменитый эксперимент американского ученого-этолога Джона Кэлхуна «Вселенная-25». Суть опыта заключалась в создании идеальных условий, где мыши могли бы жить и размножаться, не ведая никаких забот, вдали от хищников и в отсутствие эпидемий и заболеваний. Для этих целей ученый построил специальный загон, куда были помещены четыре пары белых мышей (самцов и самок). В распоряжении мышей всегда была чистая вода и еда в изобилии, специальные гнезда, где можно обустроить себе жилище ― гнезд в загоне хватало для проживания нескольких тысяч мышей. Температура в загоне в среднем составляла около 20 ℃ и была комфортной для мышей. Животные не подвергались никаким влияниям извне и жили в идеальных условиях в свое удовольствие. А дальше началось самое интересное. На первом этапе эксперимента мыши хорошо размножались, вели активный образ жизни, охотно играли. На следующей фазе эксперимента мыши стали есть меньше, перестали наедаться до отвала. На третьей фазе эксперимента, когда в загоне были уже сотни мышей, произошло распределение социальных ролей, стала ярко выраженной иерархия, клановость. Появились так называемые отверженные ― молодые особи, которых другие, взрослые мыши сгоняли в центр загона, не давали им вести нормальный образ жизни, причиняли физический вред. В природе такое, наверное, было бы невозможно, ведь эти мыши-агрессоры просто не дожили бы до старости: их бы съели хищники. Но в загоне Кэлхуна хищников не было, и взрослые мыши начали попросту издеваться над молодняком. Образовались две большие группировки: самцы-одиночки и самки-одиночки. При этом самки-одиночки отказывались спариваться <с менее статусными многочисленными молодыми самцами и с оставшимися старыми статусными> и отвергали ухаживания самцов. У мышей стал проявляться тотальный индивидуализм, мыши не стремились создать семью. На последней, четвертой стадии мышиная популяция стала сокращаться. Появились самцы, которых сам Кэлхун назвал «красивыми» (англ. beautiful ones), из-за отсутствия ран и рубцов. <В оригинале: They never engaged in sexual approaches toward females, and they never engaged in fighting, and so they had no wound or scar tissue. Thus their pelage remained in excellent condition. - Дословный перевод: Они никогда не прибегали к сексуальным подходам к самкам, и они никогда не участвовали в боях, и поэтому у них не было ран или рубцовой ткани. Таким образом, их шерсть сохранилась в отличном состоянии.> Эти мыши не вступали в борьбу за самок и территорию, не проявляли активности к размножению и только питались, спали и чистили шёрстку. У мышей стали проявляться различные формы девиантного поведения, вспышки агрессии. Самки стали проявлять агрессию, защищать себя сами, стали умерщвлять своих детенышей, а затем окончательно отказались размножаться. На пике эксперимента в загоне одновременно проживало чуть более двух тыс. мышей. Еды и гнезд было достаточно для дальнейшего роста популяции, но через четыре года после начала эксперимента Кэлхун остановил свой опыт, потому что в загоне осталось чуть более сотни мышей, и все они уже вышли из репродуктивного возраста. По итогам эксперимента Кэлхун пришел к выводу, что достижение определенной плотности населения и заполнение социальных ролей в популяции приводит к распаду общества" https://physicsoflife.pl/dict/pic/calhoun/calhoun.. https://scientificrussia.ru/articles/utopiya-dlya-mys.. https://ru.wikipedia.org/wiki/Кэлхун,_Джон_(этолог)
    • gudstartup
      @Koels вот в чем дело пока ds609 это предупреждение поэтому F может и не появится если sv601 это значит ошибка. возможно при нагреве радиатора серво определяет это как предупреждение или ваш вентилятор крутиться медленнее чем оригинальный и серва думает что он встал хотяпри этом обычно на экране в строке состояния FAN.мигает больше у меня вариантов нет....  
    • ДОБРЯК
      Решите любым алгоритмом. Тогда будет конструктивный разговор. :=)
×
×
  • Создать...