Страница 1 из 2

Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 15 июн 2014, 21:59
Ворон226
Очередная попытка разобраться самому и помочь последователям.

Задача.
Построить простой автомат с тремя координатами и перенастраиваемыми оперативно параметрами под управлением 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
Проверил — работает.

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

Добавлено: 15 июн 2014, 22:11
nkp
небольшой штрих - в стандартный ngcgui можно добавить чекбоксы(например дя вкл-выкл охлаждения)
примерно так это выглядит

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

Добавлено: 15 июн 2014, 22:18
Ворон226
А вот по фоткам я вижу, что ngcgui встроена в AXIS, а не отдельное окно, как у меня получилось. Как это сделать? И как убрать окно визуализации в AXIS (ведь смотреть грустную фрезеровку поверхности на экране компа или вживую - большой разницы нет...)?

(чекбоксы пока непонятны для чего, если можно просто кнопки прописать включения и выключения охлаждения? Или они привязываются к результатам вычисления в подпрограмме?)

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

Добавлено: 15 июн 2014, 22:19
nkp
Ворон226 писал(а):Изменить внешний вид панели AXIS убрать лишние элементы, расчистив место для нашей дополнительной панели.
здесь есть немного об этом ...

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

Добавлено: 15 июн 2014, 22:25
nkp
Ворон226 писал(а):А вот по фоткам я вижу, что ngcgui встроена в AXIS, а не отдельное окно, как у меня получилось. Как это сделать? И как убрать окно визуализации в AXIS (ведь смотреть грустную фрезеровку поверхности на экране компа или вживую - большой разницы нет...)?
прописать настройки в ini и положить файлы ngcgui в папку конфига...
насчет gremlin - можно конечно его убрать - но можно просто DRO сделать "первым" ...
Ворон226 писал(а):(чекбоксы пока непонятны для чего, если можно просто кнопки прописать включения и выключения охлаждения? Или они привязываются к результатам вычисления в подпрограмме?)
конечно кнопки можно сделать - но то для ручного упр.,а чекбокс прописывает м-команду в ж код
немного удобней и наглядней чем :
#<Coolant> = #12 (=8 Охл вкл=8, Выкл=9)

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

Добавлено: 15 июн 2014, 22:35
Ворон226
Завтра продолжу... СпасибО!

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

Добавлено: 16 июн 2014, 06:48
Ворон226
nkp писал(а):настройки в ini и положить файлы ngcgui в папку конфига...
Но ведь ngcgui в версиях выше 2,4 уже есть. Может просто прописать настройки в INI?
Так, например, файлы ngcgui.tcl , ngcgui_app.tcl и ngcgui_ttt.tcl лежат в папке usr/lib/tcltk/linuxcnc
И ведь это правильно, чтобы стандартные файлы лежали в системных папках, а не в конкретной конфигурации. Ведь их можно использовать и в других конфигурациях.

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

Добавлено: 16 июн 2014, 07:55
Ворон226
Так как файлы ngcgui.tcl , ngcgui_app.tcl и ngcgui_ttt.tcl лежат в папке usr/lib/tcltk/linuxcnc , то прописываем в 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
#INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
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
TKAPP  = /usr/lib/tcltk/linuxcnc/ngcgui_ttt.tcl
Там же видно, что файл tkapp.py (по моим соображениям, описывающий панель для нашей подпрограммы) положил в папку /home/sun/linuxcnc/config , чтобы этот файл можно было использовать и в других конфигурациях.

Запустил LinuxCNC и на панели AXIS появилась вкладка управления параметрами подпрограммы.

Теперь можно убирать кнопку "НАСТРОЙКА" с нашей панели за ненадобностью...

Задачи следующие:
1. Разобраться в файлом tkapp.py
2. Убрать визуальную вкладку из AXIS (вроде бы gremlin)
3. Начать переделывать панель управления подпрограммы под конкретную задачу.
4. Написать программу фрезеровки поверхности и программу сверловки поверхности (для различных конфигураций автоматов)

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

Добавлено: 16 июн 2014, 21:08
Ворон226
Решил переделать файл stan.ngc под конкретную задачу фрезеровки поверхности.

Пусть мы будем использовать переменные длины и ширины заготовки, диаметр фрезы, глубина фрезеровки, подача и обороты шпинделя.
Значит файл 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
Файл auto.ngc:

