Автоматизация ручной смены инструмента

Настройка ручной смены инструмента

  1. Через меню Сервис -> Настройки -> Макросы создать новый макрос и скопировать в него содержимое макроса ниже.
  2. Настроить в макросе все параметры в блоке переменных под свой станок.
  3. Макрос сделать видимы - он будет также вызываться по кнопке на панели Макросы для измерения длины первого инструмента перед запуском УП.
  4. Макрос нужно назначить на макровызов для команды M0?6 через меню Сервис -> Настройки -> Макровызовы. Макрос будет автоматически вызываться только при работе управляющей программы, когда в ней встречается команда M6Tx, где Tx - следующий номер инструмента.

Алгоритм работы процедуры ручной смены инструмента и настройка макроса

  1. Перед запуском управляющей программы необходимо, как обычно, выставить рабочий ноль Z для первого инструмента по требуемой поверхности (заготовки или стола), для удобства используя процедуру Z-щуп.
  2. В процессе своей работы макрос выполняет автоматическую компенсацию длины новой фрезы по установленному в определенной позиции калибратору (датчику высоты). Поэтому Вам необходимо заранее выбрать место для фиксированной позиции калибратора, установить его там и прописать в макросе его машинные координаты в переменные PROBE_X_MPOS, PROBE_Y_MPOS и PROBE_Z_MPOS.
  3. Таким образом, на станке для удобства нужно иметь 2 датчика высоты: первый датчик мобильный, который можно свободно перемещать по рабочему полю станка, чтобы выставить рабочий ноль Z для загруженной УП, второй датчик - фиксированный, установленный в определенной позиции и используемый для компенсации длины новой фрезы после смены инструмента.
  4. После выставления рабочего нуля Z перед запуском УП необходимо измерить первый инструмент по фиксированному калибратору, вызвав созданный макрос ручной смены по соответствующей кнопке на панели Макросы.
  5. В переменные TC_X_MPOS, TC_Y_MPOS и TC_Z_MPOS необходимо прописать машинные координаты позиции смены инструмента - они могут иметь такие же значения, как координаты фиксированного калибратора.
  6. В процессе своей работы, макрос выполняет следующие действия по порядку:
    • выключает шпиндель и перемещается в позицию смены инструмента;
    • выполняет постановку УП на паузу и показывает окно с информационным сообщением с просьбой установить новый инструмент;
    • далее Вам необходимо сменить фрезу, после чего нажать ОК для продолжения;
    • выполняет перемещение на позицию фиксированного калибратора;
    • осуществляет измерение новой фрезы по калибратору и производит коррекцию рабочего нуля Z;
    • поднимается на безопасную высоту и возвращает управление основной программе.

 

Макросы ручной смены инструмента

Макрос смены инструмента

{
    // ****** БЛОК ПЕРЕМЕННЫХ ******
    
    // В этой секции нужно установить переменные для работы процедуры
    
    // Расстояние поиска шайбы
    var SEARCH_DIST = $.params.maxTravelValueZ
    
    // Скорость быстрого перемещения по Z на позицию начала процедуры
    var FAST_RATE = 1000
    
    // Скорость быстрого поиска шайбы (1й цикл зондирования)
    var SEARCH_RATE = 150
    
    // Скорость медленного поиска шайбы (2й цикл зондирования)
    var SLOW_RATE = 10
    
    // Расстояние отскока от шайбы после выполнения первого цикла зондирования
    var OFFSET = 1
    
    // Безопасная высота - по умолчанию машинный 0
    var SAFE_Z = 0
    
    // Таймаут остановки шпинделя
    var SPINDLE_STOP_TIMEOUT = 5
    
    // Параметр USE_TOOL_TABLE определяет, использовать ли таблицу инструментов.
    // Если USE_TOOL_TABLE = 1, то корректировка рабочего нуля осуществляется автоматически по таблице инструментов, измерение по датчику после смены инструмента не требуется.
    // Рекомендуется в контроллер отправить команду $457=1, чтобы коррекция длины по таблице инструментов применялась автоматически по команде Tx.
    // Если USE_TOOL_TABLE = 0, перед запуском УП необходимо вручную запустить этот макрос, чтобы запомнить рабочую координату на фиксированном датчике пробы.
    // Если макрос запущен по макровызову во время работы УП, то сразу едем на позицию смены инструмента, меняем фрезу и далее едем отбиваться по фиксированному датчику,
    // чтобы автоматически восстановить запомненную перед запуском УП рабочую координату Z по поверхности датчика.
    var USE_TOOL_TABLE = 0
    
    // Машинные координаты датчика высоты инструмента. Используются если USE_TOOL_TABLE = 0
    var PROBE_X_MPOS = 0
    var PROBE_Y_MPOS = 0
    var PROBE_Z_MPOS = 0
    
    // Машинные координаты позиции смены инструмента. Для ручной смены инструмента станок будет подъезжать в эту позицию.
    var TC_X_MPOS = 0
    var TC_Y_MPOS = 0
    var TC_Z_MPOS = 0
}

