Простетенький скрипт для ручной смены инструмента

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

Господа, здравствуйте) Помогите пожалуйста написать простой скрипт для mach3: Подняться по z до косания концевика, поехать в точку x1y1 в координатах станка, опускаться с фиксированной скоростью до косания датчика нуля по z, после косания подняться на 10 и опускаться с фиксированной скоростью до косания. Заранее спасибо) Извините за очередную тему, которая не достойна называться темой, просто мало кто отвечает в существующих) :monkey:
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение Kachik »

efanovvp писал(а): Извините за очередную тему, которая не достойна называться темой, просто мало кто отвечает в существующих)
Хочешь измором взять? Вероятно, пока этот вопрос, просто никого не заинтересовал...
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

Kachik писал(а): 19 июн 2022, 21:12
efanovvp писал(а): Извините за очередную тему, которая не достойна называться темой, просто мало кто отвечает в существующих)
Хочешь измором взять? Вероятно, пока этот вопрос, просто никого не заинтересовал...
судя по всему да. Но суть то в чем, я думаю это наиболее оптимальный алгоритм, я встречал скрипт который делает кучу операций колибровки, несколько раз измеряет инструмент и все равно нормально не работает или во всяком случае сложен в познание. Моя концепция работает так - мы выставили первую фрезу по верху заготовки, закрепили датчик на столе в определенном месте, после завершения первой управляющей програамы нажали кнопку и фреза поехала на датчик, опустилась до косания - мы это число записали в блокнотик или запомнили (но лучше записать - блокнотик уже куплен и порядочно исписан). Далее меняем фрезу и опять же опускаем до косания датчика - и просто вписываем показатель записанный в блокнотике и так с каждой последующей фрезой - никаких танцев с бубном. На данный момент - я вручную подгоняю фрезу на датчик, опускаю до косания (на китайском датчике есть светодиод :lamp_flash: ) и потом опять же вручную измеряю - но даже так это значительно облегчает жизнь, когда используешь 4 - 5 фрез в одной программе.
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение Kachik »

Да именно так у всех и работает.
вот стандартные скрипты из Скринсет 2010:
m6.rar
(2.7 КБ) 170 скачиваний
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

Kachik писал(а): 20 июн 2022, 10:04 Да именно так у всех и работает.
вот стандартные скрипты из Скринсет 2010:
m6.rar
пробовал его использовать, постоянно выдает ошибку, что датчик нажат, хоть с обычным скриптом z0 все ок, ну и сложный он
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

Не человеческими усилиями - родил (переделал готовый)
'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 - будет суперменом
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

Еще бы блокнотик из наших отношей убрать, было бы классно
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение Kachik »

С какой целью опубликован данный опус г-код?
efanovvp писал(а): Еще бы блокнотик из наших отношений убрать, было бы классно
Я же специально дал готовый, а главное работающий скрипт... :eat:
Он запоминает текущие координаты и установки, измеряет вылет инструмента и сохраняет в памяти, а после смены измеряет и сам берёт высоту из ранее сохранённого, возвращает инструмент в последнюю позицию и восстанавливает переменные...

П.С. давай подкину ещё мануал, там расписаны используемые ячейки памяти что и где сохраняется...
2010 Manual.pdf
(235.63 КБ) 160 скачиваний
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

Kachik писал(а): 21 июн 2022, 17:36 С какой целью опубликован данный опус г-код?
efanovvp писал(а): Еще бы блокнотик из наших отношений убрать, было бы классно
Я же специально дал готовый, а главное работающий скрипт... :eat:
Он запоминает текущие координаты и установки, измеряет вылет инструмента и сохраняет в памяти, а после смены измеряет и сам берёт высоту из ранее сохранённого, возвращает инструмент в последнюю позицию и восстанавливает переменные...

П.С. давай подкину ещё мануал, там расписаны используемые ячейки памяти что и где сохраняется...
2010 Manual.pdf
спасибо, но у меня он не работает. А чтобы там что то подкорректироватьу меня знаний не хватает
serjmd
Мастер
Сообщения: 204
Зарегистрирован: 26 янв 2017, 17:31
Репутация: 8
Настоящее имя: Serj MD
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение serjmd »

Никак не соображу, а какова практическая польза такого скрипта? Ноль по X, Y никуда не девается при смене инструмента. Ноль по Z все равно прикаждой смене выставляется по новой. Зачем там что-то записывать?
efanovvp
Новичок
Сообщения: 22
Зарегистрирован: 05 июн 2021, 08:03
Репутация: 1
Настоящее имя: Vladimir
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение efanovvp »

serjmd писал(а): 24 июн 2022, 06:53 Никак не соображу, а какова практическая польза такого скрипта? Ноль по X, Y никуда не девается при смене инструмента. Ноль по Z все равно прикаждой смене выставляется по новой. Зачем там что-то записывать?
x & y конечно остаются неизменны. Вы меняете фрезу, после того, как полностью отфрезеровали плоскость детали, как будете z выставлять?
serjmd
Мастер
Сообщения: 204
Зарегистрирован: 26 янв 2017, 17:31
Репутация: 8
Настоящее имя: Serj MD
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение serjmd »

