Была такая проблема и у меня. На одном из форумов живо обсуждалось.
Предложу сделать следующее:
Прикрепите к ходовой части оси Z кусочек пластелина, а к нему иголку. На том же уровне, но неходовой части станка тоже пластелин с иголкой. Совместите, две иглы под мощной лупой "точка в точку", это положение задайте нулевым.
Включите такой код:
%
G90 G21
F 1000 (для каждого станка своя)
M98 P1234 L60
M30
O1234
G1 Z-5
G1 Z0
M99
%
Где L количество замкнутых циклов
В мотор тюненге подберите ускорение такое, чтобы строчило довольно быстро.
Не ограничивайтесь короткими циклами, не пожалейте времени, т.к. на линейных осях погрешность копиться дольше чем на роторных (во всяком случае, не имеющих редуктора).
Если после отработки не вернулось в нуль, здесь может быть 2 основные проблемы - механика или электрика. Скорее всего это электрика. Для того, чтобы убедиться в этом, снимите движок и закрепите его на столе струбциной и на вал пластелин с иглой. Совместите с другой иглой на другой поверхности и задайте такой код:
%
G90 G21
F 1000 (для каждого станка своя)
M98 P1234 L60
M30
O1234
G1 A5
G1 A0
M99
%
Забыл сказать, что перед этим надо в Маче включить ось А в мотор аутпут, а в мотор тюненге выставить степ в соответствии с вашими микрошагами, например, если у вас микрошаг 1/8 то получаем: 200*8/360 = 4,4444
1/16: 200*16/360 = 8,8888
Короче получаем степ в градусах. Скорость можно поставить и 5000 и 8000 и ускорение 500-1500 подберите сами, главное, чтобы живенько отрабатывало цикл.
Обычно на роторных осях заметнее погрешность если она есть. Если всё гуд и иголка неизменно возвращается в нуль, то причина ваших проблем, скорее всего, в механике, а если не возвращается в нуль, то проблема в драйверах. Связывайтесь с производителем и говорите о проблеме.
Может как-то сумбурно, поэтому спрашивайте, если не понятно.