Linux CNC сканирование поверхности.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
odekolon
Мастер
Сообщения: 1118
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Linux CNC сканирование поверхности.

Сообщение odekolon »

Всем добрый вечер!
Выкладываю решение по сканированию поверхности в 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
В результате, получим готовый файл myprobe.ngc

вида:

Код: Выделить всё

G54
G21
F1500
G0 Z20
G0 X0 Y0 
M3

G1  X Y Z
.....
G1 X Y Z

G0 Z20
M30
На практике, пока не применял, но прикольно! :hehehe:


ниже - начало темы
Тут вот понадобилось сделать сканирование поверхности на станке с 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
[/code]
запустил - не работает,
то есть едет к нужному месту, тыкает, и вместо того, чтоб подпрыгнуть и переместится к следующей точке, начинает ехать по X и вылетает по ошибке.

попытался разобраться как программа работает, чет не въехал.
то есть циклы, понятно как организованы а вот процедуру измерения чет не догоняю.
измерения почему-то начинаются с движения на разрыв, да еще зачем-то по X...

может кто знающий разъяснит как эта прога работает?
Последний раз редактировалось odekolon 18 окт 2017, 18:00, всего редактировалось 1 раз.
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
odekolon
Мастер
Сообщения: 1118
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: Linux CNC сканирование поверхности.

Сообщение odekolon »

всем добрый день

со смартпробе так и не разобрался.
на гитхабе нашел gridprobe.ngc (кстати там есть и другие полезные программки, кто хочет может ознакомиться https://github.com/araisrobo/linuxcnc/t ... r/nc_files

Код: Выделить всё

( 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)
G20   (Inches)
F4    (probe speed)

#1=0  (X start)
#2=.25 (X increment)
#3=13 (X count)

#4=0
#5=.25
#6=5 (Y count)

#7=.1 (Z safety)
#8=-.5 (Z probe)
(End configuration section)

(PROBEOPEN probe-results.txt)
#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
        G0Z#7
        #10=[#10+1]
    O2 endwhile
    #9=[#9+1]
O1 endwhile

(PROBECLOSE)
G0Z#7
G0X#1Y#4
M2
работает в точности, как на мач3

но в файле "probe-results.txt" не три, а 6 отсчетов на точку (три - реальные, остальные нулевые)
конечно "search and replace" никто не отменял, но нельзя ли как-то сделать чтоб клались только нужные отсчеты? Ну типа сказать в настройках что только три оси на станке, а не больше.

и еще (ну чисто из перфекционизма) чтоб прри скнировании, ось Z сначала на большой скорости ехала до встречи с материалом, потом подпрыгивала на пару мм и дальше измеряла точно. С помощью G38 это сделать без проблем, но результаты "быстрых" измерений тоже будут в файл писаться, что не слишком хорошо. может можно как-то по другому обойтись?
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
verser
Мастер
Сообщения: 1895
Зарегистрирован: 21 июл 2013, 22:28
Репутация: 1282
Настоящее имя: Сергей
Откуда: Тбилиси
Контактная информация:

Re: Linux CNC сканирование поверхности.

Сообщение verser »

odekolon писал(а):... но результаты "быстрых" измерений тоже будут в файл писаться, что не слишком хорошо. может можно как-то по другому обойтись?
Посмотрите, как в примере из документации smartprobe.ngc сделано без лишних записей в файл с помощью LOGOPEN вместо PROBEOPEN.
Аватара пользователя
odekolon
Мастер
Сообщения: 1118
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: Linux CNC сканирование поверхности.

Сообщение odekolon »

Ага, спасибо, результат в шапке
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Ответить

Вернуться в «LinuxCNC»