Прошу извинить задержку с ответом.
efanovvp писал(а): 28 июн 2022, 19:47 x & y конечно остаются неизменны. Вы меняете фрезу, после того, как полностью отфрезеровали плоскость детали, как будете z выставлять?
Да как обычно. По поверхности станка. Либо, если очень хочется, по поверхности заготовки, но не очень понятно зачем, если это не выборка по средней с неопределенной толщиной заготовки.
Без установки 0 по Z все равно как обойдешься? Как иначе гарантировать, что фреза будет на той же высоте?
Аватара пользователя
hmnijp
Мастер
Сообщения: 1692
Зарегистрирован: 20 авг 2017, 15:02
Репутация: 515
Настоящее имя: Константин
Откуда: Ульяновск
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение hmnijp »

serjmd писал(а): Без установки 0 по Z все равно как обойдешься?
Про компенсацию длины (G43) не слышали получается?
serjmd
Мастер
Сообщения: 204
Зарегистрирован: 26 янв 2017, 17:31
Репутация: 8
Настоящее имя: Serj MD
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение serjmd »

Мы, по-моему, о разном говорим.
Я обрабатываю заготовку фрезой 1.
Я меняю фрезу, заново устанавливая 0 по Z. Загружаю новый файл с траекторией, которая уже предусматривает предыдущую обработку.
Что мне надо компенсировать?

Я прошу понять правильно - я не то чтобы спорю. Просто я свой станок разрабатывал и строил сам, продолжаю осваивать сам, и вполне возможно я просто не знаю чего-то, что для остальных привычно. Потому и докопался.
Аватара пользователя
hmnijp
Мастер
Сообщения: 1692
Зарегистрирован: 20 авг 2017, 15:02
Репутация: 515
Настоящее имя: Константин
Откуда: Ульяновск
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение hmnijp »

serjmd писал(а): Я обрабатываю заготовку фрезой 1.
Я меняю фрезу, заново устанавливая 0 по Z. Загружаю новый файл с траекторией, которая уже предусматривает предыдущую обработку.
Что мне надо компенсировать?
Вместо того чтобы заново обнулять Z(изменять wcs), измеряют длину нового инструмента(корректор записывается в таблицу таблицу инструментов в чпу, оно понимает разницу и работает на другой высоте, корректор активируется кодом G43 H1). Ноль детали при этом не меняется. Вот это и делает скрипт - едет к датчику(который может стационарно стоять в углу, и никак не привязан к деталям), измеряет новый инструмент и вносит корректор в таблицу.
Оператору остается только вставить фрезу и нажать старт. ну и единожды перед работой обнулить заготовку(установить смещение wcs) по измеренному инструменту.
serjmd
Мастер
Сообщения: 204
Зарегистрирован: 26 янв 2017, 17:31
Репутация: 8
Настоящее имя: Serj MD
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение serjmd »

А фреза при этом имеет некий буртик, позволяющий устанавливать фиксированный вылет относительно шпинделя?
У меня просто все фрезы просто цилиндрические, так что , без установки ноля все равно не обойдешься.
alex_sar
Мастер
Сообщения: 1630
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 272
Настоящее имя: Алексей
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение alex_sar »

serjmd писал(а): А фреза при этом имеет некий буртик, позволяющий устанавливать фиксированный вылет относительно шпинделя?
не имеет. если всегда мерить высоту фрез по рабочей поверхности после установки, это и не нужно.
serjmd
Мастер
Сообщения: 204
Зарегистрирован: 26 янв 2017, 17:31
Репутация: 8
Настоящее имя: Serj MD
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение serjmd »

Я еще раз перечитал всю тему. Я все равно не понимаю.
efanovvp писал(а): 20 июн 2022, 09:32 Далее меняем фрезу и опять же опускаем до косания датчика - и просто вписываем показатель записанный в блокнотике и так с каждой последующей фрезой - никаких танцев с бубном.
А эта процедура тогда что?
Я все равно погнал станок в определенное место. Поменял фрезу. Установил датчик ноля. Задел его фрезой. Зачем мне что-то еще записывать? Делать какие-то поправки. Если у меня в новой программе для этой фрезы траектория все равно от общего для этой заготовки ноля по Z.
alex_sar
Мастер
Сообщения: 1630
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 272
Настоящее имя: Алексей
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение alex_sar »

в мач3 я не спец. но думаю там всё стандартно

читайте про g-code Tx M6 / G43 Hx (x=номер инструмента)
вводится поправка к Z координате на измеренную длину фрезы

если всё время привязывать Z=0 к столу, можно этим и не заморачиваться, тогда действительно это не нужно.
Аватара пользователя
hmnijp
Мастер
Сообщения: 1692
Зарегистрирован: 20 авг 2017, 15:02
Репутация: 515
Настоящее имя: Константин
Откуда: Ульяновск
Контактная информация:

Re: Простетенький скрипт для ручной смены инструмента

Сообщение hmnijp »

serjmd писал(а): Зачем мне что-то еще записывать? Делать какие-то поправки.
ничего тебе не надо записывать. всё делается автоматически. Скрипт нужен чтобы не мерить инструмент вручную. Станок видит код M6Tx - говорит тебе вставь фрезу №х. Далее он сам едет к датчику и измеряет её, вносит данные в таблицу. и так каждую смену инструмента в программе. Ноль Z тебе менять больше не нужно, он остается тем же что и был, а меняется значение компенсации длины.
Ответить

Вернуться в «Windows / Mach»