Динамика


 Введение.

В структуре УП вы должны предусмотреть возможность вывода и учета команд динамики УЧПУ.
После создания постпроцессора и проверки правильности отработки геометрических команд. Перед Вами встанет задача оптимизации работы УП.

Зачем?

Линейная и круговая интерполяция приводит к скачкам ускорений осей станка на границах кадров, что в свою очередь, может привести к возбуждению резонансов в элементах станка, а это приводит к фацетированию и вибрации - на поверхности детали. Основной причиной вибрации при резании является не гладкость траектории. Вторым важным фактором является изменение направления усилия резания, которое определяется не только кривой перемещения, но и положением материала относительно инструмента.

 Для того, чтобы почувствовать её - достаточно приложить руку к станку или голове шпинделя во время работы. Вы явственно почувствуете дрожание или характерное дергание системы "инструмент-шпиндель-станок". Это может  случиться с любым станком - даже если у него "супер-пупер" ЧПУ.
  Не надо витать в облаках: несмотря на фильм "звездные войны", всякие нано-технологии ( нано-танки, нано-самолеты, нано-еду, ... ), суперкомпьютеры.  Механообработка - это прежде всего механика. Это колеса, передачи, шестерни, червяки глобоидные. И вентилятор для охлаждения всей этой чудо-системы.
  Очень часто все начинают хвататься за функции разжима-зажима осей М10\М11\......, но тут они не играют ни какой роли.

Как и с Кем ?


  1.  Решение проблем динамики, Вы должны вести параллельно с наладчиками станка (оборудования). Конечно, если это возможно.
     Вы должны будете выбрать наиболее подходящее для данной номенклатуры деталей, обработки, а также работы станка - функции.
     А наладчик, должен максимально возможно настроить параметры "станка-УЧПУ". 
  2. По мимо всего прочего, технолог-программист должен создавать управляющую траекторию (операцию) с учетом поверхности детали (материала) и "жесткости" станка, а также вибропрочности дорогостоящего режущего инструмента. Так как появление нового оборудования — быстрорежущих станков и сверхтвердого инструмента — внесло ряд корректив в методы формирования траекторий движения.
      - это и упрощение поверхности, её "перестройка";
      - уменьшение\увеличение допуска в UG на линейные перемещения и на угловые.
     Конечно, после подобных преобразований  УП может "раздуться". Но это плата за высокоскоростное резание и качественную деталь.

 Стандартные функции динамики.


   Как правило все СЧПУ своими внутренними алгоритмами автоматически рассчитывают скорость по профилю в зависимости от:
• запрограммированной подачи F;
• совокупности длин векторов перемещений в окрестности текущего кадра;
• величины заданного рабочего ускорения А;
• значения допустимого перепада скорости dV на изломах профиля.
   При изменении направления траектории, скачкообразно меняются скорости по осям, задающим перемещение. Системы автоматически корректируют запрограммированную величину подачи F, чтобы при прохождении изломов траектории мгновенное изменение скорости ни по одной оси, составляющей вектор, не превысила бы заданную величину dV. Если происходит изменение направления движения (реверс) хотя - бы по одной оси – системы выполнят полное торможение в узле (V=0) независимо от значений параметров dV. При круговой интерполяции системы определяют dV относительно касательных к дуге окружности в узловых точках.  При сплайн-интерполяции расчет скорости в узлах ведется аналогично линейной интерполяции.

    Все эти возможности осуществляются обычно, (обязательно читайте мануил по программированию для данной ЧПУ) с помощью функций G9, G27 - G29, G61 - G64. Отмена их действия осуществляется вводом функций другой режима или группы.

    
Рассмотрим кратко стандартные функции динамики различных СЧПУ.

      NС110-210, FMS3000, Альфа,….., и многие другие УЧПУ. Все функции этих простейших СЧПУ - позволяет запрограммировать 3 варианта торможения в конце кадра:
  • - До подачи, равной нулю;
  • - до подачи, заданной параметром (в общем случае не равной нулю);
  • - до подачи, определяемой величиной изменения направления в соседних кадрах.

  В некоторых УЧПУ допускается возможность %-изменения ускорения движения (либо отдельных осей) командой ACC=

  • Торможение до подачи, равной нулю, используется для точного останова координат в конце кадра. Кадр считается законченным только тогда, когда разница между конечными и текущими координатами будет меньше или равна заданной станочными параметрами. Данный вид торможения задается с помощью функций G9, G61 (G29), при этом функция G9 действует только на текущий кадр, а G61 (G29) действует до замены на другую функции.  

  • Торможение до подачи, заданной параметром. Данный вид торможения задается с помощью функций G63, G64. При этом функция G63 действует до замены, а действует только на текущий кадр. На границах кадров происходит снижение подачи до величины, заданной параметром N, и переход на следующий кадр без проверки вхождения координат в зону контроля.

  • Геометрическое регулирование подачи - G64 (G27, G28). Значение подачи на границах кадров определяется величиной изменения направлений в этих кадрах и величиной параметра точности прохождения границы этих кадров.

     Более того, при выполнении кадра с ускоренным перемещением G00 – практически все системы совершают останов до 0 (это зависит от настроек системы).  Отдельное положение занимают дополнительные функции, отвечающие за точность позиционирования в кадре G06 - G07, или другие G.

