Перестраиваемый автомат на ngcgui от чайника

Материал из cnc-club
Версия от 20:27, 19 июня 2014; Вopoн226 (обсуждение | вклад) (Новая страница: «Часто бывает необходимо быстро подготавливать файлы простой обработки заготовки. Напис…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

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