Страница 20 из 22

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

Добавлено: 15 апр 2018, 22:50
nkp
http://linuxcnc.org/docs/2.7/html/confi ... gc_section
можно попробовать прописать:
RS274NGC_STARTUP_CODE = G61

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

Добавлено: 16 апр 2018, 00:15
mantra
Подходит, благодарю.

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

Добавлено: 01 фев 2019, 00:48
BZ-A
Подскажите какой командой можно отправить ось(конкретно поворотную ) в парковку. После выполнения программы наматывает условно 90000 градусов. G28 не подходит, матает все 90000 назад

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

Добавлено: 27 фев 2019, 18:20
vovafed
http://www.cnc-club.ru/forum/viewtopic. ... 03#p490303
часть программы автосмены так выглядит
O200 IF [#<selected_tool> GT 0]
прграмма
O200 ENDIF
получается программа срабатывает при значении выбираемого инструмента от 1 до бесконечности
как можно ограничить значения от одного до восьми
чтобы можно было прописать присадочную голову в виде инструмента с отступами

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

Добавлено: 28 фев 2019, 06:58
vovafed
O200 IF [ [#<selected_tool> GT 0]LE 8]
утро вечера мудренее
сделаю так должно сработать
пдф здесь скачана может кому пригодится

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

Добавлено: 10 мар 2019, 09:53
evgenymcp
Подскажите каким образом реализовать перемещение по X на определенное растояние при каждом повороте оси A. Задача использовать 4-х осевой фрезер для намотки катушек.

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

Добавлено: 10 мар 2019, 10:00
nkp
evgenymcp писал(а):Подскажите каким образом реализовать перемещение по X на определенное растояние при каждом повороте оси A. Задача использовать 4-х осевой фрезер для намотки катушек.
"нарезай резьбу"

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

Добавлено: 10 мар 2019, 10:09
Лодочник
evgenymcp писал(а):Подскажите каким образом реализовать перемещение по X на определенное растояние при каждом повороте оси A. Задача использовать 4-х осевой фрезер для намотки катушек.
G0 A 360*n X c*n , где n количество витков, c - шаг намотки
Понятно, что вместо G0 можно использовать и G1 с кодом скорости подачи F***

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

Добавлено: 10 мар 2019, 11:04
evgenymcp
Лодочник писал(а):G0 A 360*n X c*n , где n количество витков, c - шаг намотки
Спасибо. Работает.

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

Добавлено: 10 мар 2019, 11:33
evgenymcp
Теперь соображаю как автоматизировать процесс. Вот и настал момент когда понадобилось изучить параметрическое программирование в linuxcnc :)
Нужно сделать цикл где в каждой итерации возвращать X на 0 и прибавлять кол-во витков для оси A :thinking:

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

Добавлено: 10 мар 2019, 15:24
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
%

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

Добавлено: 10 мар 2019, 16:58
Serg
Лодочник писал(а):Понятно, что вместо G0 можно использовать и G1 с кодом скорости подачи F***
Нужно! G0 не надо использовать - не гарантируется, что оси будут двигаться равномерно всё время.
evgenymcp писал(а):Одна итерация цикла отрабатывает как положено, следующая начинает вращать ось A в обратном направлении.
зависит от настроек оси.

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

Добавлено: 10 мар 2019, 17:24
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

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

Добавлено: 10 мар 2019, 23:41
evgenymcp
UAVpilot писал(а):Нужно! G0 не надо использовать - не гарантируется, что оси будут двигаться равномерно всё время.
Пробовал через G1 и F, так же
Nick писал(а):А где удвоение?
G0 A[#1*2]
Nick писал(а):И ещё лучше ось А сделать. Wrapped rotary
Можно подробнее как через Wrapped rotary? Если ставлю в настройках оси Wrapped rotary=1, тогда больше 359.9 градусов вылазит ошибка лимитов.

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

Добавлено: 11 мар 2019, 00:17
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:

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

Добавлено: 26 июн 2019, 16:39
evgenymcp
Требуется фрезернуть резьбу 1 1/2 в фанере дисковой фрезой с помощью винтовой интерполяции. Потерял заготовку. Есть у кого-нибудь рабочая, чтобы выставиться в центр отверстия и указать радиус и глубину. Знаю, что делается через G02 G03.

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

Добавлено: 27 июн 2019, 08:21
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
%

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

Добавлено: 02 сен 2019, 18:31
solo
подскажите пж
существует ли возможность в LinuxCNC выполнение двух независимых Ж кодов по внешним сигналам , как только с пина пришло так ж код и зажужал не зависимо друг от друга

так чтобы при пи приходе сигнала с motion.digital -in-00 выполнялся Ж код управления осями (XYZ), а при сигнале с motion.digital -in-01 выполнялся Ж код управления осями (ABC)

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

Добавлено: 02 сен 2019, 19:20
nkp
какой gui ? (Axis ? Gmoccapy?)

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

Добавлено: 02 сен 2019, 20:43
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