Простетенький скрипт для ручной смены инструмента
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Простетенький скрипт для ручной смены инструмента
Господа, здравствуйте) Помогите пожалуйста написать простой скрипт для mach3: Подняться по z до косания концевика, поехать в точку x1y1 в координатах станка, опускаться с фиксированной скоростью до косания датчика нуля по z, после косания подняться на 10 и опускаться с фиксированной скоростью до косания. Заранее спасибо) Извините за очередную тему, которая не достойна называться темой, просто мало кто отвечает в существующих)
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
судя по всему да. Но суть то в чем, я думаю это наиболее оптимальный алгоритм, я встречал скрипт который делает кучу операций колибровки, несколько раз измеряет инструмент и все равно нормально не работает или во всяком случае сложен в познание. Моя концепция работает так - мы выставили первую фрезу по верху заготовки, закрепили датчик на столе в определенном месте, после завершения первой управляющей програамы нажали кнопку и фреза поехала на датчик, опустилась до косания - мы это число записали в блокнотик или запомнили (но лучше записать - блокнотик уже куплен и порядочно исписан). Далее меняем фрезу и опять же опускаем до косания датчика - и просто вписываем показатель записанный в блокнотике и так с каждой последующей фрезой - никаких танцев с бубном. На данный момент - я вручную подгоняю фрезу на датчик, опускаю до косания (на китайском датчике есть светодиод ) и потом опять же вручную измеряю - но даже так это значительно облегчает жизнь, когда используешь 4 - 5 фрез в одной программе.
- Kachik
- Мастер
- Сообщения: 1410
- Зарегистрирован: 13 янв 2017, 16:22
- Репутация: 308
- Настоящее имя: Сергей
- Откуда: Питер
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Да именно так у всех и работает.
вот стандартные скрипты из Скринсет 2010:
вот стандартные скрипты из Скринсет 2010:
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Не человеческими усилиями - родил (переделал готовый)
'Position of tool change in machine coordinates.
org_tool_x = 99
org_tool_y = 105 (это не нужно, но когда убираю выдает ошибку)
'Position of tool length sensor in machine coordinates.
org_overcalib_x = 83
org_overcalib_y = 497 (позиция датчика)
'This variable tells the gantry to move down quickly
'to reduce the time for fast probing.
'Note this is with reference to machine coordinates.
move_z_down_time_reduce = -111 (высота начала пробинга)
'------------- Configuration END -----------
Response = MachMsg("нажми нет", "Skip Probing", 4) (нажать нет)
If Response = 6 Then
End
End If
If IsSuchSignal(22) Then
'Get current (job) position
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
OldAbsoluteMode = GetOemLED(48)
OldFeedRate = FeedRate
MaxFeedRate = GetOemDRO(104)
OldTool = GetCurrentTool()
NewTool = GetSelectedTool()
SetCurrentTool( 0 )
tmp_calibration_z = GetVar(var_calibrationz)
calibrate_sensor = false
If tmp_calibration_z = 0 Then
Response = MachMsg("откалибровать сенсор? а???", "Calibration required", 4)
If Response = 6 Then
calibrate_sensor = true
End If
Else
Response = MachMsg("хочешь колибровать снова сука??", "Calibration", 4)
If Response = 6 Then
calibrate_sensor = true
End If
End If
'MachMsg("x = " & x & ", y = " & y & ", z = " & z & ", OldT = " & OldTool & ", NewT = " & NewTool & ", CalZ = " & tmp_calibration_z, "Values", 0)
If calibrate_sensor Then
SetVar(var_toolx, org_tool_x)
SetVar(var_tooly, org_tool_y)
SetVar(var_calibx, org_overcalib_x)
SetVar(var_caliby, org_overcalib_y)
'Move to safe Z
Code("G53G90G0Z0")
While IsMoving
Sleep 100
Wend
'Move to measurement position
Code("G53G90G0X" & org_overcalib_x & "Y" & org_overcalib_y)
While IsMoving
Sleep 100
Wend
'Prompt user to connect clip to tool
MachMsg("нажимай ок.", "WARNING!!", 0)
'Travel some mm in Z to shorten probe time
Code("G91G0Z" & move_z_down_time_reduce)
While IsMoving
Sleep 100
Wend
'Fast probing
Code("G91G31Z" & move_z_down_time_reduce & "F150")
While IsMoving
Sleep 100
Wend
'Go up a few mm
Code("G91G0Z2")
While IsMoving
Sleep 100
Wend
'Slow probing
Code("G91G31Z-2.5F25")
While IsMoving
Sleep 100
Wend
'Get absolute Z position with current tool and save
calibration_z = GetParam("ZMachine")
SetVar(var_calibrationz, calibration_z)
'Prompt user to disconnect clip from tool
MachMsg("нажимая ок.", "WARNING!!", 0)
'Print debugging prompt
'MachMsg("x = " & x & ", y = " & y & ", z = " & z & ", OldT = " & OldTool & ", NewT = " & NewTool & ", VarCalZ = " & calibration_z, "Values", 0)
End If
Response = MachMsg("Should I move to tool change position?", "WARNING!", 1)
If Response = 2 Then
End
End If
'Retrieve positions from calibration
tool_x = GetVar(var_toolx)
tool_y = GetVar(var_tooly)
overcalib_x = GetVar(var_calibx)
overcalib_y = GetVar(var_caliby)
calibration_z = GetVar(var_calibrationz)
'MachMsg("Tool sensor calibrated at machine Z: " & calibration_z, "Calibration value", 0)
Code("G90")
MachMsg("Tool change finished. Click OK to continue executing program.", "Tool change", 0)
Else
MachMsg("No probing available. Check the input signal of the probe!", "Probing error", 0)
End If
После исполнения скрипта - фреза остается на позиции косания, записываем показатель в блокнотик, поднимаем, меняем фрезу, снова запускаем скрипт - все, вы успешны.
p.S. кто избавит скрипт от условий и вопросов от mach - будет суперменом
'Position of tool change in machine coordinates.
org_tool_x = 99
org_tool_y = 105 (это не нужно, но когда убираю выдает ошибку)
'Position of tool length sensor in machine coordinates.
org_overcalib_x = 83
org_overcalib_y = 497 (позиция датчика)
'This variable tells the gantry to move down quickly
'to reduce the time for fast probing.
'Note this is with reference to machine coordinates.
move_z_down_time_reduce = -111 (высота начала пробинга)
'------------- Configuration END -----------
Response = MachMsg("нажми нет", "Skip Probing", 4) (нажать нет)
If Response = 6 Then
End
End If
If IsSuchSignal(22) Then
'Get current (job) position
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
OldAbsoluteMode = GetOemLED(48)
OldFeedRate = FeedRate
MaxFeedRate = GetOemDRO(104)
OldTool = GetCurrentTool()
NewTool = GetSelectedTool()
SetCurrentTool( 0 )
tmp_calibration_z = GetVar(var_calibrationz)
calibrate_sensor = false
If tmp_calibration_z = 0 Then
Response = MachMsg("откалибровать сенсор? а???", "Calibration required", 4)
If Response = 6 Then
calibrate_sensor = true
End If
Else
Response = MachMsg("хочешь колибровать снова сука??", "Calibration", 4)
If Response = 6 Then
calibrate_sensor = true
End If
End If
'MachMsg("x = " & x & ", y = " & y & ", z = " & z & ", OldT = " & OldTool & ", NewT = " & NewTool & ", CalZ = " & tmp_calibration_z, "Values", 0)
If calibrate_sensor Then
SetVar(var_toolx, org_tool_x)
SetVar(var_tooly, org_tool_y)
SetVar(var_calibx, org_overcalib_x)
SetVar(var_caliby, org_overcalib_y)
'Move to safe Z
Code("G53G90G0Z0")
While IsMoving
Sleep 100
Wend
'Move to measurement position
Code("G53G90G0X" & org_overcalib_x & "Y" & org_overcalib_y)
While IsMoving
Sleep 100
Wend
'Prompt user to connect clip to tool
MachMsg("нажимай ок.", "WARNING!!", 0)
'Travel some mm in Z to shorten probe time
Code("G91G0Z" & move_z_down_time_reduce)
While IsMoving
Sleep 100
Wend
'Fast probing
Code("G91G31Z" & move_z_down_time_reduce & "F150")
While IsMoving
Sleep 100
Wend
'Go up a few mm
Code("G91G0Z2")
While IsMoving
Sleep 100
Wend
'Slow probing
Code("G91G31Z-2.5F25")
While IsMoving
Sleep 100
Wend
'Get absolute Z position with current tool and save
calibration_z = GetParam("ZMachine")
SetVar(var_calibrationz, calibration_z)
'Prompt user to disconnect clip from tool
MachMsg("нажимая ок.", "WARNING!!", 0)
'Print debugging prompt
'MachMsg("x = " & x & ", y = " & y & ", z = " & z & ", OldT = " & OldTool & ", NewT = " & NewTool & ", VarCalZ = " & calibration_z, "Values", 0)
End If
Response = MachMsg("Should I move to tool change position?", "WARNING!", 1)
If Response = 2 Then
End
End If
'Retrieve positions from calibration
tool_x = GetVar(var_toolx)
tool_y = GetVar(var_tooly)
overcalib_x = GetVar(var_calibx)
overcalib_y = GetVar(var_caliby)
calibration_z = GetVar(var_calibrationz)
'MachMsg("Tool sensor calibrated at machine Z: " & calibration_z, "Calibration value", 0)
Code("G90")
MachMsg("Tool change finished. Click OK to continue executing program.", "Tool change", 0)
Else
MachMsg("No probing available. Check the input signal of the probe!", "Probing error", 0)
End If
После исполнения скрипта - фреза остается на позиции косания, записываем показатель в блокнотик, поднимаем, меняем фрезу, снова запускаем скрипт - все, вы успешны.
p.S. кто избавит скрипт от условий и вопросов от mach - будет суперменом
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Еще бы блокнотик из наших отношей убрать, было бы классно
- Kachik
- Мастер
- Сообщения: 1410
- Зарегистрирован: 13 янв 2017, 16:22
- Репутация: 308
- Настоящее имя: Сергей
- Откуда: Питер
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
С какой целью опубликован данный опус г-код?
Он запоминает текущие координаты и установки, измеряет вылет инструмента и сохраняет в памяти, а после смены измеряет и сам берёт высоту из ранее сохранённого, возвращает инструмент в последнюю позицию и восстанавливает переменные...
П.С. давай подкину ещё мануал, там расписаны используемые ячейки памяти что и где сохраняется...
Я же специально дал готовый, а главное работающий скрипт...
Он запоминает текущие координаты и установки, измеряет вылет инструмента и сохраняет в памяти, а после смены измеряет и сам берёт высоту из ранее сохранённого, возвращает инструмент в последнюю позицию и восстанавливает переменные...
П.С. давай подкину ещё мануал, там расписаны используемые ячейки памяти что и где сохраняется...
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
спасибо, но у меня он не работает. А чтобы там что то подкорректироватьу меня знаний не хватаетKachik писал(а): ↑21 июн 2022, 17:36 С какой целью опубликован данныйопусг-код?
Я же специально дал готовый, а главное работающий скрипт...
Он запоминает текущие координаты и установки, измеряет вылет инструмента и сохраняет в памяти, а после смены измеряет и сам берёт высоту из ранее сохранённого, возвращает инструмент в последнюю позицию и восстанавливает переменные...
П.С. давай подкину ещё мануал, там расписаны используемые ячейки памяти что и где сохраняется...
2010 Manual.pdf
-
- Мастер
- Сообщения: 208
- Зарегистрирован: 26 янв 2017, 17:31
- Репутация: 8
- Настоящее имя: Serj MD
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Никак не соображу, а какова практическая польза такого скрипта? Ноль по X, Y никуда не девается при смене инструмента. Ноль по Z все равно прикаждой смене выставляется по новой. Зачем там что-то записывать?
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 05 июн 2021, 08:03
- Репутация: 1
- Настоящее имя: Vladimir
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
x & y конечно остаются неизменны. Вы меняете фрезу, после того, как полностью отфрезеровали плоскость детали, как будете z выставлять?
-
- Мастер
- Сообщения: 208
- Зарегистрирован: 26 янв 2017, 17:31
- Репутация: 8
- Настоящее имя: Serj MD
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Прошу извинить задержку с ответом.
Без установки 0 по Z все равно как обойдешься? Как иначе гарантировать, что фреза будет на той же высоте?
Да как обычно. По поверхности станка. Либо, если очень хочется, по поверхности заготовки, но не очень понятно зачем, если это не выборка по средней с неопределенной толщиной заготовки.
Без установки 0 по Z все равно как обойдешься? Как иначе гарантировать, что фреза будет на той же высоте?
-
- Мастер
- Сообщения: 208
- Зарегистрирован: 26 янв 2017, 17:31
- Репутация: 8
- Настоящее имя: Serj MD
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Мы, по-моему, о разном говорим.
Я обрабатываю заготовку фрезой 1.
Я меняю фрезу, заново устанавливая 0 по Z. Загружаю новый файл с траекторией, которая уже предусматривает предыдущую обработку.
Что мне надо компенсировать?
Я прошу понять правильно - я не то чтобы спорю. Просто я свой станок разрабатывал и строил сам, продолжаю осваивать сам, и вполне возможно я просто не знаю чего-то, что для остальных привычно. Потому и докопался.
Я обрабатываю заготовку фрезой 1.
Я меняю фрезу, заново устанавливая 0 по Z. Загружаю новый файл с траекторией, которая уже предусматривает предыдущую обработку.
Что мне надо компенсировать?
Я прошу понять правильно - я не то чтобы спорю. Просто я свой станок разрабатывал и строил сам, продолжаю осваивать сам, и вполне возможно я просто не знаю чего-то, что для остальных привычно. Потому и докопался.
- hmnijp
- Мастер
- Сообщения: 1725
- Зарегистрирован: 20 авг 2017, 15:02
- Репутация: 530
- Настоящее имя: Константин
- Откуда: Ульяновск
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Вместо того чтобы заново обнулять Z(изменять wcs), измеряют длину нового инструмента(корректор записывается в таблицу таблицу инструментов в чпу, оно понимает разницу и работает на другой высоте, корректор активируется кодом G43 H1). Ноль детали при этом не меняется. Вот это и делает скрипт - едет к датчику(который может стационарно стоять в углу, и никак не привязан к деталям), измеряет новый инструмент и вносит корректор в таблицу.
Оператору остается только вставить фрезу и нажать старт. ну и единожды перед работой обнулить заготовку(установить смещение wcs) по измеренному инструменту.
-
- Мастер
- Сообщения: 208
- Зарегистрирован: 26 янв 2017, 17:31
- Репутация: 8
- Настоящее имя: Serj MD
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
А фреза при этом имеет некий буртик, позволяющий устанавливать фиксированный вылет относительно шпинделя?
У меня просто все фрезы просто цилиндрические, так что , без установки ноля все равно не обойдешься.
У меня просто все фрезы просто цилиндрические, так что , без установки ноля все равно не обойдешься.
-
- Мастер
- Сообщения: 208
- Зарегистрирован: 26 янв 2017, 17:31
- Репутация: 8
- Настоящее имя: Serj MD
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
Я еще раз перечитал всю тему. Я все равно не понимаю.
Я все равно погнал станок в определенное место. Поменял фрезу. Установил датчик ноля. Задел его фрезой. Зачем мне что-то еще записывать? Делать какие-то поправки. Если у меня в новой программе для этой фрезы траектория все равно от общего для этой заготовки ноля по Z.
А эта процедура тогда что?
Я все равно погнал станок в определенное место. Поменял фрезу. Установил датчик ноля. Задел его фрезой. Зачем мне что-то еще записывать? Делать какие-то поправки. Если у меня в новой программе для этой фрезы траектория все равно от общего для этой заготовки ноля по Z.
-
- Мастер
- Сообщения: 1746
- Зарегистрирован: 28 авг 2018, 17:13
- Репутация: 293
- Настоящее имя: Алексей
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
в мач3 я не спец. но думаю там всё стандартно
читайте про g-code Tx M6 / G43 Hx (x=номер инструмента)
вводится поправка к Z координате на измеренную длину фрезы
если всё время привязывать Z=0 к столу, можно этим и не заморачиваться, тогда действительно это не нужно.
читайте про g-code Tx M6 / G43 Hx (x=номер инструмента)
вводится поправка к Z координате на измеренную длину фрезы
если всё время привязывать Z=0 к столу, можно этим и не заморачиваться, тогда действительно это не нужно.
- hmnijp
- Мастер
- Сообщения: 1725
- Зарегистрирован: 20 авг 2017, 15:02
- Репутация: 530
- Настоящее имя: Константин
- Откуда: Ульяновск
- Контактная информация:
Re: Простетенький скрипт для ручной смены инструмента
ничего тебе не надо записывать. всё делается автоматически. Скрипт нужен чтобы не мерить инструмент вручную. Станок видит код M6Tx - говорит тебе вставь фрезу №х. Далее он сам едет к датчику и измеряет её, вносит данные в таблицу. и так каждую смену инструмента в программе. Ноль Z тебе менять больше не нужно, он остается тем же что и был, а меняется значение компенсации длины.