FAQ по Gcode, примеры
-
s_nick
- Новичок
- Сообщения: 17
- Зарегистрирован: 21 июл 2013, 21:33
- Репутация: 0
- Контактная информация:
Re: FAQ по Gcode, примеры
Спасибо!
Re: FAQ по Gcode, примеры
попробуй G28 или G30s_nick писал(а): оси но через G код.
Сферический ватник в вакууме.
-
s_nick
- Новичок
- Сообщения: 17
- Зарегистрирован: 21 июл 2013, 21:33
- Репутация: 0
- Контактная информация:
Re: FAQ по Gcode, примеры
G28 и G30 вроде как не подразумевают касание концевика, G38 совместно с G10 L20 P1 и G54. Создают нужный эффект, завтра на станке попробую.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: FAQ по Gcode, примеры
Все правильно. Только лучше два G38 - один на большом F, второй на уточнение на маленьком, и потом можно и через G10, а можно и просто через G92 Z0.
А что ты такое хитрое пытаешься сделать?
А что ты такое хитрое пытаешься сделать?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: FAQ по Gcode, примеры
А вот как-бы гарантированно доехать до датчика командой g38.2 вне зависимости от начального положения и смещений по Z?.. 
Абсолютные MIN и MAX по оси известны.
Абсолютные MIN и MAX по оси известны.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: FAQ по Gcode, примеры
Если я правильно понял условия задачи, то вот пример решения:UAVpilot писал(а):А вот как-бы гарантированно доехать до датчика командой g38.2 вне зависимости от начального положения и смещений по Z?..
Ищет центр отверстия с учетом границ рабочего поля. Правда, не по Z, но принцип тот же.
Код: Выделить всё
o<find_center> sub
; Поиск центра отверстия.
; Зонд должен быть введен в отверстие до запуска подпрограммы
#<fspeed> = 600.
#<probe_diam> = 1.6 ; Диаметр зонда центроискателя
#<min_xlimit> = 0. ; Границы рабочего поля
#<max_xlimit> = 290. ;
#<min_ylimit> = -1. ;
#<max_ylimit> = 150. ;
G40 G49
G92.2 ; Отключим смещения по G92
G10 L2 P9 X0 Y0 ; Работать будем в G59.3 (= G53)
G59.3 ; Станочные координаты
M68 E0 Q0.
M68 E1 Q0.
G90 G38.2 X#<min_xlimit> F#<fspeed> ; Найдем касание слева
G91 G38.5 X1. ; Отъезд
G38.2 X-1. F[#<fspeed>/10.] ; Уточнение
#<left> = #5061 ; Запомним
G91 G38.5 X0.5 F#<fspeed> ; Отъезд
G90 G38.2 X#<max_xlimit> ; Справа
G91 G38.5 X-1. ; Отъезд
G38.2 X1. F[#<fspeed>/10.] ; Уточнение
#<right> = #5061 ; Запомним
G91 G38.5 X-0.5 F#<fspeed>
#<xmid> = [[#<left> + #<right>] / 2.]
G90 G0 X#<xmid>
G90 G38.2 Y#<min_ylimit> F#<fspeed> ; Найдем касание снизу
G91 G38.5 Y1. ; Отъезд
G38.2 Y-1. F[#<fspeed>/10.] ; Уточнение
#<bottom> = #5062 ; Запомним
G91 G38.5 Y0.5 F#<fspeed> ; Отъезд
G90 G38.2 Y#<max_ylimit> ; Сверху
G91 G38.5 Y-1. ; Отъезд
G38.2 Y1. F[#<fspeed>/10.] ; Уточнение
#<top> = #5062 ; Запомним
G91 G38.5 Y-0.5 F#<fspeed>
#<ymid> = [[#<bottom> + #<top>] / 2.]
G90 G0 Y#<ymid>
; Уточнение по X
G90 G38.2 X#<min_xlimit> F#<fspeed> ; Найдем касание слева
G91 G38.5 X1. ; Отъезд
G38.2 X-1. F[#<fspeed>/10.] ; Уточнение
#<left> = #5061 ; Запомним
G91 G38.5 X0.5 F#<fspeed> ; Отъезд
G90 G38.2 X#<max_xlimit> ; Справа
G91 G38.5 X-1. ; Отъезд
G38.2 X1. F[#<fspeed>/10.] ; Уточнение
#<right> = #5061 ; Запомним
G91 G38.5 X-0.5 F#<fspeed>
#<xmid> = [[#<left> + #<right>] / 2.]
#<xsize> = [#<right> - #<left> + #<probe_diam>]
G90 G0 X#<xmid>
M68 E0 Q#<xsize>
#<ysize> = [#<top> - #<bottom> + #<probe_diam>]
M68 E1 Q#<ysize>
G54 ; Вернем систему координат по умолчанию
G92.3 ; Вернем смещения по G92
G90
o<find_center> endsub
M02
G40 G49 G92.1
G10 L2 P9 X0 Y0 ; Работать будем в G59.3 (= G53)
G59.3 ; Станочные координаты
G92.2 ; Отключим смещения по G92
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: FAQ по Gcode, примеры
Ну да, я пока додумался до аналогичного варианта, только с предварительным сохранением системы координат на случай, если она используется (в этом случае можно любую использовать).
Но вдруг есть более простое решение?..
P.S. Почему нельзя было сделать группу переменных, содержащих абс. координаты?..
Но вдруг есть более простое решение?..
P.S. Почему нельзя было сделать группу переменных, содержащих абс. координаты?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: FAQ по Gcode, примеры
я ее долго и безуспешно искалUAVpilot писал(а):Почему нельзя было сделать группу переменных, содержащих абс. координаты?..
Чудес не бывает. Бывают фокусы.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: FAQ по Gcode, примеры
а разве на пинах pos-cmd не абсолютные координаты? можно через пины брать ,или через питон-интерфейс:UAVpilot писал(а):Почему нельзя было сделать группу переменных, содержащих абс. координаты?..
Код: Выделить всё
#!/usr/bin/python
import hal
import linuxcnc
s = linuxcnc.stat()
axis = ['x','y','z']
pins = ['actual_position','g5x_offset','g92_offset','tool_offset','position']
h = hal.component("paramGUI")
def st_def(a,p):
if a=='x':i=0
if a=='y':i=1
if a=='z':i=2
if p=='actual_position':return s.actual_position[i]
elif p=='g5x_offset': return s.g5x_offset[i]
elif p=='g92_offset': return s.g92_offset[i]
elif p=='tool_offset': return s.tool_offset[i]
elif p=='position': return s.position[i]
for a in axis:
for p in pins:
h.newpin(p+a, hal.HAL_FLOAT, hal.HAL_OUT)
h.ready()
try:
while 1:
s.poll()
for a in axis:
for p in pins:
h[p+a] = st_def(a,p)
except KeyboardInterrupt:
raise SystemExit- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: FAQ по Gcode, примеры
Дык хочется ж в G-коде.
В принципе если порассуждать, то не так уж всё и страшно. При поиске нуля заготовки по Z можно тупо менять смещение по Z текущей системы координат не заботясь о его сохранности - ведь результатом будет новое смещение по Z, а остальные оси не используются.
При измерении длины инструмента при смене тоже можно не парится, ведь после смены инструмента он находится в заранее определённой точке с заранее известными абсолютными координатами...
В принципе если порассуждать, то не так уж всё и страшно. При поиске нуля заготовки по Z можно тупо менять смещение по Z текущей системы координат не заботясь о его сохранности - ведь результатом будет новое смещение по Z, а остальные оси не используются.
При измерении длины инструмента при смене тоже можно не парится, ведь после смены инструмента он находится в заранее определённой точке с заранее известными абсолютными координатами...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: FAQ по Gcode, примеры
По Z у меня достаточно просто сделано
Предполагается, что мы
- работаем в G54
- высота срабатывания датчика 43.23 мм от поверхности заготовки (я в курсе, что "магические числа" - не по фэншую
)
- вручную подводим инструмент к датчику на расстояние по Z не более 25 мм
Код: Выделить всё
o<zero_z> sub
G49
G40
G10 L2 P1 Z0.
G91
G38.3 Z-25 F500
o123 if[#5070 NE 0]
G38.5 Z2. ; Отъедем назад
G38.2 Z-3. F30 ; Уточним на малой скорости
o123 else
M100 P0 ; Сообщение "Датчик не обнаружен"
o123 endif
G10 L20 P1 Z43.23
G00 Z20
G90
o<zero_z> endsub
- работаем в G54
- высота срабатывания датчика 43.23 мм от поверхности заготовки (я в курсе, что "магические числа" - не по фэншую
- вручную подводим инструмент к датчику на расстояние по Z не более 25 мм
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: FAQ по Gcode, примеры
Почти тоже самое:
Хочу ещё сделать подъём в конце не на самый верх, а туда, откуда начинали, но сегодня уже лень. 
Код: Выделить всё
O<zero-z> sub
G49 G40
G90
G92.1
G10 L2 P[#5220] Z0
G38.2 Z[#1] F[#2]
O<no_probe> IF [#5070 NE 0]
G91
G38.4 Z10 F20
G38.2 Z-5 F10
G10 L20 P[#5220] Z[#3]
G90
G53 G0 Z0
O<no_probe> ENDIF
O<zero-z> endsub
M02Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: FAQ по Gcode, примеры
Надо только в шестой строчке вместо G38.2 поставить G38.3. А то ругаться будет.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: FAQ по Gcode, примеры
А почему просто вот так не сделать:UAVpilot писал(а):А вот как-бы гарантированно доехать до датчика командой g38.2 вне зависимости от начального положения и смещений по Z?..
Абсолютные MIN и MAX по оси известны.
Код: Выделить всё
G91 (incremental)
G38.2 Z-1000
G90 (abs)
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: FAQ по Gcode, примеры
Еще при загрузке скажет "вылезаешь за пределы".Nick писал(а):G38.2 Z-1000
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: FAQ по Gcode, примеры
Специально G38.2 поставил, чтоб не заморачиваться с выводом своего сообщения.Сергей Саныч писал(а):Надо только в шестой строчке вместо G38.2 поставить G38.3. А то ругаться будет.
А я-то думал, что здесь уже не осталось тех, кто это ещё не попробовал...Nick писал(а):А почему просто вот так не сделать:
Опять-же не хочется въезжать в стол, если мимо заготовки и датчика промазал.
P.S. Нипиши уже probe-tool-l.ini, а то ещё немного и придётся самому писать...
Последний раз редактировалось Serg 17 фев 2014, 10:34, всего редактировалось 1 раз.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: FAQ по Gcode, примеры
хммм... да...
можно еще через использование:
5420-5428 - Current Position including offsets in current program units (X Y Z A B C U V W)
-
5401-5409 - Tool Offset (X Y Z A B C U V W)
-
5210 - 1 if G92 offsets are active, 0 if not
5211-5219 - G92 offset (X Y Z A B C U V W)
-
5220 - Current Coordinate System number 1 - 9 for G54 - G59.3
5221-5230 - Coordinate System 1, G54 (X Y Z A B C U V W R) - R denotes the XY rotation angle around the Z axis
но это правда кучу всего писать надо...
можно еще через использование:
5420-5428 - Current Position including offsets in current program units (X Y Z A B C U V W)
-
5401-5409 - Tool Offset (X Y Z A B C U V W)
-
5210 - 1 if G92 offsets are active, 0 if not
5211-5219 - G92 offset (X Y Z A B C U V W)
-
5220 - Current Coordinate System number 1 - 9 for G54 - G59.3
5221-5230 - Coordinate System 1, G54 (X Y Z A B C U V W R) - R denotes the XY rotation angle around the Z axis
но это правда кучу всего писать надо...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: FAQ по Gcode, примеры
А там же вроде есть уже что-то... или нет?UAVpilot писал(а):P.S. Нипиши уже probe-tool-l.ini, а то ещё немного и придётся самому писать...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: FAQ по Gcode, примеры
А покажи вот тут пальчиком?Nick писал(а):А там же вроде есть уже что-то... или нет?
https://github.com/cnc-club/linuxcnc-fe ... ubroutines
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
