Перестраиваемый автомат на ngcgui от чайника
Часто бывает необходимо быстро подготавливать файлы простой обработки заготовки. Написание подобной программы в 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