Выкладываю решение по сканированию поверхности в LIinuxCNC.
Весь фокус в команде LOG!
в отличие от Probeopen, эта команда позволяет писать в файл, все что угодно.
синтаксис такой :
(LOGOPEN,filename.xxx) - открывается файл filename.xxx в каталоге текущей конфигурации
(LOGCLOSE) - закрытие файла
(LOG, [g-code][X][#5061] [Y][#5062] [Z][#5063] и так далее) - запись в файл. квадратные скобки означают что можно и не писать.
запятая после LOG, обязательна!
можно писать, все что угодно, если #имя переменной то в файл кладется значение переменной в текстовом формате
то есть если нужен просто массив XYZ, то команда будет: (LOG, #5061 #5062 #5063)
для ускорения сканирования, легко сделать, двойную пробу - ткнуть на высокой скорости, чуть подпрыгнуть и ткнуть помедленнее ,а результат записать
таким образом, появилась возможность результатом сканирования получить готовый G-код!!!
в качестве примера, возьмем прогу gridprobe.ngc и поизвращаемся над ней:
Код: Выделить всё
( Rectangular Probing )
( )
( This program repeatedly probes in a regular XY grid and writes the )
( probed location to the file 'probe-results.txt' in the same directory )
( as the .ini file )
(Configuration section)
G21 (мм)
F200 (скорость пробника)
#1=0 (начало сканирования по X )
#2=0.5 (шаг по X)
#3=50 (количество шагов X)
#4=0 (начало сканирования по Y)
#5=.5 (шаг по Y)
#6=50 (количество шагов Y)
#7=10 (Z высота безопасности)
#8=-10 (Z глубина сканирования)
(End configuration section)
(PROBEOPEN myprobe.ngc)
(тут пишем шапку будущей программы)
(LOG, G54)
(LOG, G21)
(LOG, F1500)
(LOG,G0 Z20)
(LOG, G0 X0 Y0)
(LOG, M3)
( в общем, все что угодно! все что после запятой, попадает в Log-файл)
#9=0 #10=0
G0Z#7
O1 while [#9 lt #6]
#10=0
G0 Y[#4+#5*#9]
O2 while [#10 lt #3]
O3 if [[#9/2] - fix[#9/2] eq 0]
G0X[#1+#2*#10]
O3 else
G0X[#1+#2*[#3-#10-1]]
O3 endif
G38.2Z#8
(LOG,G1 X#5061 Y#5062 Z#5063) (тут в файл кладется строка вида G1 X Y Z, где X Y Z - координаты срабатывания пробника)
G0Z#7
#10=[#10+1]
O2 endwhile
#9=[#9+1]
O1 endwhile
(сканирование закончено, можно занести код окончания программы
(LOG, G0 Z20 )
(LOG, M30)
(LOGCLOSE)
G0Z#7
G0X#1Y#4
M2
вида:
Код: Выделить всё
G54
G21
F1500
G0 Z20
G0 X0 Y0
M3
G1 X Y Z
.....
G1 X Y Z
G0 Z20
M30
ниже - начало темы
Тут вот понадобилось сделать сканирование поверхности на станке с LInuxCNC
программку нашел мгновенно в теме http://www.cnc-club.ru/forum/viewtopic. ... 0%B5%D1%80
Код: Выделить всё
[code=gcode](smartprobe.ngc)
( Rectangular Probing )
( )
( This program repeatedly probes in a regular XY grid and writes the )
( probed location to the file 'probe-results.ngc' in the same directory )
( as the .ini file )
(Configuration section)
G20 (Inches) (ВОТ ТУТ ЛУЧШЕ ПОСТАВИТЬ G21 - мм)
F20 (probe speed)
#1=-1 (X start)
#2=.04 (X increment)
#3=51 (X count)
#4=-1
#5=.04
#6=51 (Y count)
#7=1.1 (Z safety)
#8=-.1 (Z probe)
(End configuration section)
(LOGOPEN,probe-results.ngc)
#9=0 #10=0
G0Z#7
O1 while [#9 lt #6]
#10=0
G0 Y[#4+#5*#9]
O2 while [#10 lt #3]
O3 if [[#9/2] - fix[#9/2] eq 0]
#11=[#1+#2*#10]
O3 else
#11=[#1+#2*[#3-#10-1]]
O3 endif
(#11 is X target)
#5070=1
O4 while [#5070 NE 0]
G38.5 z#7
G38.3 x#11
O4 endwhile
G38.2Z#8
(LOG,G1 X#5061 Y#5062 Z#5063)
#10=[#10+1]
O2 endwhile
G0Z#7
#9=[#9+1]
O1 endwhile
(LOGCLOSE)
G0Z#7
G0X#1Y#4
M2
запустил - не работает,
то есть едет к нужному месту, тыкает, и вместо того, чтоб подпрыгнуть и переместится к следующей точке, начинает ехать по X и вылетает по ошибке.
попытался разобраться как программа работает, чет не въехал.
то есть циклы, понятно как организованы а вот процедуру измерения чет не догоняю.
измерения почему-то начинаются с движения на разрыв, да еще зачем-то по X...
может кто знающий разъяснит как эта прога работает?