Для калибровки 0 по оси Z использую вот такой скрипт.
Кажется все понятно.
У меня работает отлично.
Разумеется введите свои значения по толщине платы и максимальных ход по оси Z.
Не забудьте после калибровки поднять ось Z на ту величину на которую хотите но с учетом заготовки, что бы не выехала ось за пределы поля станка, у меня на 1 мм.
Rem VBScript Для корректировки длинны инструмента
'STEPMOTOR [14.11.2011]
'Скрипт работает в метрической системе координат
PlateOffset=2.33 'толщина платы мм.
Zup=1 'Расстояние на которое отойдет фреза после коррекции
MaxZPlus=60 'максимальный ход станка по оси Z мм.
Sleep 100 'Пауза 0,1 сек.
CurrentFeed = GetOemDRO(818) 'Запомнить текущюю скорость, для того чтобы восстановить после коррекции.
Code "F300" 'Задать скорость подачи до касания инструментом
ZNew = GetDro(2) - MaxZPlus 'опустить инструмент до касания
Code "G31Z" &ZNew
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
ZNew = GetVar(2002) 'читать точку касания
Code "G0 Z" &ZNew + 3 'отьехать вверх на 3мм от точки касания
While IsMoving ()
Wend
Code "F50" 'замедлить подачу до 50мм\мин
ZNew = GetDro(2) - 6
Code "G31Z" &ZNew 'опустить инструмент до касания
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
If PlateOffset <> 0 Then
Call SetDro (2, PlateOffset) 'записать в окно Z толщину платы, тем самым откорректировав позицию по Z
Code "G4 P0.25" 'пауза для успешной записи значения в DRO
ZNew = PlateOffset + Zup 'вычислени точки подьема
Code "G0 Z" &ZNew 'поднять на высоту отхода после коррекции
While IsMoving ()
Wend
Code "(Z axis is now zero !)" 'послать сообщение в статус
End If
Code "F" &CurrentFeed 'Возвращаем установленное значение подачи
Sleep 100