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

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

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

Сообщение nkp »

http://linuxcnc.org/docs/2.7/html/confi ... gc_section
можно попробовать прописать:
RS274NGC_STARTUP_CODE = G61
Аватара пользователя
mantra
Кандидат
Сообщения: 71
Зарегистрирован: 07 апр 2018, 15:11
Репутация: 4
Настоящее имя: Дмитрий
Контактная информация:

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

Сообщение mantra »

Подходит, благодарю.
BZ-A
Новичок
Сообщения: 35
Зарегистрирован: 28 май 2017, 19:33
Репутация: 0
Контактная информация:

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

Сообщение BZ-A »

Подскажите какой командой можно отправить ось(конкретно поворотную ) в парковку. После выполнения программы наматывает условно 90000 градусов. G28 не подходит, матает все 90000 назад
Аватара пользователя
vovafed
Мастер
Сообщения: 1822
Зарегистрирован: 08 фев 2013, 16:19
Репутация: 325
Настоящее имя: Владимир
Откуда: башкортостан
Контактная информация:

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

Сообщение vovafed »

http://www.cnc-club.ru/forum/viewtopic. ... 03#p490303
часть программы автосмены так выглядит
O200 IF [#<selected_tool> GT 0]
прграмма
O200 ENDIF
получается программа срабатывает при значении выбираемого инструмента от 1 до бесконечности
как можно ограничить значения от одного до восьми
чтобы можно было прописать присадочную голову в виде инструмента с отступами
Аватара пользователя
vovafed
Мастер
Сообщения: 1822
Зарегистрирован: 08 фев 2013, 16:19
Репутация: 325
Настоящее имя: Владимир
Откуда: башкортостан
Контактная информация:

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

Сообщение vovafed »

O200 IF [ [#<selected_tool> GT 0]LE 8]
утро вечера мудренее
сделаю так должно сработать
пдф здесь скачана может кому пригодится
Вложения
G_code_LinuxCNC.pdf
(1.36 МБ) 3540 скачиваний
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Подскажите каким образом реализовать перемещение по X на определенное растояние при каждом повороте оси A. Задача использовать 4-х осевой фрезер для намотки катушек.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

evgenymcp писал(а):Подскажите каким образом реализовать перемещение по X на определенное растояние при каждом повороте оси A. Задача использовать 4-х осевой фрезер для намотки катушек.
"нарезай резьбу"
Аватара пользователя
Лодочник
Мастер
Сообщения: 2151
Зарегистрирован: 10 авг 2012, 05:24
Репутация: 1831
Настоящее имя: Олег
Откуда: г.Королев
Контактная информация:

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

Сообщение Лодочник »

evgenymcp писал(а):Подскажите каким образом реализовать перемещение по X на определенное растояние при каждом повороте оси A. Задача использовать 4-х осевой фрезер для намотки катушек.
G0 A 360*n X c*n , где n количество витков, c - шаг намотки
Понятно, что вместо G0 можно использовать и G1 с кодом скорости подачи F***
Последний раз редактировалось Лодочник 10 мар 2019, 11:17, всего редактировалось 2 раза.
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Лодочник писал(а):G0 A 360*n X c*n , где n количество витков, c - шаг намотки
Спасибо. Работает.
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Теперь соображаю как автоматизировать процесс. Вот и настал момент когда понадобилось изучить параметрическое программирование в linuxcnc :)
Нужно сделать цикл где в каждой итерации возвращать X на 0 и прибавлять кол-во витков для оси A :thinking:
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Почему не работает следующий код в lcnc? Одна итерация цикла отрабатывает как положено, следующая начинает вращать ось A в обратном направлении. Переменная #1 должна удваиваться, вместо этого она вновь приобретает значение 3600. Пробовал циклы while вместо repeat.

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

%
#1=3600
o100 repeat [3]
G0 A[#1] X[10]
G0 A[#1*2] X[0]
o100 endrepeat
%
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Лодочник писал(а):Понятно, что вместо G0 можно использовать и G1 с кодом скорости подачи F***
Нужно! G0 не надо использовать - не гарантируется, что оси будут двигаться равномерно всё время.
evgenymcp писал(а):Одна итерация цикла отрабатывает как положено, следующая начинает вращать ось A в обратном направлении.
зависит от настроек оси.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

evgenymcp писал(а):Почему не работает следующий код в lcnc? Одна итерация цикла отрабатывает как положено, следующая начинает вращать ось A в обратном направлении. Переменная #1 должна удваиваться, вместо этого она вновь приобретает значение 3600. Пробовал циклы while вместо repeat.

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

%
#1=3600
o100 repeat [3]
G0 A[#1] X[10]
G0 A[#1*2] X[0]
o100 endrepeat
%
А где удвоение? Ты похоже забыл его дописать.
А вообще это лучше через относительные координаты делать.

И ещё лучше ось А сделать. Wrapped rotary
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

UAVpilot писал(а):Нужно! G0 не надо использовать - не гарантируется, что оси будут двигаться равномерно всё время.
Пробовал через G1 и F, так же
Nick писал(а):А где удвоение?
G0 A[#1*2]
Nick писал(а):И ещё лучше ось А сделать. Wrapped rotary
Можно подробнее как через Wrapped rotary? Если ставлю в настройках оси Wrapped rotary=1, тогда больше 359.9 градусов вылазит ошибка лимитов.
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Прописал в настройках оси wrapped_rotary=1

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

%
g91
#1=3600
o100 repeat [2]
G1 A[#1] X[100] F 1000
G1 A[#1] X[-100] F 1000
o100 endrepeat
%
Этот код работает. Наматывает 40 витков в 4 слоя с шагом 10мм :good:
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Требуется фрезернуть резьбу 1 1/2 в фанере дисковой фрезой с помощью винтовой интерполяции. Потерял заготовку. Есть у кого-нибудь рабочая, чтобы выставиться в центр отверстия и указать радиус и глубину. Знаю, что делается через G02 G03.
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1418
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 326
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

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

Сообщение evgenymcp »

Нашел пример. Но уже разобрался как сделать в Aspire

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

%
G90 G21 G40 G49 M6 T1 G17
G0Z5.000
G0X0.000Y0.000
G0 X0 Y3.571 Z0 F100
G2 X3.571 Y0.000 Z-6.3 I0.000 J-3.571 P9 F100
G0 X5
G0 Z5
G0 X0 Y0
M2
%
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

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

Сообщение solo »

подскажите пж
существует ли возможность в LinuxCNC выполнение двух независимых Ж кодов по внешним сигналам , как только с пина пришло так ж код и зажужал не зависимо друг от друга

так чтобы при пи приходе сигнала с motion.digital -in-00 выполнялся Ж код управления осями (XYZ), а при сигнале с motion.digital -in-01 выполнялся Ж код управления осями (ABC)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

какой gui ? (Axis ? Gmoccapy?)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

https://youtu.be/ARusi0aoEc4

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

#!/usr/bin/python

import hal, time
import Tkinter, linuxcnc

h = hal.component("togglegcode")
h.newpin("in0", hal.HAL_BIT, hal.HAL_IN)
h.newpin("in1", hal.HAL_BIT, hal.HAL_IN)

h.ready()

status = linuxcnc.stat()
cmd = linuxcnc.command()

f0 = "/home/nkp/git/linuxcnc/nc_files/lathe_pawn.ngc"
f1 = "/home/nkp/git/linuxcnc/nc_files/2.ngc"

try:
    while 1:
  
        time.sleep(1)    
        if  h['in0']:
            try:
                status.poll()
                if status.file == f0:
                    continue
                if status.interp_state == linuxcnc.INTERP_IDLE :
                    try :
                        Tkinter.Tk().tk.call("send", "axis", ("remote","clear_live_plot"))
                        Tkinter.Tk().tk.call("send", "axis", ("remote", "open_file_name", f0))
                    except Tkinter.TclError as detail:
                        cmd.reset_interpreter()
                        time.sleep(0.05)
                        cmd.mode(linuxcnc.MODE_AUTO)
                        cmd.program_open(f0)
                        time.sleep(0.05)
                        cmd.auto(linuxcnc.AUTO_RUN, program_start_line)
            except Exception as e:
                pass 
        if  h['in1']:
            try:
                status.poll()
                if status.file == f1:
                    continue                
                if status.interp_state == linuxcnc.INTERP_IDLE :
                    try :
                        Tkinter.Tk().tk.call("send", "axis", ("remote","clear_live_plot"))
                        Tkinter.Tk().tk.call("send", "axis", ("remote", "open_file_name", f1))
                    except Tkinter.TclError as detail:
                        cmd.reset_interpreter()
                        time.sleep(0.05)
                        cmd.mode(linuxcnc.MODE_AUTO)
                        cmd.program_open(f1)
                        time.sleep(0.05)
                        cmd.auto(linuxcnc.AUTO_RUN, program_start_line)
            except Exception as e:
                pass      
        try:
            if status.interp_state == linuxcnc.INTERP_IDLE :

                time.sleep(0.05)
                cmd.mode(linuxcnc.MODE_AUTO)

                time.sleep(0.05)        
                cmd.auto(linuxcnc.AUTO_RUN, 0)
        except Exception as e:
            pass        
except KeyboardInterrupt:
    raise SystemExit  
hal
loadusr python togglegcode.py

loadusr sim_pin togglegcode.in0 togglegcode.in1
Ответить

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