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

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

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

Сообщение efanovvp »

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

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

Сообщение Kachik »

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

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

Сообщение efanovvp »

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

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

Сообщение Kachik »

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

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

Сообщение efanovvp »

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

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

Сообщение efanovvp »

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

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

Сообщение Kachik »

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

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

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

Сообщение efanovvp »

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

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

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

Сообщение serjmd »

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

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

Сообщение efanovvp »

serjmd писал(а): 24 июн 2022, 06:53 Никак не соображу, а какова практическая польза такого скрипта? Ноль по X, Y никуда не девается при смене инструмента. Ноль по Z все равно прикаждой смене выставляется по новой. Зачем там что-то записывать?
x & y конечно остаются неизменны. Вы меняете фрезу, после того, как полностью отфрезеровали плоскость детали, как будете z выставлять?
Ответить

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