FAQ по Gcode, примеры

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Сейчас проверять буду.
А на счет полярных координат вариантов нет?
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

nkp писал(а):это я от лени так пишу-сорри(по аналогии с геометрией)
Это нормально сработает если подпрограмма в относительных координатах, а если в абсолюте то нифига не получится.
Или если в начале подпрограммы написать что-то типа

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

G10 L2 P0 X0 Y0
Но!!! P0 портит всё!!! Может G92 спасёт? Похоже параметры самое то. Как проверю отпишусь.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение Nick »

xentaur писал(а):Nick, а параметры #5330 из G-кода можно менять, тогда это хоть какой-то вариант! Я тогда находясь в G53 в #5330 запищу первый центр, потом G54 (или что там соответствует) и т.д. Вот это да! Вариант!
Лучше их менять через G10 L2, а читать можно через #1234 (это относится к параметрам которые задают систему координат).

по поводу твоей задачи, я бы сделал так:

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

#<num> = 9 
#<r-step> = 40
#<mach> = 123 (номер подпрограммы)

O100 repeat [#<num>]
  G10 L2 R[#5330+#<r-step>] 
  O<#mach> call 
O100 endrepeat 

Все это можно в свою очередь запихать в отельный файл с отдельным Osub потом его вызывать O<angular-array> call [xxx] [yyy] [zzz]. И тоже можно сделать и с квадратным массивом.
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Спасибо. Идея понятна, но не нова. К сожалению точность деталюшек высокая. И поэтому из-за корявости изготовления кондуктора для крепления заготовок, приходится координаты центров задавать индивидуально для каждой позиции.
По документации для G10 L2 параметр P обязательный.
Последний раз редактировалось xentaur 10 июн 2012, 03:24, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение Nick »

xentaur писал(а):По документации для G10 L2 параметр P обязательный.
Ну можно его тоже в функцию передавать...
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Не нужно мне в подпрограмму его передавать. В моем случае подпрограмма делает фигурные отверстия вокруг текущего X0 Y0 Z0 используя текущую абсолютную систему координат. Вот X0 Y0 Z0 R0 Я и хочу менять в основной проге.
Я кондуктор на столе выставил, забазировал первую заготовку в G54, например, и всё! Дальше мне просто нужны смещения и повороты. Координаты остальных заготовок мне известны.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение nkp »

И повороты и смещения -все есть.В чем сейчас трудность?
Вложения
4.ngc
(170 байт) 1191 скачивание
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Трудность в адаптации. Пример мне не подходит - подпрограмма в G91 работает.

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

g54 g17 g40 g90 g90.1

o103 sub
#<a>=40
o133 repeat [6]
g10 l2 p0 r[#<a>]

/старый код подпрограммы
g0 x10 y0
z0.2 
G02 I7.5 J0 z-5 p10
g0 x7.5 y0
z5
/---------------------------

#<a>=[#<a>+60]
o133endrepeat
o103 endsub

/Основная программа

f600
g0 z50
x0 y0
o103call

m2
Есть предложения? Как сделать матрицу таких? Желательно задавать координаты относительно первой заготовки.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение nkp »

xentaur писал(а):Пример мне не подходит - подпрограмма в G91 работает.
что это значит?
мой код из о103 выбрасывается полностью.Туда суем код подпрограммы настоящей
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

G10 L2 без P- точно не работает. Неудобно получается.
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

nkp писал(а):что это значит?
мой код из о103 выбрасывается полностью.Туда суем код подпрограммы настоящей
моя подпрограмма работает только в G90 и X0 Y0 должен быть в центре заготовки. В моем примере (твоём переделанном :cheesy: ) в подпрограмме режется резьба, только для одного отверстия - остальные обрабатываются при помощи поворота координат.
Большое спасибо. Но я никак не допру как мне остальные заготовки обработать?
Заготовок 24 штуки в матрице 6х4. Нужно обработать все.
Просто хочу задать координаты всех следующих заготовок относительно первой
Типа G10 L2 P0 X50, но у меня какой-то бред начинается.
Вот вроде что то начало получаться.

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


g54 g17 g40 g90 g90.1

o103 sub
  #<a>=0
    o133 repeat [6]
    g10 l2 p0 r[#<a>]
  
    /старый код подпрограммы
    g90
    g0 x10 y0
    z0.2 
    G02 I7.5 J0 z-2 p4
    g0 x7.5 y0                
    z5
    /---------------------------
    
    #<a>=[#<a>+60]
    o133endrepeat 
  g10 l2 p0 r0
  o103 endsub

/Основная программа

f1500
g0 z50

g10 l2 p0 x0
o103call

g10 l2 p0 x25
o103call

g10 l2 p0 x50
o103call

g10 l2 p0 x0 y25
o103call

g10 l2 p0 x25 y25
o103call

g10 l2 p0 x50 y25
o103call

m2
offset_rotate.png (5687 просмотров) <a class='original' href='./download/file.php?id=5817&sid=ea6a4e4bbdbd70aa5693a76d760d23c1&mode=view' target=_blank>Загрузить оригинал (119.34 КБ)</a>
Но не удобно и коряво. везде L2 P0 :pssdoff:
Пока так сойдет.
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Спасибо за помощь, скоро и на станке попробую.

Облом G10 L2 не сбрасывает координаты при перезапуске программы. Что делать?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение nkp »

xentaur писал(а):Что делать?

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

g54 g17 g40 g90 g90.1

o103 sub
  #<a>=0
    o133 repeat [6]
    g10 l2 p0 r[#<a>]
  
    /старый код подпрограммы
    g90
    g0 x10 y0
    z0.2 
    G02 I7.5 J0 z-2 p4
    g0 x7.5 y0                
    z5
    /---------------------------
    
    #<a>=[#<a>+60]
    o133endrepeat 
  g10 l2 p0 r0
  o103 endsub

/Основная программа

f1500
g0 z50

g10 l2 p1 x0
o103call
g55
g10 l2 p2 x25
o103call
g56
g10 l2 p3 x50
o103call
g57
g10 l2 p4 x0 y25
o103call
g58
g10 l2 p5 x25 y25
o103call
g59
g10 l2 p6 x50 y25
o103call
g54
g10 l2 p1 r0
g0 x0 y0
m2
проверил-вроде работает
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Первый раз работает как надо, а второй и дальше пилит только дальний ряд дважды (даже если станок выключить авостом, включить, хоум, пуск).
Но если перезапустить LinuxCNC, то опять первый раз ОК, а остальные только второй ряд дважды.

Так вроде получилось, опять же криво, но работает.

А вот я код переделал с бесконечным циклом, Я так часто делаю, но LinuxCNC тошнит. Точнее загрузку прервать можно по [Esc], и даже прогу запустить, потом если остановить, то опять [Esc] или полный повисон. :idiot: :pssdoff:

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

%
g54 g17 g40 g90 g90.1 
g10 l2 p0 x0 y0 z0 r0

o103 sub
  #<a>=0
    o133 repeat [6]
    g10 l2 p0 r[#<a>]
  
    (старый код подпрограммы)
    g90
    g0 x10 y0
    z0.2 
    G02 I7.5 J0 z-2 p4
    g0 x7.5 y0                
    z5
    (-----------------------)
    
    #<a>=[#<a>+60]
    o133endrepeat 
  g10 l2 p0 r0
  o103 endsub

(Основная программа)

f1500
g0 z50

o555 while [1]
m3

g10 l2 p0 x0
o103call

g10 l2 p0 x25
o103call

g10 l2 p0 x50
o103call

g10 l2 p0 x0 y25
o103call

g10 l2 p0 x25 y25
o103call

g10 l2 p0 x50 y25
o103call

z50 m5
m0
o555 endwhile


m2
%






P.S. Потом заменил while на repeat [1000] и не дождался окончания трассировки. :lol: Поставил [100]. Но так не годится, хочу while[1].
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Нашел способ. block_delete должен быть отключен перед загрузкой программы.

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

%
g54 g17 g40 g90 g90.1 
g10 l2 p0 x0 y0 z0 r0

o103 sub
  #<a>=0
    o133 repeat [6]
    g10 l2 p0 r[#<a>]
  
    (старый код подпрограммы)
    g90
    g0 x10 y0
    z0.2 
    G02 I7.5 J0 z-2 p4
    g0 x7.5 y0                
    z5
    (-----------------------)
    
    #<a>=[#<a>+60]
    o133endrepeat 
  g10 l2 p0 r0
  o103 endsub

(Основная программа)

f1500
g0 z50

o555 repeat [100]
m3

g10 l2 p0 x0
o103call

g10 l2 p0 x25
o103call

g10 l2 p0 x50
o103call

g10 l2 p0 x0 y25
o103call

g10 l2 p0 x25 y25
o103call

g10 l2 p0 x50 y25
o103call

z50 m5
m0
/m2 (чтобы не ждать долго загрузки)
o555 endrepeat


m2
%
Но нифига, только block_delete включаешь и можно пить кофе...Решил оставить repeat [100].
xentaur
Опытный
Сообщения: 178
Зарегистрирован: 09 ноя 2010, 02:29
Репутация: 1
Откуда: Украина Харьков
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение xentaur »

Оказалось что проблема в оболочке axis, под tklinuxcnc бесконечный while работает похоже без проблем. Нужно с axis разбираться.
33 минуты полёт нормальный!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение Nick »

xentaur писал(а):Оказалось что проблема в оболочке axis, под tklinuxcnc бесконечный while работает похоже без проблем. Нужно с axis разбираться.33 минуты полёт нормальный!
Скорее всего потому, что tk не строит визуализацию всей обработки, а axis пытается это сделать и нарывается на бесконечный цикл.
ЗЫ что такое block_delete?
ЗЫЫ тему позже отделю...
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение sr480 »

Подскажите как правильно задать начало заготовки?

Сейчас я подъезжаю в начало заготовки, в MDI вызываю G92 X0 Y0 Z0. Но приэтом загруженная программа фрезеровки не смещается в этот ноль - нужно переоткрыть файл.
Фрезеровка идет двумя разными инструментами, при смене инструмента нужно заново выставлять высоту - приходится останавливать программу, ехать в ноль, вызывать G92 Z0, перезагружать файл, и запускать с места остановки.

Как-то это неправильно. Еще хочу поставить один концевик, чтоб он работал как Prob-In
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение Nick »

Смещается не рисунок предпросмотра, а смещается нулевая точка системы координат.
На скриншоте даже отображается какие коды на нее повлияли.
sr480 писал(а):Как-то это неправильно. Еще хочу поставить один концевик, чтоб он работал как Prob-In
Не вопрос, ставь :) Кстати, можешь автоматом настроить обнуление второй фрезы. (Через G38)
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: FAQ по Gcode, примеры

Сообщение sr480 »

Ну вот открыл я свой GCode - LinuxCNC мне пишет: невозможно выполнить, так как превышает минимум оси Х, тогда я отъезжаю влево вызываю G92 X0, пробую снова и тожесамое, а вот если переоткрыть GCode то рисунок в просмотре перемещается и исполняется тоже без проблем.
Ответить

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