Код: Выделить всё

(ngcgui: FEATURE 140615:22.30.01)
(ngcgui: files: < /home/sun/linuxcnc/nc_files/stan.ngc >)
(ngcgui: feature line added) #<_feature:> = 0
(ngcgui: call subroutine file: /home/sun/linuxcnc/nc_files/stan.ngc)
(ngcgui: positional parameters:)
(         #1 =       length =         1000)
(         #2 =        width =          500)
(         #3 =      diametr =            8)
(         #4 =     feedrate =           40)
(         #5 =      max_rpm =        15000)
(         #6 =        depth =            -2)
o<stan> call [1000][500][8][40][15000][-2]
(ngcgui: m2 line added) m2 (g54 activated)
Добавим программу обработки (фрезеровки) поверхности заготовки в 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]]
      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
Проверил - работает (кнопку "НАСТРОЙКА" так и не убрал...)

Кстати, gremlin не мешает ;) И места достаточно.

Далее буду писать программу сверловки по сетке.

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

Добавлено: 17 июн 2014, 06:13
Ворон226
Если замечаний нет - правлю первое сообщение, добавляю пример сверловки и отмечаю - РЕШЕНО. Затем инструкцию в ВИКИ...

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

Добавлено: 17 июн 2014, 07:08
nkp
Ворон226 писал(а):Если замечаний нет
опять же - небольшой штрих...
в ini TKAPP = /usr/lib/tcltk/linuxcnc/ngcgui_ttt.tcl
и сам файл ngcgui_ttt.tcl
нужны только для "инструмента" truetype-tracer...
здесь подробней об этом...
---------
то есть - если мы допишем в ini TTT = truetype-tracer:

Код: Выделить всё

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
TKAPP  = /usr/lib/tcltk/linuxcnc/ngcgui_ttt.tcl
TTT               = truetype-tracer
у нас по идее появится еще обна вкладки для гравировки надписей (например):
Выделение_057.png (2743 просмотра) <a class='original' href='./download/file.php?id=29656&mode=view' target=_blank>Загрузить оригинал (78.91 КБ)</a>
--------
я к тому , что строка TKAPP = /usr/lib/tcltk/linuxcnc/ngcgui_app.tcl необязательна если
этот инструмент не нужен ...

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

Добавлено: 17 июн 2014, 11:22
Nick
А вот это работает с не кратными величинами?
o100 repeat [#<Length> / [#<Step> * 2]]
И как работает repeat [10.1], сколько раз пройдет цикл?

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

Добавлено: 17 июн 2014, 11:33
nkp
Nick писал(а):как работает repeat [10.1], сколько раз пройдет цикл?
10 раз
(попробовал))

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

Добавлено: 17 июн 2014, 11:48
Ворон226
Nick писал(а):И как работает repeat [10.1], сколько раз пройдет цикл?
Тоже пробовал... Проходит целое число. Но так как в задаче сфрезеровать поверхность заготовки, то не парился и пусть иногда делает пустой проход...
Потому сегодня сделал так:
o100 repeat [#<Length> / [#<Step> * 2] + 1]

Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 19 июн 2014, 19:47
Ворон226
Как и обещал - конфигурация простого автомата для сверловки сетки отверстий.

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
Проверил - работает.

Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 19 июн 2014, 20:01
Nick
+1 :good:!
В вики сделаешь статейку?

Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 19 июн 2014, 20:04
Ворон226
Постараюсь сегодня (самому нужно - в голове стараюсь держать только самое необходимое + знания мест с информацией ;) ).

Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 19 июн 2014, 20:38
Ворон226
Сделано - http://cnc-club.ru/wiki/index.php/%D0%9 ... 0%BA%D0%B0

Можно править и дополнять.

Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 20 июн 2014, 01:33
Serg
Ворон226 писал(а):Проверил - работает.
Неоптимальные холостые перемещения. ;)

Re: Перестраиваемый автомат на ngcgui от чайника - РЕШЕНО

Добавлено: 20 июн 2014, 09:11
Nick
А кто это такой? Можно его тоже посмотреть?
USER_COMMAND_FILE = /home/sun/linuxcnc/config/tkapp.py
Файл tkapp.py , описывающий панель для нашей подпрограммы положил в папку /home/sun/linuxcnc/config , чтобы этот файл можно было использовать и в других конфигурациях.