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

Отправить G комманду из макроса

Добавлено: 14 авг 2012, 11:52
cnc-00
Как из макроса (M100 to M199 User Defined Commands) отправить G комманду (например G0 X50) и чтобы станок ее отработал.

Хочу получить аналог Мачевской (Mach3) функции - code "G0 X50"

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 12:03
aftaev
Что значит отправить?
Может при выполнении команды М100 должена быть отработан код G0 X50 ?

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 12:05
nkp
это лучше сделать о-кодами

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

o<name> sub
G0 X50
o<name> endsub
это сохраняешь в файл name.ngc
и ложишь его в /home/ЮЗЕР/emc2/nc_files
а в программе пишешь

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

o<name> call
http://www.linuxcnc.org/docs/2.5/html/gcode/o-code.html

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 12:16
cnc-00
aftaev писал(а):Может при выполнении команды М100 должена быть отработан код G0 X50 ?
Да
nkp писал(а):o<name> subG0 X50o<name> endsub
Такое не подходит, нужен более гибкий вариант.

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 12:18
nkp
cnc-00 писал(а):Такое не подходит, нужен более гибкий вариант.
ты увидишь-это очень гибкий вариант
поясни-чего тебе в нем не хватает???

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 12:37
nkp
пишешь:

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

o<name1> sub
f50
G1 x[#1]
o<name1> endsub
а в ж-коде

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

o<name> call [50]
надо проехать 65- пишешь:

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

o<name> call [65]
то есть ты передаешь в код свой аргумент
ну это цветочки-переменных может быть до 30

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 12:56
cnc-00
nkp писал(а):поясни-чего тебе в нем не хватает???
Как тогда получить координаты из G-code? :)

Поясняю. Есть круглошлифовальный станок который должен шлифовать заготовку до 25.00 мм
Шлифовщик измеряет заготовку она равна 26.4 мм т.е. нужно шлифонуть 1.4 мм. Он забивает отступ в экране Axis 1.4 мм (т.е. мы шлифуем до 0) и запускает G-Code.
В G-code макрос М150 который шлифует до 0, т.е. он получает текущее значение, в нашем случаи 1.4 мм и потихоньку обрабатывает заготовку (выждал 2 прохода, снял сотку, опять выждал 2 прохода, снял сотку и так до 0) следя за координатами.
Следующая заготовка 26.2, забиваем в экран отступ 1.2 мм. И запускаем шлифовку. И т.д. и т.п.

Сейчас это сделанно через g-code, но в этом минус, для каждого новой заготовки нужно редактировать g-code (изменяя начальный диаметр заготовки)

Я НИ ХОЧУ ЧТОБЫ ШЛИФОВЩИК ЛАЗИЛ G-CODE И ТАМ ЧТО-ТО МЕНЯЛ, ПУСТЬ ОН РАБОТАЕТ ТОЛЬКО С ЭКРАНОМ ЗАДАВАЯ КООРДИНАТЫ.

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

(LinuxCNC)
(шлифовка)
(для кругло-шлифовального)

#1=26.20 (начальный диаметр)
#2=25.00 (конечный диаметр)
#3=0.01 (шаг переезда)
#4=2 (количество выхаживаний перед переездом)
M103
G91
O101 while [#2 lt #1] (>)
	#100 = 1 				(сначало выхаживание)
	O102 while [#100 le #4] (< выхаживание)
		M101
		#100 = [#100 + 1]
	O102 endwhile
	G0 X-#3					(переезд)
	#2 = [#2+#3]
O101 endwhile

M101
M101
M101
M101
M101
M101

G90
G0 x50
(M120 стоп)
M102 (включить лампу)
M30

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:02
nkp
приведенный код работает в виде ngcgui ??

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:11
nkp
если б содержимое м101-
то сейчас набросали бы мастер

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:14
cnc-00
nkp писал(а):приведенный код работает в виде ngcgui ??
Неа, обычный G-code, набранный в блокноте gedit.
Если я правильно понял вы хотите мастер сделать.
Мастер мастером, но я все же хочу функцию Code из Mach3
Изображение

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:20
cnc-00
nkp писал(а):если б содержимое м101-
А еще М102, а завтра еще что-то добавится это нескончаемый процесс :)

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:25
nkp
cnc-00 писал(а):А еще М102, а завтра еще что-то добавится это нескончаемый процесс
я же как пример хотел показать
потом сам будешь править код как заблагорассудится
мастер-это очень удобно!!!
ввел значения -и поехали
cnc-00 писал(а):Мастер мастером, но я все же хочу функцию Code из Mach3
то есть задача-из м-файла запускать ж-код?

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:26
cnc-00
nkp писал(а):то есть задача-из м-файла запускать ж-код?
Да

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:29
nkp
Вид примерно такой:
Выделение(031).png (4551 просмотр) <a class='original' href='./download/file.php?id=7403&mode=view' target=_blank>Загрузить оригинал (74.8 КБ)</a>

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 13:32
nkp
cnc-00 писал(а):Да
Ну смотри-в чем разница :
файл называется О101
или
файл называется М101
(ты что то имеешь против буквы О ;) ?)
:wik:

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 14:16
cnc-00
Для большего прояснения - поставлю задачу иначе (вернее эта задача поставлена мне)