{
    // ****** БЛОК ФУНКЦИЙ ******
    
    // Функция касания датчика кончиком инструмента
    function tool_probe() {
        $.send("G91G21G38.2Z-" + String(SEARCH_DIST) + "F" + String(SEARCH_RATE))
        $.send("G0Z" + String(OFFSET))
        $.send("G38.2Z-" + String(OFFSET*2) + "F" + String(SLOW_RATE))
        $.send("G4P0.1")
        
        // Точно перемещаемся в точку касания датчика
        var tool_probe_mpos = $.prb.z
        $.send("G53G1G90Z" + String(tool_probe_mpos.toFixed(3)) + "F" + String(FAST_RATE))
    }
    
    // Функция для перемещения в позицию зондирования
    function go_to_probe_fix_position() {
        $.send("G0G53Z" + String(SAFE_Z))
        $.send("G0G53X" + String(PROBE_X_MPOS) + "Y" + String(PROBE_Y_MPOS))
        $.send("G1G53Z" + String(PROBE_Z_MPOS) + "F" + String(FAST_RATE))
    }
    
    // Функция для перемещения в позицию смены инструменты
    function go_to_tc_fix_position() {
        $.send("G0G53Z" + String(SAFE_Z))
        $.send("G0G53X" + String(TC_X_MPOS) + "Y" + String(TC_Y_MPOS))
        $.send("G1G53Z" + String(TC_Z_MPOS) + "F" + String(FAST_RATE))
    }
}

{
    var next_tool = $.tn
    var cur_tool = $.tc
    var z_probe_wpos = $.wc.z
    $.send("G4P0.1")
    var x_start_wpos = $.wc.x
    var y_start_wpos = $.wc.y
    
    if ($.state.spindle.status() == 1) {
        $.send("M5")
        $.send("G4P" + String(SPINDLE_STOP_TIMEOUT))
    }
    
    if ($.tasklist.is_running() == 0) {
        // Если макрос запускается вручную (перед запуском УП), то мы просто делаем одно измерение,
        // чтобы запомнить значение рабочей координаты фрезы на фиксированном датчике, чтобы
        // впоследствии при смене инструмента восстанавливать эту координату для новой фрезы
        if(USE_TOOL_TABLE == 0) {
            // Передвигаемся на позицию датчика высоты, чтобы измерить текущий инструмент
            go_to_probe_fix_position()
            
            // Измеряем текущий инструмент
            tool_probe()
            
            $.send("G4P0.1")
            
            // Запоминаем рабочую координату точки касания датчика текущего инструмента - 
            // эту координату нужно будет восстановить в точке касания шайбы следующим инструментом
            var z_probe_wpos = $.wc.z
            $.savevar("tool_wc_on_fix_probe", z_probe_wpos)
            $.send("G0G53Z" + String(SAFE_Z))
        }
    }
    else {
        if (next_tool == cur_tool) {
            $.message("Следующий номер инструмента " + String(next_tool) + " совпадает с текущим, смена не требуется.")
            $.exit()
        }
        
        // Восстанавливаем для нового инструмента рабочую координату Z
        var z_probe_wpos = $.readvar("tool_wc_on_fix_probe")
        if ((USE_TOOL_TABLE == 0) {
            if(!z_probe_wpos) {
                $.message("Необходимо измерить первый инструмент перед запуском УП!")
                $.exit()
            }
        }
        // Передвигаемся на позицию смены инструмента
        go_to_tc_fix_position()
        
        $.message("Установите инструмент №" + String(next_tool) + " и нажмите ОК для продолжения.")
        
        $.send("T" + String(next_tool))

        if(USE_TOOL_TABLE == 0) {
            // Передвигаемся на позицию датчика пробы, чтобы восстановить рабочую координату Z по датчику
            go_to_probe_fix_position()
            
            // Измеряем новый инструмент
            tool_probe()
            
            $.send("G4P0.1")
            
            // Корректируем рабочий ноль по Z для нового инструмента
            $.send("G10L20P0Z" + String(z_probe_wpos.toFixed(3)))
            $.send("G4P0.1")
        }
        
        $.send("G0G53Z" + String(SAFE_Z))
        $.send("G0X" + x_start_wpos.toFixed(3) + "Y" + y_start_wpos.toFixed(3))
    }
}
Предзаказ
Предзаказ успешно отправлен!
Имя *
Телефон *
Добавить в корзину
Название товара
100 ₽
1 шт.
Перейти в корзину
Обратный звонок
Запрос успешно отправлен!
Имя *
Телефон *
Заявка

Я ознакомлен и согласен с условиями оферты и политики конфиденциальности.

Заказ в один клик

Я ознакомлен и согласен с условиями оферты и политики конфиденциальности.