Sinumerik
( Siemens )

 Sinumerik - является лидером по числу и функциональности функций направленных на динамику. Самая мощная и структурно математически построенная СЧПУ. Практически всю динамику охватывает CYCLE832, но есть и много других команд.

  CYCLE832(точность, условия ) - данный цикл объединяет важные G-коды, машинные и установочные данные, необходимые для высокоскоростной обработки (HSC = High-Speed-Cutting).  В цикле различаются три технологические обработки: чистовая,  предварительная чистовая, черновая обработка. 

  Цикл будет объединять все ниже описанные команды и функции. Эти функции можно применять отдельно от CYCLE832. Стандартом является треугольник качества показанный выше.

 Управление траекторией 

 С целью режима управления траекторией является увеличение скорости и гармонизации параметров движения. Это реализуется через 2-а механизма=>
 Look Ahead  - СЧПУ заранее вычисляет несколько кадров УП и определяет выходящий за рамки кадра профиль скорости. Для этого существует функция и её клоны:  G64
 Скругление углов - благодаря упреждению считывания кадров, производиться так называемая перешлифовка. То-есть, границы кадров или границы между геометрическими объектами скругляются.
 Степень скругления определяется через значение ADIS\ADISPOS
  G641 - скругление углов с ADIS\ADISPOS.
  G642 - скругление углов с допуском отдельной оси (исходя из машинных параметров).
  G643 - внутрикадровое скругление.
  G644 - оптимальное по скорости и ускорению скругление  углов для быстрого позиционирования вне контура.
 Благодаря этим 2-м механизмам создается контур с равномерным профилем движения по траектории. Это с свою очередь, улучшает условия резания, увеличивает качество поверхности и уменьшает время обработки!!!

 Компрессия 

  Компрессор появился в версиях СЧПУ выше 6.4.
 Компрессор собирает последовательность G-команд согласно установленному диапазону допуска сжимает его в сплайн, который может выполняться СЧПУ напрямую.
 Поверхность становиться значительно ровнее, так как оси станка могут перемещаться более гармонично, благодаря чему удается избежать возбуждения резонансов станка.
   COMPCURV - включение компрессора аппроксимации полиномами 5-го порядка.
  COMPCAD - включение компрессора аппроксимации B-сплайнами, но максимальная длина траектории 5 мм.
   COMPOF  - компрессор выключен.

Предуправление

 Этот механизм инженеры Сименс придумали для уменьшения эффекта "отталкивания" фрезы в процессе реза от детали\заготовки.
 Поэтому зависящая от скорости погрешность при движении по траектории уменьшается до 0.
 FFWOF  - предуправление выкл.
 FFWON  - предуправление включено.
 BRISK  - скачкообразное ускорение осей
 SOFT  - ускорение с ограничением (плавное)

 Применение:
   FFWOF BRISK - для черновой обработки.
   FFWON SOFT  - высокая точность и мягкость движения осей.
   FFWOF SOFT  - невысокая точность, плавность движения.

Дополнительные
 команды

  UPATH параметрирование осей ориентации f(u) - u параметр.
 SPATH параметрирование синхронных осей f(s) - s параметр, длина дуги для движения по траектории.
  ACC[ось]= ... - программируемое ускорение в % от максимального ускорения.
  FGROUP(X,Y, Z,...) - определение осей, для которых относиться подача F.
 FNORM, FLIN, FCUB, F=FPO() - подача для кадра предстает в виде управляющей функции ( линейной, кубической, полинома).
 G60  - точная остановка на конце кадра.
 G601- смена кадра при достижении точной погрешности.
 G602- смена кадра при достижении грубой погрешности.
 G603- смена кадра при завершении кадра.
 

