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

Спираль

Добавлено: 11 май 2020, 20:19
foundsecret
Можно ли отправить фрезу в путешествие по спирали?

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

%
G00 Z1

(центр)
#<x> = 30
#<y> = 30

#<depth2> = 6.2
#<step> = .1
#<feedrate> = 1200
#<cutter> = 5


#<halfcutter> = [#<cutter> / 2]


(отверстие)

#<depth> = 13
#<d> = 12.5

#<steps> = [#<depth> / #<step>]
#<z> = 0
#<r> = [#<d> / 2]
G00 X[#<x> + #<halfcutter> - #<r> + #<halfcutter>] Y[#<y> + #<halfcutter>]
G01 Z0  F[#<feedrate> / 10]
O10 REPEAT [#<steps>]
	#<z> = [#<z> - #<step>]
	G02 I[#<r> - #<halfcutter>] Z#<z> F#<feedrate>
O10 ENDREPEAT
G02 I[#<r> - #<halfcutter>] Z#<z> F#<feedrate>
G00 Z0
G01 Z1

(уступ)
#<depth> = 6
#<d> = [36 - 12.2]

#<steps> = [#<depth> / #<step>]
#<z> = 0
#<r> = [#<d> / 2]
G01 Z0  F[#<feedrate> / 10]
O11 REPEAT [#<steps>]
	#<z> = [#<z> - #<step>]
	#<i> = 5
	O21 REPEAT [5]
		G01 X[#<x> + #<halfcutter> - #<r> - #<halfcutter> - #<i>] Y[#<y> + #<halfcutter>] F[#<feedrate> / 10]
		G02 I[#<r> + #<halfcutter> + #<i>] Z#<z> F#<feedrate>
		#<i> = [#<i> - 1]
	O21 ENDREPEAT
O11 ENDREPEAT



(    НЕ ПОДНИМАЮ, Z остаётся текущий   )




(контур)
#<depth> = 6.2
#<d> = 36

#<steps> = [#<depth> / #<step>]
#<r> = [#<d> / 2]
G00 X[#<x> + #<halfcutter> - #<r> - #<halfcutter>] Y[#<y> + #<halfcutter>]
O12 REPEAT [#<steps>]
	#<z> = [#<z> - #<step>]
	G02 I[#<r> + #<halfcutter>] Z#<z> F#<feedrate>
O12 ENDREPEAT
G02 I[#<r> + #<halfcutter>] Z#<z> F#<feedrate>
G00 Z0
G01 Z1


M30
%

Re: Спираль

Добавлено: 11 май 2020, 23:24
foundsecret
Код привёл просто для примера. Вопрос исключительно общий - как сделать спиральную траекторию?

Re: Спираль

Добавлено: 11 май 2020, 23:34
Serg

Re: Спираль

Добавлено: 12 май 2020, 06:57
N1X
Плоская спираль, или винтовая линия?

Re: Спираль

Добавлено: 12 май 2020, 07:42
foundsecret
Плоская. Винтовые линии уже умею.

Re: Спираль

Добавлено: 12 май 2020, 08:34
N1X
Ну тогда ссылку дали :)

Re: Спираль

Добавлено: 12 май 2020, 08:53
foundsecret
И? Если точка не на окружности, интерпретатор ругается. Надо как-то указывать два радиуса? Ищу.

Re: Спираль

Добавлено: 12 май 2020, 09:11
N1X
И мой косяк, меня что-то переклинило, что через круговую интерполяцию можно спираль задать, а винт нельзя, а оно как раз наоборот =)
Вот на гитхабе что-то есть: https://github.com/LinuxCNC/linuxcnc/bl ... spiral.ngc
Но не вглядывался...

Re: Спираль

Добавлено: 12 май 2020, 09:22
foundsecret
Руками интерполировать? Серьезно? =/

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

%
G00 Z1

G00 X20 Y20

F100
#<angle> = 0
#<start> = 10
#<end> = 9
#<steps> = 720
#<step> = [[#<start> - #<end>]  / #<steps>]
#<i> = 0

G92 X-10 Y-10
G00 @[10 + #<i>] ^#<angle>
O10 REPEAT [#<steps>]
	G01 @[10 + #<i>] ^#<angle> F1200
	#<angle> = [#<angle> + [360 / #<steps>]]
	#<i> = [#<i> - #<step>]
O10 ENDREPEAT
G92.1
 
M30
%
Других вариантов нет?

Re: Спираль

Добавлено: 12 май 2020, 09:26
Сергей Саныч
А вам математически точную спираль надо, или из кусочков дуг окружности сойдет?

Re: Спираль

Добавлено: 12 май 2020, 09:37
foundsecret
Написал вариант с управляемой точностью.

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

%
G00 Z1

G00 X20 Y20

F100

(input)
#<precision> = .05
#<r1> = 10
#<r2> = 9

(calcs)
#<pi> = 3.141592
#<steps> = [[#<r1> * #<pi> * 2] / #<precision>]
#<step> = [[#<r1> - #<r2>] / #<steps>]
#<angle> = 0
#<i> = 0

(move)
G92 X-10 Y-10
G00 @[10 + #<i>] ^#<angle>
O10 REPEAT [#<steps>]
	G01 @[10 + #<i>] ^#<angle> F1200
	#<angle> = [#<angle> + [360 / #<steps>]]
	#<i> = [#<i> - #<step>]
O10 ENDREPEAT
G92.1
 
M30
%

С точностью в сотку станок сильно тормозит, очевидно занимаясь вычислениями. Пять соток - заметно. Десятка - визуально не тормозит, но это десятка...

Интересно, какова точность родной интерполяции LinuxCNC?

Возвращаясь к основному вопросу. Неужели иначе нельзя?

Re: Спираль

Добавлено: 12 май 2020, 09:37
foundsecret
Сергей Саныч писал(а):А вам математически точную спираль надо, или из кусочков дуг окружности сойдет?
Да, это похоже на решение =(

Re: Спираль

Добавлено: 12 май 2020, 09:55
Сергей Саныч
Можно еще со сплайнами побаловаться http://linuxcnc.org/docs/2.7/html/gcode ... l#gcode:g5