Перестраиваемый автомат на ngcgui от чайника: различия между версиями
Вopoн226 (обсуждение | вклад) (Новая страница: «Часто бывает необходимо быстро подготавливать файлы простой обработки заготовки. Напис…») |
Вopoн226 (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
Часто бывает необходимо быстро подготавливать файлы простой обработки заготовки. Написание подобной программы в G-кодах в CAM-программах потребует времени сопоставимо со временем самой обработки заготовки. В этом случае, можно воспользоваться таким инструментом как NGCGUI. | Часто бывает необходимо быстро подготавливать файлы простой обработки заготовки. Написание подобной программы в G-кодах в CAM-программах потребует времени сопоставимо со временем самой обработки заготовки. В этом случае, можно воспользоваться таким инструментом как NGCGUI. | ||
| + | == Перенастраиваемый автомат по фрезеровке поверхности заготовок == | ||
Попробуем разобраться с созданием ngcgui в конфигурации AXIS на примере создания простого перенастраиваемого автомата по фрезеровке поверхности заготовки. | Попробуем разобраться с созданием ngcgui в конфигурации AXIS на примере создания простого перенастраиваемого автомата по фрезеровке поверхности заготовки. | ||
| Строка 108: | Строка 109: | ||
M9 | M9 | ||
o<stan> endsub | o<stan> endsub | ||
| + | |||
| + | == Перенастраиваемый автомат по сверловке сетки отверстий == | ||
| + | |||
| + | 1. '''В INI''': | ||
| + | |||
| + | |||
| + | [DISPLAY] | ||
| + | DISPLAY = axis | ||
| + | EDITOR = gedit | ||
| + | GLADEVCP = mygui.ui | ||
| + | POSITION_OFFSET = RELATIVE | ||
| + | POSITION_FEEDBACK = ACTUAL | ||
| + | MAX_FEED_OVERRIDE = 1.2 | ||
| + | PROGRAM_PREFIX = /home/sun/linuxcnc/nc_files | ||
| + | NGCGUI_SUBFILE =/home/sun/linuxcnc/nc_files/sverlo.ngc | ||
| + | USER_COMMAND_FILE = /home/sun/linuxcnc/config/tkapp.py | ||
| + | NGCGUI = /usr/lib/tcltk/linuxcnc/ngcgui.tcl | ||
| + | TKAPP = /usr/lib/tcltk/linuxcnc/ngcgui_app.tcl | ||
| + | |||
| + | |||
| + | |||
| + | 2. '''Файл sverlo.ngc''' в папке /home/sun/linuxcnc/nc_files : | ||
| + | |||
| + | |||
| + | o<sverlo> sub | ||
| + | #<Num_X> = #1 (=3 кол-во отверстий по X) | ||
| + | #<Step_X> = #2 (=10 шаг по X, мм) | ||
| + | #<Num_Y> = #3 (=3 кол-во отверстий по Y) | ||
| + | #<Step_Y> = #4 (=10 шаг по Y, мм) | ||
| + | #<Speed> = #5 (=200 скорость сверловки) | ||
| + | #<Depth> = #6 (=10 глубина сверловки, мм) | ||
| + | #<Step_Z> = #7 (=5 шаг сверловки, мм) | ||
| + | #<Surface> = #8 (=0 высота пов-ти заготовки, мм) | ||
| + | #<Max_RPM> = #9 (=5000 обороты шпинделя) | ||
| + | #<Start_X> = #10 (=0 нач.координата по X, мм) | ||
| + | #<Start_Y> = #11 (=0 нач.координата по Y, мм) | ||
| + | G0 Z5.0 | ||
| + | G0 X0 Y0 S#<Max_RPM> M3 | ||
| + | #<Current_Y> = #<Start_Y> | ||
| + | o100 repeat [#<Num_Y>] | ||
| + | #<Current_X> = #<Start_X> | ||
| + | o101 repeat [#<Num_X>] | ||
| + | G0 X#<Current_X> Y#<Current_Y> | ||
| + | G83 R#<Surface> Z[-1 * #<Depth>] Q#<Step_Z> F#<Speed> | ||
| + | G0 Z5.0 | ||
| + | #<Current_X> = [#<Current_X> + #<Step_X>] | ||
| + | o101 endrepeat | ||
| + | #<Current_Y> = [#<Current_Y> + #<Step_Y>] | ||
| + | o100 endrepeat | ||
| + | G0 Z5.0 M5 | ||
| + | G0 X0 Y0 | ||
| + | M9 | ||
| + | o<sverlo> endsub | ||
Версия 17:37, 19 июня 2014
Часто бывает необходимо быстро подготавливать файлы простой обработки заготовки. Написание подобной программы в G-кодах в CAM-программах потребует времени сопоставимо со временем самой обработки заготовки. В этом случае, можно воспользоваться таким инструментом как NGCGUI.
Перенастраиваемый автомат по фрезеровке поверхности заготовок
Попробуем разобраться с созданием ngcgui в конфигурации AXIS на примере создания простого перенастраиваемого автомата по фрезеровке поверхности заготовки.
Задача. Построить простой автомат с тремя координатами и перенастраиваемыми оперативно параметрами под управлением LinuxCNC при помощи ngcgui
Предназначение. Быстрая подготовка станка к фрезеровке поверхности (плоскости) у заготовок различных габаритных размеров и различного материала.
Потому нужно в параметры обработки заготовки вводить оперативно: габаритные размеры заготовки; координаты начала обработки; диаметр фрезы (шаг обработки); подачу; обороты шпинделя.
НАЧАЛЬНЫЕ ШАГИ - подготовка конфигурации.
В LinuxCNC версии 2.5 и выше ngcgui уже встроена в AXIS (файлы ngcgui.tcl , ngcgui_app.tcl и ngcgui_ttt.tcl лежат в папке usr/lib/tcltk/linuxcnc).
1. Создаем конфигурацию станка на базе AXIS: 1.1. В INI прописываем:
[DISPLAY] DISPLAY = axis EDITOR = gedit GLADEVCP = mygui.ui POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.2 PROGRAM_PREFIX = /home/sun/linuxcnc/nc_files NGCGUI_SUBFILE =/home/sun/linuxcnc/nc_files/stan.ngc USER_COMMAND_FILE = /home/sun/linuxcnc/config/tkapp.py NGCGUI = /usr/lib/tcltk/linuxcnc/ngcgui.tcl TKAPP = /usr/lib/tcltk/linuxcnc/ngcgui_app.tcl
(здесь и далее адрес /home/sun/linuxcnc/nc_files/ указан мой - Вы пропишите свой)
Файл tkapp.py , описывающий панель для нашей подпрограммы положил в папку /home/sun/linuxcnc/config , чтобы этот файл можно было использовать и в других конфигурациях.
[HAL] HALFILE = stanok.hal POSTGUI_HALFILE = postgui.hal HALUI = halui
1.2. Настройки HAL, визуальной панели mygui.ui и файла с пинами визуальной панели postgui.hal стандартны и особенностей не имеют.
2. Запускаем конфигурацию станка и проверяем её работоспособность. Станок пока не может менять своих параметров.
3. В папку /home/sun/linuxcnc/nc_files положим также файл stan.ngc с таким содержанием (без программы G-кодов):
o<stan> sub
#<Length> = #1 (=1000 длина)
#<Width> = #2 (=500 ширина)
#<Diametr> = #3 (=8 диаметр фрезы)
#<FeedRate> = #4 (=40 подача)
#<Max_RPM> = #5 (=15000 обороты)
#<Depth> = #6 (=-2 глубина)
o<stan> endsub
Добавим программу обработки (фрезеровки) поверхности заготовки в G-кодах (с использованием циклов):
1. Устанавливаем высоту фрезы 5мм над поверхностью заготовки (и 5мм, и то, что поверхность заготовки Z=0 - по умолчанию).
2. Выходим в начало обработки (по умолчанию X0 Y0) и включаем шпиндель на заданных оборотах.
3. Опускаемся на глубину фрезеровки заготовки (переменная Depth = -2мм) со скоростью F400 (по умолчанию, но можно и отдельно прописать переменной).
4. Высчитываем шаг фрезеровки (30% от диаметра фрезы).
5. Запускаем цикл фрезеровки поверхности.
6. По окончании поднимаем фрезу и выключаем шпиндель, перемещаемся в начальное положение.
В итоге файл stan.ngc выглядит так:
o<stan> sub
#<Length> = #1 (=1000 длина)
#<Width> = #2 (=500 ширина)
#<Diametr> = #3 (=8 диаметр фрезы)
#<FeedRate> = #4 (=40 подача)
#<Max_RPM> = #5 (=15000 обороты)
#<Depth> = #6 (=-2 глубина)
G0 Z5.0
G0 X0 Y0 S#<Max_RPM> M3
G1 Z#<Depth> F400
#<Step> = [#<Diametr> * 0.3]
#<Current_Length> = 0
o100 repeat [#<Length> / [#<Step> * 2] + 1]
G1 X#<Width> Y#<Current_Length> F#<FeedRate>
#<Current_Length> = [#<Current_Length> + #<Step>]
G0 X#<Width> Y#<Current_Length>
G1 X0 Y#<Current_Length> F#<FeedRate>
#<Current_Length> = [#<Current_Length> + #<Step>]
G0 X0 Y#<Current_Length>
o100 endrepeat
G0 Z5.0 M5
G0 X0 Y0
M9
o<stan> endsub
Перенастраиваемый автомат по сверловке сетки отверстий
1. В INI:
[DISPLAY] DISPLAY = axis EDITOR = gedit GLADEVCP = mygui.ui POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL MAX_FEED_OVERRIDE = 1.2 PROGRAM_PREFIX = /home/sun/linuxcnc/nc_files NGCGUI_SUBFILE =/home/sun/linuxcnc/nc_files/sverlo.ngc USER_COMMAND_FILE = /home/sun/linuxcnc/config/tkapp.py NGCGUI = /usr/lib/tcltk/linuxcnc/ngcgui.tcl TKAPP = /usr/lib/tcltk/linuxcnc/ngcgui_app.tcl
2. Файл sverlo.ngc в папке /home/sun/linuxcnc/nc_files :
o<sverlo> sub
#<Num_X> = #1 (=3 кол-во отверстий по X)
#<Step_X> = #2 (=10 шаг по X, мм)
#<Num_Y> = #3 (=3 кол-во отверстий по Y)
#<Step_Y> = #4 (=10 шаг по Y, мм)
#<Speed> = #5 (=200 скорость сверловки)
#<Depth> = #6 (=10 глубина сверловки, мм)
#<Step_Z> = #7 (=5 шаг сверловки, мм)
#<Surface> = #8 (=0 высота пов-ти заготовки, мм)
#<Max_RPM> = #9 (=5000 обороты шпинделя)
#<Start_X> = #10 (=0 нач.координата по X, мм)
#<Start_Y> = #11 (=0 нач.координата по Y, мм)
G0 Z5.0
G0 X0 Y0 S#<Max_RPM> M3
#<Current_Y> = #<Start_Y>
o100 repeat [#<Num_Y>]
#<Current_X> = #<Start_X>
o101 repeat [#<Num_X>]
G0 X#<Current_X> Y#<Current_Y>
G83 R#<Surface> Z[-1 * #<Depth>] Q#<Step_Z> F#<Speed>
G0 Z5.0
#<Current_X> = [#<Current_X> + #<Step_X>]
o101 endrepeat
#<Current_Y> = [#<Current_Y> + #<Step_Y>]
o100 endrepeat
G0 Z5.0 M5
G0 X0 Y0
M9
o<sverlo> endsub