Heidenhain      Самая бедная на динамику система.
      Функций динамики - можно написать - почти нет.
      Имеется очень мощный Look Ahead Feed-Function (LAF) с минимально возможными перемещениями (<10 µm) и буфер из почти 1000 кадров.
      Также имеются M-функции:
            M90 - сглаживание острых углов (шлифовка между кадрами).
      A основное средство влияния на точность выполнения УП - Цикл 32: установка отклонения, точности или девиации.
             ISO формат:
                   Цикл G62 Txxxx
                     или G32 Txxxx
            
Heidenhain формат:
                   95 CYCL DEF 32.0 TOLERANCE
                   96 CYCL DEF 32.1 T0.05
                   97 CYCL DEF 32.2 HSC MODE:1 TA5

      В некоторых вариациях Heidenhain-a есть цикл G28, который предназначен для контроля точности на разных режимах работы.
         Активация:
              N... G28 {l3=...} {I4=...} {I5=...} {I6=…} {I7=...}
         Отмена:
              N... G28 {I3=0} {I4=0} {I5=0} {I6=0} {I7=0}
         Отмена всех введенных значений:
              N... G27
                   Параметр I4 = тормозить при выполнении (G0), или нет.
                   Параметр I5 = выключить \ выключение логики учета G0.
                   Параметр I6 = изменение ускорения.
                   Параметр I7 = управление точностью обхода контура (черновая-чистовая).
 
Fanuc \ Mazatrol

Фанук - самая старая из представленных УЧПУ. Многие вещи, заложенные в ней, потом плавно перекочевали в более современные системы управления. Мощный макро-язык. Флеш-память. Огромное число настроечных параметров. Буфер - Look Ahead. Изначально систему делали для управления роботами, роботизированными комплексами - что значительно наложило отпечаток на её функциональное построение и возможности.
   Это УЧПУ не любят - НИ операторы ЧПУ, НИ постпроцессорщики, НИ те кто её обслуживает.
   Дальнейшем развитием этой системы - стало появление УЧПУ Mazatrol. Но функционально, они как 2-е капли похожи.
   Огромное число G-функций динамики. Также есть высокоскоростное резание.
   Самые распространенные:
     G09 - Команда проверки точности останова.
     G61 - остановка до 0 , до отмены ( Команда режима проверки точности останова )
     G62 - автоматическая обработка углов ( Команда автоматического регулирования подачи в угле )
     G64 - режим реза ( Команда режима резания )
     G61.1/.K - Геометрическая компенсация/Коэффициент точности
     G......

 

  Особняком, от выше перечисленных классов УЧПУ стоит советская ЧПУ класса "Н33" :  как Вы знаете, в ней применяется алгоритм разгона-торможения на основе кода подачи { 0, 4 }: F4xxx  или  F0xxx.  Торможение происходит, либо до 0, либо до фиксированной подачи ( 20, 30, 60, 120, 240 ) мм/мин.

Как вводить динамику в УП.


Есть несколько способов:

Статичный
   Самый простой способ. Он заключается в том, что в одном из  событии в начале УП вставляется G-код, который действует на всю УП.
Как правило, событием где необходимо это вставлять, является либо Start_Of_ Program, либо Initial move.
Пример:

#=============================================================
proc PB_CMD_start_of_program { } {
#=============================================================
global mom_logname mom_ug_version mom_date mom_part_name mom_machine_name
global mom_warning_info

MOM_output_literal ";$mom_logname, Date:$mom_date "
MOM_output_literal ";MACHINE: $mom_machine_name "

 MOM_output_literal "SOFT"
 MOM_output_literal "FFWON"
 MOM_output_literal "G642"
 MOM_output_literal "COMPCURV"
 MOM_output_literal "UPATH"
##
MOM_output_literal "TRAFOOF"
MOM_output_literal "G54"

}

   Недостаток этого способа всего лишь один: вводимые условия действуют на всю обрабатываемую номенклатуру деталей и .. Среди них обязательно встретиться 1 или 5 наименований на которую Ваши условия распространяться не будут.

Динамический.
    Не очень сильно используемый метод. Смысл его в том, что в постпроцессоре закладываются условия ( алгоритмические ) посредством которых в УП выдается либо G-код, влияющий на торможение, либо мы изменяем выдаваемую подачу F. Число таких способов очень много. Каждый алгоритм имеет как сильные так и слабые стороны.
   
Например:

1. Ограничение на подачу F. Если Fзаданная>Fconst  , то в кадр линейного или кругового движения выдаем, допустим, G9.
 
2. Ограничение на перепады подач.

Алгоритмы можно найти здесь Создание постпроцессора.Теория.
Допустим, Вы рассчитали оптимальную скорость фрезы или подачу, при котором перепад подач по осям будет в необходимом пределе.
Если Fзаданная>Fоптимальная , то либо вы выдаете в кадр G9, либо Fзаданная=Fоптимальная.

 

