Настройка ручной смены инструмента
- Через меню Сервис -> Настройки -> Макросы создать новый макрос и скопировать в него содержимое макроса ниже.
- Настроить в макросе все параметры в блоке переменных под свой станок.
- Макрос сделать видимы - он будет также вызываться по кнопке на панели Макросы для измерения длины первого инструмента перед запуском УП.
- Макрос нужно назначить на макровызов для команды M0?6 через меню Сервис -> Настройки -> Макровызовы. Макрос будет автоматически вызываться только при работе управляющей программы, когда в ней встречается команда M6Tx, где Tx - следующий номер инструмента.
Алгоритм работы процедуры ручной смены инструмента и настройка макроса
- Перед запуском управляющей программы необходимо, как обычно, выставить рабочий ноль Z для первого инструмента по требуемой поверхности (заготовки или стола), для удобства используя процедуру Z-щуп.
- В процессе своей работы макрос выполняет автоматическую компенсацию длины новой фрезы по установленному в определенной позиции калибратору (датчику высоты). Поэтому Вам необходимо заранее выбрать место для фиксированной позиции калибратора, установить его там и прописать в макросе его машинные координаты в переменные PROBE_X_MPOS, PROBE_Y_MPOS и PROBE_Z_MPOS.
- Таким образом, на станке для удобства нужно иметь 2 датчика высоты: первый датчик мобильный, который можно свободно перемещать по рабочему полю станка, чтобы выставить рабочий ноль Z для загруженной УП, второй датчик - фиксированный, установленный в определенной позиции и используемый для компенсации длины новой фрезы после смены инструмента.
- После выставления рабочего нуля Z перед запуском УП необходимо измерить первый инструмент по фиксированному калибратору, вызвав созданный макрос ручной смены по соответствующей кнопке на панели Макросы.
- В переменные TC_X_MPOS, TC_Y_MPOS и TC_Z_MPOS необходимо прописать машинные координаты позиции смены инструмента - они могут иметь такие же значения, как координаты фиксированного калибратора.
- В процессе своей работы, макрос выполняет следующие действия по порядку:
- выключает шпиндель и перемещается в позицию смены инструмента;
- выполняет постановку УП на паузу и показывает окно с информационным сообщением с просьбой установить новый инструмент;
- далее Вам необходимо сменить фрезу, после чего нажать ОК для продолжения;
- выполняет перемещение на позицию фиксированного калибратора;
- осуществляет измерение новой фрезы по калибратору и производит коррекцию рабочего нуля 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))
}
}