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

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

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




  • Сообщения

    • Srgwell
      Есть такая штуковина в эскизах соливеркса. В эскизах если отрезки темные они определены. Было бы здорово, если в сборке деталей детали которые подвижные, то есть у которых не хватает сопряжений, обозначались другим цветом. У меня, например вчера большая сборка из-за каких то движений не сопряженных деталей так перевернулась!!! Я долго искал детали, которые подвижные. Конечно я перевертыш вернул назад, но причину искал долго.
    • Udav817
      таки в чём именно проблема? опыта чтения чертежей? строить модели можно очень разными способами. упоротыми и не очень.  даже вал можно построить двумя почти равнозначными способами.  1. сделать эскиз половины вала (по оси) и потом "крутануть" вокруг оси. 2. построить один цилиндр (или конус). потом следующий. и так каждый элемент вала. правда потом нужный размер искать и редактировать, в случае корректировок очень неудобно. но для простых моделей из 2-3 элементов технология построения вполне сойдёт. ну это как раз и есть задача конструктора - выбрать базу построения. или что, на каких-то подобных деталях по аналогии нельзя вывод сделать? перенести могут админы. если им написать. отредактировать можно только в ограниченный промежуток времени. потом - только админы. а ветка видимо эта: https://cccp3d.ru/forum/37-nx/ ну и вообще... может вы там свои ответы и так найдёте.
    • Bot
      14 -15 марта в Центре разработки АСКОН в Коломне состоялось закрытое альфа-тестирование, где приглашенные пользователи первыми опробовали практически готовый КОМПАС-3D v23. В этом году в команду «альфа» вошли сотрудники предприятий Объединенной двигателестроительной корпорации и заслуженные испытатели новых версий САПР из Москвы и Новосибирска. Главная задача участников тестирования — попробовать своими руками, как реализованы их пожелания к системе проектирования. Смотреть полностью
    • Udav817
      второму размеру квалитет выше 9 уже не назначить. это будет бред, который можно и нужно округлить, т.к. значение отклонения превышает значение низшего разряда значащей части размера. а если у обоих размеров 7 квалитет, то с чего бы они оценивались по-разному?
    • roiman
      По картинке у вас идёт контакт зуба "кулачка" с роликом цепи и всё. Профиль никак не задействован. Это не кулачок. Цепь просто передаёт усилие от пружины. Задача этого т.н. "кулачка" - перевести горизонтальное усилие от пружины в вертикальное, наверно. А дальше. Дальше непонятно. Как коромысло закреплено. Где ось вращения. Что это за 3 отверстия. И пр. Скорей всего, регулировка момента проводится просто изменением плеча усилия контакта зуба от оси вращения. Но это, опять же, догадки.   Но мне неинтересно больше. Можете не тратить своё время на объяснение. Достаточно уже моего потраченного. Очевидно, что вы не хотите решить производственную задачу, а просто выполняете поручение, и результат вам не важен.   Ну, не знаю. Зрение, конечно, не идеальное, но на картинке вижу подобие выступов и  впадин. Ещё один аргумент в пользу того, что вы большей части начальных условий задачи не дали. Не удивлюсь, что там есть еще элементы в конструкции, которые снова поменяют постановку задачи.     Вам уже сказали, что это не методичка. Это статья, написанная по-быстрому на коленке, чтобы выполнить годовой кафедральный план на кол-во публикаций. Максимум, что можно из неё взять - схему, и то, половинчатую, т.к. всё интересное упоминается парой малозначащих предложений.   Запятые, пунктуация... Челябинское предприятие, производящее пантографы, делает пантографы для трамваев ПК ТС. Не УКВЗ. Но я мало, что знаю про него. Видел на выставке издалека их стенд. Хотя в вашем предложении можно найти двойной подтекст, учитывая кем работал Иванов, и какое отношение Винокур имел к УКВЗ.   Ладно, закончим. Спасибо за ваше уделённое время и ответы.
    • Guhl
      Питание (6.. 7В) надо подавать на XCommand-24 (V6BACKUP) Параметры сливать либо программой 2000WU.EXE, либо руками переписать Если привод управляется не по модбас, то все не так уж и страшно выглядит. Если по модбас, то либо настраивать чпу, либо ставить между чпу и приводом отдельный плк    
    • Udav817
    • Udav817
      на онлайн-курсах по IT организаторы курсов зарабатывают деньги на цензура хомячках, которые верят, что после этих курсов смогут найти работу по данной специальности в какой-нибудь (желательно крупной) IT-компании. ну, смогут. например, уборщиком в двагисе или курьером в йандексе. а вот инженером стать... тут и 5 курсов универа не помогут. там только базу и теорию засовывают в голову. часто даже ногами. многое из этого не влезает и вываливается, свисает макаронинами на засохших извилинах, которые вылезли через зад у студента, пытающегося в ТММ/ДМ за две ночи до экзамена сделать курсач. многие вещи приходится уже в процессе работы заново изучать. а что-то даже забыть и переучиться. курсы на инженера (норм. уровень, а не ламер какой-то) если и будут, то длиться будут года два минимум, с дом. заданиями, практикой и стоить будут почти как вторая вышка по данной специальности. а если бесплатно - смотрите на ютубе как пакистанцы в гараже чинят шины, блоки цилиндров, растачивают валы и будет вам счастье. когда-нибудь вы сможете так же. благо, страна наша к этому уровню максимальными темпами движется.
    • Udav817
      какие-то чудесные значения. почему угол 60, а не 59, 845? какой смысл контролировать давление в форсунке? давление в ТТХ обычно указывается на входе (то есть давление трубопровода). ну и размер ёмкости (эффективное расстояние форсунки отсюда легко вычисляется). или вы прям в форсунку манометр вкрутить решили? зачем? расход всегда плюс-минус. температура тоже. и давление. вопрос - насколько точно должны выдерживаться параметры. если вы указываете в сотых долях, то по идее это подразумевает, что и допустимые отклонения значений будут в сотых долях.  температура среды и жидкости уже интересны. стоит указывать и среду и жидкость. с чем вода? какого качества? от этого и выбранные материалы будут зависеть. и долговечность можно оценить. и понять, стоит ли вообще что-то сложное городить или максимально дешёвую, потому что придётся менять каждый месяц.   ну и... чем стандартные решения не подошли? я вот на русфорсунке нашёл достаточно близкую по ТТХ форсунку. а есть ещё индийский спрэйтек, немецкий лехлер (санкционный, поэтому сейчас сложнее купить) ну и т.д.   когда пишут, что времени минимум... это означает "надо было вчера". в таком случае и писать смысла нет.
    • EDYARD
      Добрый день! Есть клон и есть заводской CD. TNC надо уточнить, но они в принципе 400 и430 одинаковы.
×
×
  • Создать...