3. Можно рассчитывать угол между примитивами в УП.

Если угол между примитивами движения превышает определенное значение, допустим 57°-89.9999°, то соответственно, применять динамические условия в кадре.
 Исходники для расчета углов: pb_slowdn.tcl
 Расчет углов между примитивами  правильный ( я тестировал и проверял ), единственное ограничение:
    set mom_kin_arc_output_mode "QUADRANT"  - в постпроцессоре вывод окружности должен быть по квадрантам.
    set mom_kin_read_ahead_next_motion  TRUE    - для расчета углов между примитивами, необходимо включать в постпроцессоре переменную для вывода в постпроцессор следующей точки.
  Практическое применение можно посмотреть в постпроцессоре: kfp250a_2c42.zip
 

Диалоговый.
     Этот метод трудно назвать независимым, так как он очень сильно зависит от 2-х выше описанных способов и является их логическим продолжением.
     В первую очередь он предназначен для технологов непосредственно создающих УП. Он позволяет менять заложенные/применяемые в постпроцессоре условия динамики.
     Применяется это или вводом атрибутов в создаваемую операцию, применением или созданием UDE, вводом (созданием) разных диалоговых окон при запуске постпроцессора.
     Например:
         Пусть мы хотим создать/описать стандартную APT команду SLOWDN/ { ON | OFF | AUTO [,"angle"]} {, MAXFEED[, "maxFeed" ] } .Для этого создается MOM-команда, MOM_slowdn. И вводим описание в UDE ( в файл ude.cdl ).

ude.cdl Обработчик постпроцессора
EVENT slowdn
{
UI_LABEL "Slowdn"
CATEGORY Mill Drill
PARAM command_status
{
TYPE o
DEFVAL "Active"
OPTIONS "Active","Inactive","User Defined"
UI_LABEL "Status"
}
PARAM modes_slowdn
{
TYPE o
DEFVAL "ON"
OPTIONS "ON","OFF","AUTO"
UI_LABEL "Режим торможения"
}
PARAM slowdn_min_angle
{
TYPE d
DEFVAL "5.0"
UI_LABEL "Min угол"
}
PARAM modes_slowdn_feed
{
TYPE o
DEFVAL "OFF"
OPTIONS "ON","OFF"
UI_LABEL "Режим торможения по подаче"
}
PARAM slowdn_max_feed
{
TYPE d
DEFVAL "600.0"
UI_LABEL "Mаксимальная допустимая подача"
}
PARAM slowdn_text
{
TYPE s
TOGGLE Off
UI_LABEL "Text"
}

}
#
# Slowdn
#
#=============================================================
proc MOM_slowdn { } {
#=============================================================
global mom_command_status
; # Режим торможения по подаче ON/OFF
global mom_modes_slowdn_feed
; # Режим торможения ON/OFF/AUTO
global mom_modes_slowdn
; # Устанавливаемый угол (константа)-до которого торможение не производиться
global mom_slowdn_min_angle
; # максимальная допустимая подача
global mom_slowdn_max_feed

; # Константы
global SLOWDN_MIN_ANGLE SLOWDN_MAX_FEED SLOWDN_ACCELERATION

global mom_kin_rapid_feed_rate mom_kin_max_fpm
global mom_warning_info

if {[info exists SLOWDN_MIN_ANGLE]==0} { set SLOWDN_MIN_ANGLE 89.0 ; }
if {[info exists SLOWDN_MAX_FEED]==0} { set SLOWDN_MAX_FEED 600.0 ; }
if {[info exists SLOWDN_ACCELERATION]==0} { set SLOWDN_ACCELERATION 5 ; }

if {[info exists mom_modes_slowdn]==0} { set mom_modes_slowdn "OFF" ; }
if {[info exists mom_slowdn_min_angle]==0} { set mom_slowdn_min_angle -1.0 ; }
if {$mom_slowdn_min_angle==""} { set mom_slowdn_min_angle -1.0 ; }

if {"$mom_modes_slowdn"!="OFF"} {
if {[EQ_is_le $mom_slowdn_min_angle 0.0 ] || \
[EQ_is_ge $mom_slowdn_min_angle 180.0 ] } {
set mom_warning_info "Предупреждение! \[proc MOM_slowdn\] ANGLE=$mom_slowdn_min_angle ! (Режим торможения 'по углу' - отменен)"
MOM_output_to_listing_device $mom_warning_info ; MOM_catch_warning ;
set mom_modes_slowdn OFF ;
set mom_slowdn_min_angle $SLOWDN_MIN_ANGLE ;
}
}

if {[info exists mom_modes_slowdn_feed]==0} { set mom_modes_slowdn_feed "OFF" ; }
if {[info exists mom_slowdn_max_feed]==0} { set mom_slowdn_max_feed -1.0 ; }
if {$mom_slowdn_max_feed==""} { set mom_slowdn_max_feed -1.0 ; }

if {"$mom_modes_slowdn_feed"!="OFF"} {
if {[EQ_is_le $mom_slowdn_max_feed 0.0 ] || \
[EQ_is_gt $mom_slowdn_max_feed $mom_kin_rapid_feed_rate] || \
[EQ_is_gt $mom_slowdn_max_feed $mom_kin_max_fpm] } {
set mom_warning_info "Предупреждение! \[proc MOM_slowdn\] MAX_FEED=$mom_slowdn_max_feed ! (Режим торможения 'по подаче' - отменен)"
MOM_output_to_listing_device $mom_warning_info ; MOM_catch_warning ;
set mom_modes_slowdn_feed OFF ;
set mom_slowdn_max_feed $SLOWDN_MAX_FEED ;
}
}

return 0
}

