Перестраиваемый автомат на 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