Надеюсь тема еще не умерла. Понадобилось вот прикрутить к ЧПУ компенсацию неровности, но столкнулся с одной проблемой: если в gcode использовать код G92, компенсация перестает работать. Ниже пробный gcode, доезжает до угла заготовки, ищет ноль по Z (заготовка металлическая, поиск до касания фрезой поверхности ), затем строит карту, включает компенсацию и проходит точки X,Y карты повторно. При этом если изменить значения параметров: #<x0> = #<xx0>; #<y0> = #<yy0> и убрать строчку G92 X0 Y0, т.е. использовать абсолютные значения координат - все работает как положено. А с относительными координатами индикатор Current compensation показывает последнее найденное в результате сканирования значение и для всех X, Y это значение не меняется. В принципе, логично, ведь в filename.txt в таком случае пишутся относительные значения координат X,Y (для ниже приведенного скрипта: {0;0} {5;0} {10;0}; {5;0} {5;5} {5;10} и так далее), а значения compensation.x-map/compensation-y.map соответствуют абсолютным. Собственно вопрос в том, возможно ли заставить компенсацию работать с относительными координатами?
Код: Выделить всё
#<h> = 10 (Y)
#<w> = 10 (X)
#<x0> = 0
#<y0> = 0
#<stepx> = [#<w>/2]
#<stepy> = [#<h>/2]
#<search_feed> = 40
#<latch_feed> = 0
#<safe_z> = 1
#<search_z> = -1
#<safe_fast_z> = 0.5
#<xx0> = 163.7
#<yy0> = 231.7
G92.1 (сбрасываем оносительную СК)
(X0=X0, Y0=Y0, Z0=Z0)
G00 X#<xx0> Y#<yy0> (переходим в ноль заготовки)
G92 X0 Y0 (обнуляем оси X,Y)
(MSG,подключите датчик)
o<probez> call [#<safe_z>] (поиск поверхности заготовки)
o<scan> call [#<x0>] [#<y0>] [#<h>] [#<w>] [#<stepx>] [#<stepy>] [#<search_feed>] [#<latch_feed>] [#<safe_z>] [#<search_z>] [#<safe_fast_z>]
(X0 = X163.7, Y0=Y231.7, Z0=-37.195)
G00 X#<x0> Y#<y0>
(DEBUG,5063=#5063)
M65 P1
G4 P1
M64 P1
G4 P4
M64 P0
F250
G1 Z0
#<y> = #<y0> (сохраняем y)
O101 WHILE [#<y> LE #<h>+#<y0>] (пока y<y+h)
#<x> = #<x0> (сохраняем x)
O102 WHILE [#<x> LE #<w>+#<x0>] (пока x<x+w)
G0 X[#<x>] Y[#<y>]
G1 Z0
G0 Z[#<safe_z>]
#<x> = [#<x>+#<stepx>]
O102 ENDWHILE
#<y> = [#<y>+#<stepy>]
G0 Z[#<safe_z>]
O101 ENDWHILE
M65 P0
G0 Z30
G0 X0 Y0
M2