Точно таким же способом, Вы, можете описать и цикл Heidenhain 32:

ude.cdl Обработчик постпроцессора
EVENT tolerance_cycle
{
UI_LABEL "Задание допуска (CYCLE 32) (для Heid)"
CATEGORY Mill Drill
PARAM command_status
{
TYPE o
DEFVAL "Active"
OPTIONS "Active","Inactive","User Defined"
UI_LABEL "Status"
}
PARAM tolerance_on_off
{
TYPE o
DEFVAL "OFF"
OPTIONS "OFF","ON"
UI_LABEL "Tolerance"
}
}
#=============================================================
proc MOM_tolerance_cycle { } {
#=============================================================
global mom_command_status
global mom_tolerance_on_off

}

#=============================================================
proc PB_CMD_initial_move {} {
# Эта процедура выполняется при первом перемещении в каждой программе.
#=============================================================
global mom_tolerance_on_off

if {[info exists mom_tolerance_on_off]==0} { set mom_tolerance_on_off "OFF" ; }

# Если задана ПП команда выводится цикл задания допуска
if {$mom_tolerance_on_off == "ON"} {
MOM_do_template tolerances_1
MOM_do_template tolerances_2
}

}

  Или вводить в оборот CYCLE832 от Синумерик:

ude.cdl Обработчик постпроцессора
#===================================#
EVENT ude_cycle832
#===================================#
{
UI_LABEL "High Speed Settings(cycle832)"
CATEGORY MILL DRILL
PARAM udp_c832_setup
{
TYPE o
OPTIONS "FINISH","SEMIFINISH","ROUGH","OFF"
DEFVAL "FINISH"
UI_LABEL "Setup"
}
PARAM udp_c832_tolerance
{
TYPE d
DEFVAL "0.01"
UI_LABEL "Допуск"
TOGGLE OFF
}
PARAM udp_c832_transformation
{
TYPE o
OPTIONS "SETUP","TRAFOOF","TRAORI(1)","TRAORI(2)"
DEFVAL "SETUP"
UI_LABEL "Трансформация"
}
PARAM udp_c832_path_control
{
TYPE o
OPTIONS "SETUP","G642","G641","G64"
DEFVAL "SETUP"
UI_LABEL "Управление траекторией"
}
PARAM udp_c832_ffw_control
{
TYPE o
OPTIONS "SETUP","FFWOF SOFT","FFWON SOFT","FFWOF BRISK"
DEFVAL "SETUP"
UI_LABEL "Предуправление"
}
PARAM udp_c832_compression
{
TYPE o
OPTIONS "SETUP","COMPOF","COMPCAD","COMPCURV","B-SPLINE"
DEFVAL "SETUP"
UI_LABEL "Компрессия"
}

}
 .........

   Конечно, если технолог опытной, он может вставлять необходимый ему  G-код - UDE командой INSERT:

для обычных ЧПУ или Фанука:
INSERT/G64
для Сименса:
INSERT/CYCLE832(0.01,876543210)
INSERT/G601
для Heidenhain:
INSERT/ CYCL DEF 32.0 TOLERANCE
INSERT/ CYCL DEF 32.1 T0.01
 Раз вставишь, другой раз,.... На 50-й раз это просто надоест или забудешь. Проверено.

  Для того, чтобы технолог не забывал можно, можно и нужно, создать диалог, который бы активизировался при каждом запуске постпроцессора - спрашивая технолога те или иные динамически характеристики : G-код, ускорения , подачи, .... Но, злоупотреблять этим не стоит.

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


Copyright © 2001—2009 че