Имеется заготовка, которая на момент установки имеет неопределенный диаметр. (возможно даже неопределенную форму после термообработки)
Станочник клавишами двигает круг до касания. Далее нажимает "зеленую" кнопку на пульте и валит к следующему станку. (это все, что он должен знать про CNC)
"Зеленая" кнопка запускает макрос (M101 или O4847 до жопы), который запоминает текущее положение оси и ждет появления сигнала с концевика. Каждый раз при появлении сигнала сигналы макрос перемещает ось на фиксированый промежуток. При достижении заданного диаметра, макрос игнорирует концевик и "выхаживает" заготовку в течении заданного промежутка времени. Далее макрос "гасит" станок и зажигает "большой красный фонарь".
Далее дело рук станочника.

Все это с лехкостью реализовано на мач3.
Настало время одолевать linuxcnc.

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 14:25
nkp
ну так бы и раньше...
говорят же-в правильно поставленном вопросе-50% ответа

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 21:49
nkp
для контроля состояния концевика можно использовать ж38.2
в хал добавляем:

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

net proba  parport.0.pin-13-in-not  motion.probe-input 
(пин парпорта по выбору)
вот наброски кода:

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

#<st_diam>  = 26.20 
#<end_diam> = 26.16  
#<step>     = 0.01  
#<amount>   = 2 
#<rep>      = 3  
g92 x0 z0
f50 
#<st_rad>  =[#<st_diam>/2]
#<end_rad> =[#<end_diam>/2]

O101 while [#<st_rad> gt #<end_rad>] 
     #<nv>=1       
   O102 while [#<nv> le 2]
      #<nv>=[#<nv>+1] 
      g38.2 z-222
      g4 p2
      g1 z#5223                
   O102 endwhile
 g91
  G1 X[-#<step>]
 g90
#<st_rad> = [#<st_rad>-#<step> ]     
O101 endwhile
O104 repeat [#<rep> ]      
      g38.2 z-222
      g4 p1
      g1 z#5223                
O104 endrepeat
g92.1
M2
но так как я понимаю хоть один параметр -но вносить надо(наверно конечный диаметр)
то можно прикрутить либо окошко pyvcp ,либо вкладку-что более кошерно.
Вот здесь пробовал его.
Файл мастера:
ch.ngc
(781 байт) 1120 скачиваний

Re: Отправить G комманду из макроса

Добавлено: 14 авг 2012, 22:19
nkp
вот тот же код-но тело циклов теперь-это
вызов файла подпрограммы name.ngc

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

#<st_diam>  = 26.20 
#<end_diam> = 26.16  
#<step>     = 0.01  
#<amount>   = 2 
#<rep>      = 3  
g92 x0 z0
f50 
#<st_rad>  =[#<st_diam>/2]
#<end_rad> =[#<end_diam>/2]

O101 while [#<st_rad> gt #<end_rad>] 
     #<nv>=1       
   O102 while [#<nv> le 2]
      
      #<nv>=[#<nv>+1] 
      o<name> call         
   O102 endwhile
 g91
  G1 X[-#<step>]
 g90
#<st_rad> = [#<st_rad>-#<step> ]     
O101 endwhile
O104 repeat [#<rep> ]
      o<name> call      
               
O104 endrepeat
g92.1
M2
в name.ngc :

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

o<name> sub
      g38.2 z-222
      g1 z#5223  
o<name> endsub
это наметки-так как не понятны некоторые моменты:
что такое "выхаживание" (я предположил что это как бы повторный проход)?

Re: Отправить G комманду из макроса

Добавлено: 15 авг 2012, 06:44
nkp
M64 P0 - команда для включения пина (лампы)
M65 P0 - команда для выключения пина (лампы)
в хал:

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

net lamp motion.digital-out-00  parport.0.pin-01-out
код:
(для просмотра содержимого нажмите на ссылку)

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

M65 P0
#<st_diam>  = 26.20 
#<end_diam> = 26.16  
#<step>     = 0.01  
#<amount>   = 2 
#<rep>      = 3  
g92 x0 z0
f50 
#<st_rad>  =[#<st_diam>/2]
#<end_rad> =[#<end_diam>/2]

O101 while [#<st_rad> gt #<end_rad>] 
     #<nv>=1       
   O102 while [#<nv> le 2]
      
      #<nv>=[#<nv>+1] 
      o<name> call         
   O102 endwhile
 g91
  G1 X[-#<step>]
 g90
#<st_rad> = [#<st_rad>-#<step> ]     
O101 endwhile
O104 repeat [#<rep> ]
      o<name> call      
               
O104 endrepeat
g92.1
M64 P0
M2
выключение лампы можно дублировать кнопкой