Re: FAQ по Gcode, примеры
Добавлено: 06 дек 2013, 16:12
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
попробуй G28 или G30s_nick писал(а): оси но через G код.
Если я правильно понял условия задачи, то вот пример решения:UAVpilot писал(а):А вот как-бы гарантированно доехать до датчика командой g38.2 вне зависимости от начального положения и смещений по 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
я ее долго и безуспешно искалUAVpilot писал(а):Почему нельзя было сделать группу переменных, содержащих абс. координаты?..
а разве на пинах 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Код: Выделить всё
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
Код: Выделить всё
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А почему просто вот так не сделать:UAVpilot писал(а):А вот как-бы гарантированно доехать до датчика командой g38.2 вне зависимости от начального положения и смещений по Z?..
Абсолютные MIN и MAX по оси известны.
Код: Выделить всё
G91 (incremental)
G38.2 Z-1000
G90 (abs)
Еще при загрузке скажет "вылезаешь за пределы".Nick писал(а):G38.2 Z-1000
Специально G38.2 поставил, чтоб не заморачиваться с выводом своего сообщения.Сергей Саныч писал(а):Надо только в шестой строчке вместо G38.2 поставить G38.3. А то ругаться будет.
А я-то думал, что здесь уже не осталось тех, кто это ещё не попробовал...Nick писал(а):А почему просто вот так не сделать:
А там же вроде есть уже что-то... или нет?UAVpilot писал(а):P.S. Нипиши уже probe-tool-l.ini, а то ещё немного и придётся самому писать...
А покажи вот тут пальчиком?Nick писал(а):А там же вроде есть уже что-то... или нет?