Страница 4 из 5

Re: плазма на linuxcnc с THC

Добавлено: 25 авг 2014, 22:46
Leo_1943
nkp писал(а):на форуме два каких то пп под мач выкладывали...
--------
можно под фанук пробовать - емс должен кушать...
пользоваться не мне, отправлю оператору, пусть пробует!

Re: плазма на linuxcnc с THC

Добавлено: 18 ноя 2014, 21:23
odekolon
Всем Добрый день!
Установил Внешний THC-контроллер (куплен на сайте po-mo.ru)
привинтил его с к Linux-cnc
все работает, но хотелось бы уточнить у знатоков процесса регулировки высоты горелки по напряжению дуги, все ли я сделал правильно.
Итак, имеем - внешний THC - который меряет напряжение дуги, усредняет его (судя по всему постоянная времени - секунды 2)
и, в зависимости от установленного значения напряжения, выдает сигналы UP\DONW

у меня в логике станка эти сигналы подают сигналы от программного генератора (компонент siggen) на реверсивный счетчик (компонент updown) значение которого, умноженное на шаг подстройки и выдает сигнал на перемещение оси Z.
так вот вопрос - как часто, и с каким шагом желательно выдавать сигнал перемещения оси Z?
Естественно, можно поэкспериментировать с разными значениями частоты\шага подстройки, но может быть кто-то уже решал подобную задачу...

Re: плазма на linuxcnc с THC

Добавлено: 18 ноя 2014, 21:33
Leo_1943
odekolon писал(а):Естественно, можно поэкспериментировать с разными значениями частоты\шага подстройки, но может быть кто-то уже решал подобную задачу...
Я бы так и решал, т.к. я такие станки только в рабочее состояние довожу, а дальше- оператор.

Re: плазма на linuxcnc с THC

Добавлено: 18 ноя 2014, 23:36
Serg
Обнаруженную ошибку по высоте исправлять надо как можно быстрее (с учётом возможностей оси).

P.S. http://linuxcnc.org/docs/devel/html/man ... cud.9.html :roll:

Re: плазма на linuxcnc с THC

Добавлено: 19 ноя 2014, 00:01
Nick
Я так понимаю выдавать надо всеравно в servo-thread, и там складывать с заданием для оси. А все остальное будет делать stepgen.
+1 то, что надо!

Re: плазма на linuxcnc с THC

Добавлено: 19 ноя 2014, 14:14
odekolon
UAVpilot писал(а):Обнаруженную ошибку по высоте исправлять надо как можно быстрее (с учётом возможностей оси).
ну тут может быть, все-таки, лучше подсчитать оптимальную скорость желаемого перемещения?
(ну типа скорость*время усреднения напряжение дуги/максимльно возможную дельту высоты за время усреднения) V=S*t/maxdeltaH
а исправления с максимальной скоростью могут привести к постоянным скачкам горелки вверх\вниз...
Этим компонентом, я к несчастью не пользовался но сейчас уже поздно
в этом компоненте, кстати, тоже есть вроде есть параметры настройки скорости коррекции

Re: плазма на linuxcnc с THC

Добавлено: 19 ноя 2014, 15:07
Serg
odekolon писал(а):ну тут может быть, все-таки, лучше подсчитать оптимальную скорость желаемого перемещения?
Этот вопрос скорее из области философии:
"Железный" THC понятия не имеет о динамических характеристиках оси Z, поэтому с его точки зрения вполне логично "желать" максимально быстрой реакции на его управляющие команды. :) Команда на изменение высоты есть результат обнаружения неправильной/ошибочной высоты и естественно подлежит скорейшему исправлению.
Ну или из области маркетинга:
Чтобы THC мог учитывать скорость/время реакции оси Z на его управляющие импульсы он должен производить упреждающие расчёты, а для этого нужны упреждающие данные. Всё это довольно сложно реализуемо и, как следствие, повышает себестоимость самого THC. Поэтому проще и дешевле принять, что ось Z должна реагировать мгновенно и тем самым все проблемы переложить на потребителя. ;)

Re: плазма на linuxcnc с THC

Добавлено: 19 ноя 2014, 15:16
odekolon
Вот только что получил ответ от производителя THC
"Добрый день, Борис
Опытным путем установлено thc speed
для тонких материалов (до 5 мм) -- 20% от 2000, т.е. соответственно 400 мм/мин
для толстых материалов около 10% от 2000, т.е. 200 мм/мин
Мы обычно не меняем thc speed -- только если возникают ситуации когда
нужно какой-нибудь профнастил резать
."

Re: плазма на linuxcnc с THC

Добавлено: 19 ноя 2014, 16:06
Serg
Nick писал(а):+1 то, что надо!
Вернее: лучше, чем ничего. :)
Например он не умеет игнорировать коррекцию на низких скоростях (при прохождении углов).

Re: плазма на linuxcnc с THC

Добавлено: 19 ноя 2014, 16:23
Serg
odekolon писал(а):Опытным путем установлено thc speed
Очень хотелось-бы посмотреть на эти опыты! Это что такое надо резать, чтобы перепада высот неровностей было достаточно для того, чтобы ось успевала разгонятся до скорости выше 400 мм/мин?.. :)

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 22:27
Leo_1943
Как сделать, чтоб при обсчете (проверке) программы в ЕМС2, не обсчитывалось больше двух знаков после запятой. Т.к. при обсчете программы в Пронесте постпроцессор выдает только два знака после запятой, и при открытии программы в ЕМС2 выдает ошибку на дугах g02 или g03, судя по всему неправильное округление в постпроцессоре (проверено экспериментально, менял на 1 в последнем разряде после запятой в программе и ошибка проподала). В тексте ошибки показывает 4 знака после запятой.

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 22:53
nkp
посмотрел примеры кода пронест - есть и три знака после запятой ( глянуть ПП на этот счет)
----------
Leo_1943 писал(а):Как сделать, чтоб при обсчете (проверке) программы в ЕМС2,
там заковыка в том ,что скорей это Axis "просчитывает" так (glcanon.py?)
проверить можно ,запустив то же с другим GUI (не Axis)

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 22:58
Leo_1943
Или как в Пронесте добавить еще разряд после запятой?

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 23:02
nkp
ну наверно смотреть примерно такое:

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

[IJ FORMAT]
IF $PRECISION=NORMAL
	%1.2lf
ELSE
	%1.3lf
END
там по моему зависимость G20 vs G21

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 23:07
Leo_1943
Это в Пронесте?

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 23:13
nkp
Leo_1943 писал(а):Это в Пронесте?
эээ...
мог и ошибнуться))
винды сейчас под рукой нет (точно открыть то что нужно ) , а это куски из пп - разбирал недавно , посчитал что пронест :thinking:
=========

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 23:15
nkp
вот весь код:

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

[MAIN PART OF THE CFF]


[MACHINE NAMES]
Machine:
Model:
Customer:

[REVISION NUMBER]
0.1

[REVISION NOTES]
0.1 Original version

[MAIN]
{START OF FILE}
{PROGRAM INIT}
{VALIDATE PLATE}
{OUTPUT PROFILES}
{END OF FILE}

[PROCESS NAMES]
CUT1=Gas
CUT2=Plasma
SCRIBE1=Scribe-G
SCRIBE2=Scribe-P
PUNCH1=Punch-G
PUNCH2=Punch-P

[SECTION PART OF THE CFF]


[START OF FILE]
%

[PROGRAM INIT]
{UNITS}
{MODE}

[UNITS]
IF $UNITS=INCH
	{LINENO :M}G20
ELSE
	{LINENO :M}G21
END

[MODE]
IF $MODE=ABSOLUTE
	{LINENO :M}G90
	{LINENO :M}G92{INITPTX}{INITPTY}
ELSE
	{LINENO :M}G91
END

[STEP AND REPEAT START]
{LINENO :M}G97

[STEP AND REPEAT END]
{LINENO :M}G98

[VALIDATE PLATE]
IF $VALIDATEPLATE = TRUE
	$X := $INITPTX
	$Y := $INITPTY
	IF $INITPTLOCATION = LOWERLEFT
		$X := $SHEETMAXX
		$Y := $SHEETMAXY
	ELSE
		IF $INITPTLOCATION = LOWERRIGHT
			$X := $SHEETMINX
			$Y := $SHEETMAXY
		ELSE
			IF $INITPTLOCATION = UPPERRIGHT
				$X := $SHEETMINX
				$Y := $SHEETMINY
			ELSE
				$X := $SHEETMAXX
				$Y := $SHEETMINY
			END
		END
	END
	$MOTION := DEFAULT
	$MOTION := {RAPID MOTION CODE}
	{RAPID MOTION}
	IF $INITPTLOCATION = LOWERLEFT
		$X := $SHEETMINX
		$Y := $SHEETMINY
	ELSE
		IF $INITPTLOCATION = LOWERRIGHT
			$X := $SHEETMAXX
			$Y := $SHEETMINY
		ELSE
			IF $INITPTLOCATION = UPPERRIGHT
				$X := $SHEETMAXX
				$Y := $SHEETMAXY
			ELSE
				$X := $SHEETMINX
				$Y := $SHEETMAXY
			END
		END
	END
	{RAPID MOTION}
END

[END OF FILE]
{CANCEL CURRENT OFFSET}
{END OF PROGRAM}

[END OF PROGRAM]
IF $RETURNTOINIT=TRUE
	{LINEAR MOTION TO INIT}
END
M30

[LINEAR MOTION TO INIT]
{LINENO :M}{INIT PT MOTION CODE:M}{RETURNINITPTX}{RETURNINITPTY}

[CANCEL CURRENT OFFSET]
IF $PROCESS=SCRIBE1
	{LINENO :M}M70
END
IF $PROCESS=SCRIBE2
	{LINENO :M}M72
END


[OUTPUT START INTERIOR PROFILE]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END

[OUTPUT START EXTERIOR PROFILE]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END

[OUTPUT START OPEN PROFILE]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END

[OUTPUT START CROP]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CANCEL PREVIOUS OFFSET}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END

[OUTPUT TORCH SPACING]
IF {TORCH SPACING REQUIRED}
	IF $NUMTORCHES = 1 || $NUMTORCHES = 0
		(Set 1 torch.)
		{OUTPUT STOP}
	ELSE
		(Set {NUMTORCHES} torches at {TORCHSPACING}{TORCHUNITS}.)
		{OUTPUT STOP}
	END
END

[OUTPUT END INTERIOR PROFILE]
IF {KERF STILL ON}
	{KERF OFF}
END

[OUTPUT END EXTERIOR PROFILE]
IF {KERF STILL ON}
	{KERF OFF}
END

[OUTPUT END OPEN PROFILE]
IF {KERF STILL ON}
	{KERF OFF}
END

[OUTPUT END CROP]
IF {KERF STILL ON}
	{KERF OFF}
END

[LINENO]
MODAL_ARGUMENT=$LINENUMBER
IF $USELINENUMBERS = EVERYLINE
	{NWORD}
END

[PART NAME COMMENT]
$SAVEPARTNAME := $PARTNAME
$SAVENUM := $PARTSEQUENCENUMBER
IF $SAVENUM != $LASTSAVENUM || $SAVEPARTNAME != $LASTSAVEPARTNAME
	IF $PARTSEQUENCENUMBER > 0
		(Seq {PART SEQUENCE NUMBER} - {PARTNAME})
	ELSE
		({PARTNAME})
	END
END

[PART SEQUENCE NUMBER]
ARGUMENT=$PARTSEQUENCENUMBER
FORMAT=%d

[PARTNAME]
ARGUMENT=$PARTNAME
FORMAT=%s

[CHANGE OFFSETS]
{CANCEL PREVIOUS OFFSET}
{ACTIVATE CURRENT OFFSET}

[CANCEL PREVIOUS OFFSET]
IF $PROCESSONSTATE = TRUE && $PROCESS != $LASTPROCESS
	IF $LASTPROCESS=SCRIBE1
		{LINENO :M}M70
	END
	IF $LASTPROCESS=SCRIBE2
		{LINENO :M}M72
	END
ELSE
	IF $PROCESSONSTATE = FALSE && $PROCESS != $NEXTPROCESS
		{CANCEL CURRENT OFFSET}
	END
END

[ACTIVATE CURRENT OFFSET]
IF $PROCESS != $LASTPROCESS
	IF ($PROCESS=PUNCH1 || $PROCESS=PUNCH2 || $PROCESS=PUNCH3 || $PROCESS=PUNCH4 || $PROCESS=PUNCH5 || $PROCESS=PUNCH6) && $STOPBEFOREPUNCH = TRUE
		{OUTPUT STOP}
	ELSE
		IF ($PROCESS=SCRIBE1 || $PROCESS=SCRIBE2) && $STOPBEFORESCRIBE = TRUE
			{OUTPUT STOP}
		ELSE
			IF ($PROCESS=CUT1 || $PROCESS=CUT2 || $PROCESS=CUT3) && $STOPBEFORECUT = TRUE
				{OUTPUT STOP}
			END
		END
	END
	IF $PROCESS=SCRIBE1
		{LINENO :M}M71
	END
	IF $PROCESS=SCRIBE2
		{LINENO :M}M73
	END
END


[ACTIVATE NEXT OFFSET]
IF $PROCESS != $NEXTPROCESS
	IF ($NEXTPROCESS=PUNCH1 || $NEXTPROCESS=PUNCH2 || $NEXTPROCESS=PUNCH3 || $NEXTPROCESS=PUNCH4 || $NEXTPROCESS=PUNCH5 || $NEXTPROCESS=PUNCH6) && $STOPBEFOREPUNCH = TRUE
		{OUTPUT STOP}
	ELSE
		IF ($NEXTPROCESS=SCRIBE1 || $NEXTPROCESS=SCRIBE2) && $STOPBEFORESCRIBE = TRUE
			{OUTPUT STOP}
		ELSE
			IF ($NEXTPROCESS=CUT1 || $NEXTPROCESS=CUT2 || $NEXTPROCESS=CUT3) && $STOPBEFORECUT = TRUE
				{OUTPUT STOP}
			END
		END
	END
	IF $NEXTPROCESS=SCRIBE1
		{LINENO :M}M71
	END
	IF $NEXTPROCESS=SCRIBE2
		{LINENO :M}M73
	END
END


[PROCESS MOTION CODE]
IF {SURPASSES RAPID THRESHOLD}
	{RAPID MOTION CODE}
ELSE
	{LINEAR MOTION CODE}
END

[PROCESS ON MOTION]
IF {MOTION REQUIRED}
	$MOTION := {PROCESS MOTION CODE}
	IF {SURPASSES RAPID THRESHOLD}
		{RAPID MOTION}
	ELSE
		{LINENO :M}{LINEAR MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
	END
END

[RAPID MOTION]
{LINENO :M}{RAPID MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}

[LINEAR MOTION]
IF {RAPID MOTION ALLOWED}
	{RAPID MOTION}
ELSE
	{FEEDRATE LINE}
	{ADD KERF VALUE}
	{LINENO :M}{LINEAR MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
END

[CLOCKWISE MOTION]
IF {ARC TOO SMALL}
	{LINEAR MOTION}
ELSE
	{FEEDRATE LINE}
	{ADD KERF VALUE}
	{LINENO :M}{CLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}
END

[COUNTERCLOCKWISE MOTION]
IF {ARC TOO SMALL}
	{LINEAR MOTION}
ELSE
	{FEEDRATE LINE}
	{ADD KERF VALUE}
	{LINENO :M}{COUNTERCLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}
END

[RAPID MOTION CODE]
MODAL_ARGUMENT=$MOTION
G00

[LINEAR MOTION CODE]
IF {RAPID MOTION ALLOWED}
	{RAPID MOTION CODE}
ELSE
	MODAL_ARGUMENT=$MOTION
	G01
END

[CLOCKWISE MOTION CODE]
IF {ARC TOO SMALL}
	{LINEAR MOTION CODE}
ELSE
	MODAL_ARGUMENT=$MOTION
	G02
END

[COUNTERCLOCKWISE MOTION CODE]
IF {ARC TOO SMALL}
	{LINEAR MOTION CODE}
ELSE
	MODAL_ARGUMENT=$MOTION
	G03
END

[INIT PT MOTION CODE]
IF {RAPID INIT MOTION ALLOWED}
	{RAPID MOTION CODE}
ELSE
	MODAL_ARGUMENT=$MOTION
	G01
END

[ADD FEEDRATE]
IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE
	{FEEDRATE :M}
	$FEEDRATE:=$FEEDRATE
END

[FEEDRATE LINE]
IF $FEEDRATE > 0.0 && $FEEDRATE != $LASTFEEDRATE
	{LINENO :M}{FEEDRATE :M}
	$FEEDRATE:=$FEEDRATE
END

[ADD KERF VALUE]
IF $KERF > 0.0 && $KERF != $LASTKERF
	IF $KERFDIR=LEFT || $KERFDIR=RIGHT
		{KERF DIRECTION}
		$KERF:=$KERF
	END
END

[OUTPUT KERF LEFT]
IF $KERF <= 0
	{LINENO :M}G41
ELSE
	{LINENO :M}G41{KERF VALUE :M}
	$KERF:=$KERF
END

[OUTPUT KERF RIGHT]
IF $KERF <= 0
	{LINENO :M}G42
ELSE
	{LINENO :M}G42{KERF VALUE :M}
	$KERF:=$KERF
END

[OUTPUT KERF OFF]
{LINENO :M}G40

[KERF OFF]
{OUTPUT KERF OFF}

[KERF DIRECTION]
IF ($PROCESS != SCRIBE1) && ($PROCESS != SCRIBE2)
	IF $KERFDIR = LEFT
		{OUTPUT KERF LEFT}
	END
	IF $KERFDIR = RIGHT
		{OUTPUT KERF RIGHT}
	END
	IF $KERFDIR = OFF
		{OUTPUT KERF OFF}
	END
END

[OUTPUT STOP]
{LINENO :M}M00

[OUTPUT AHCON]
IF $AHCDISABLED = 0
	{LINENO :M}M15
END

[OUTPUT AHCOFF]
IF $AHCDISABLED = 0
	{LINENO :M}M14
END

[OUTPUT CUT1 ON]
{FEEDRATE LINE}
{LINENO :M}M04

[OUTPUT CUT1 OFF]
{LINENO :M}M03
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT CUT1 OFFUP]
{LINENO :M}M03
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT CUT2 ON]
{FEEDRATE LINE}
{LINENO :M}M21
IF $DISABLEAHC = 1
	{OUTPUT AHCOFF}
	$AHCDISABLED := 1
END

[OUTPUT CUT2 OFF]
{LINENO :M}M20
IF $DISABLEAHC = 1
	$AHCDISABLED := 0
	{OUTPUT AHCON}
END
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT CUT2 OFFUP]
{LINENO :M}M20
IF $DISABLEAHC = 1
	$AHCDISABLED := 0
	{OUTPUT AHCON}
END
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT SCRIBE1 ON]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END
{LINENO :M}M08

[OUTPUT SCRIBE1 OFF]
{LINENO :M}M07
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT SCRIBE2 ON]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END
{LINENO :M}M10

[OUTPUT SCRIBE2 OFF]
{LINENO :M}M09
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT PUNCH1 ON]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END
{LINENO :M}M08
{LINENO :M}G04F0.5
{LINENO :M}M07
$KERF:=0.0
$FEEDRATE:=0.0

[OUTPUT PUNCH2 ON]
IF $USELINENUMBERS = STARTOFPROFILE
	{NWORD}
END
{CHANGE OFFSETS}
{PROCESS ON MOTION}
IF $PARTNAMEASCOMMENT = TRUE
	{PART NAME COMMENT}
END
{LINENO :M}M10
{LINENO :M}G04F0.5
{LINENO :M}M09
$KERF:=0.0
$FEEDRATE:=0.0

[COMMENT FORMAT]
(%s)

[FORMAT PART OF THE CFF]


[INITPTX]
ARGUMENT=($INITPTX - $INITPTX) * $CONVERSION
FORMAT=X%1.2lf

[INITPTY]
ARGUMENT=($INITPTY - $INITPTY) * $CONVERSION
FORMAT=Y%1.2lf

[CONVERSION]
IF $UNITS=INCH
	1.00
ELSE
	25.40
END

[RETURNINITPTX]
IF $MODE=ABSOLUTE
	ARGUMENT=($INITPTX-$INITPTX) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
	ARGUMENT=($INITPTX - $X) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=X{XY FORMAT}

[RETURNINITPTY]
IF $MODE=ABSOLUTE
	ARGUMENT=($INITPTY-$INITPTY) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
	ARGUMENT=($INITPTY - $Y) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=Y{XY FORMAT}

[NWORD]
FORMAT=N%01d
ARGUMENT=$LINENUMBER

[NUMTORCHES]
ARGUMENT=$NUMTORCHES
FORMAT=%d

[TORCHSPACING]
ARGUMENT=$TORCHSPACING * $CONVERSION
FORMAT=%1.3lf

[TORCHUNITS]
IF $UNITS = INCH
	in
ELSE
	mm
END

[XY FORMAT]
IF $PRECISION=NORMAL
	%1.2lf
ELSE
	%1.3lf
END

[IJ FORMAT]
IF $PRECISION=NORMAL
	%1.2lf
ELSE
	%1.3lf
END

[FEEDRATE FORMAT]
IF $UNITS=INCH
	%1.1lf
ELSE
	%1.0lf
END

[DWELL FORMAT]
%1.2lf

[XYIJ DECIMAL SHIFT]
1

[FEEDRATE DECIMAL SHIFT]
1

[KERF DECIMAL SHIFT]
1

[DWELL DECIMAL SHIFT]
1

[ANGLE DECIMAL SHIFT]
0

[CURRENTX]
MODAL_ARGUMENT=$X
IF $MODE=ABSOLUTE
	ARGUMENT=($X - $INITPTX) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
	ARGUMENT=($X - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=X{XY FORMAT}

[CURRENTY]
MODAL_ARGUMENT=$Y
IF $MODE=ABSOLUTE
	ARGUMENT=($Y - $INITPTY) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
	ARGUMENT=($Y - $LASTY) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=Y{XY FORMAT}

[CURRENTI]
IF $MODE=ABSOLUTE
	ARGUMENT=($I - $INITPTX) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
	ARGUMENT=($I - $LASTX) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=I{IJ FORMAT}

[CURRENTJ]
IF $MODE=ABSOLUTE
	ARGUMENT=($J - $INITPTY) * $CONVERSION * $XYIJDECIMALSHIFT
ELSE
	ARGUMENT=($J - $LASTY) * $CONVERSION * $XYIJDECIMALSHIFT
END
FORMAT=J{IJ FORMAT}


[FEEDRATE]
MODAL_ARGUMENT=$FEEDRATE
ARGUMENT=$FEEDRATE * $CONVERSION * $FEEDRATEDECIMALSHIFT
FORMAT=F{FEEDRATE FORMAT}

[KERF VALUE]
MODAL_ARGUMENT=$KERF
ARGUMENT=$KERF * $CONVERSION * $KERFDECIMALSHIFT
FORMAT=K%1.3f

[OUTPUT DWELL]
ARGUMENT=$DWELL * $DWELLDECIMALSHIFT
FORMAT={LINENO :M}G04F{DWELL FORMAT}

[CONDITIONS PART OF THE CFF]


[MAXLINENO]
9999

[TORCH SPACING REQUIRED]
($TORCHSPACING != $PREVTORCHSPACING || $NUMTORCHES != $PREVNUMTORCHES)

[KERF STILL ON]
$KERFDIR = LEFT || $KERFDIR = RIGHT

[MOTION REQUIRED]
(($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5 > 0.00001

[RAPID MOTION ALLOWED]
{SURPASSES RAPID THRESHOLD} && $PROCESSONSTATE = FALSE

[SURPASSES RAPID THRESHOLD]
(($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5 > $RAPIDDISTANCE

[ARC TOO SMALL]
{ARC RADIUS} < 0.010000 || ({CHORD LENGTH} > 0.01 && {CHORD LENGTH} < 0.011000 && $ARCANGLE < 180)

[RAPID INIT MOTION ALLOWED]
(($X - $INITPTX)^2 + ($Y - $INITPTY)^2)^0.5 > $RAPIDDISTANCE && $PROCESSONSTATE = FALSE

[ARC RADIUS]
(($I - $LASTX)^2 + ($J - $LASTY)^2)^0.5

[CHORD LENGTH]
(($X - $LASTX)^2 + ($Y - $LASTY)^2)^0.5



[USER DEFINED VARIABLES]
SAVEPARTNAME|STRING|0
SAVENUM|INTEGER|0
RAPIDDISTANCE|DOUBLE|0.0100
DX|DOUBLE|0.0
DY|DOUBLE|0.0
KERF|DOUBLE|0.0
FEEDRATE|DOUBLE|0.0
AHCDISABLED|INTEGER|0
DISABLEAHC|INTEGER|0

Re: плазма на linuxcnc с THC

Добавлено: 25 ноя 2014, 23:22
Leo_1943
Спасибо, но быстро попробовать не смогу, может через пару недель.

Re: плазма на linuxcnc с THC

Добавлено: 01 дек 2014, 15:12
AlleXHOM
Леонид, а почему именно Пронест, есть же и под линукс проги, пускай не такие "красивые" но все же есть? ;)

Re: плазма на linuxcnc с THC

Добавлено: 11 июл 2016, 08:02
Leo_1943
Добрый день.
Прошло время и решили чуть освежить станок плазменной резки.
Заменили контроллеры шаговых двигателей, проводку по станка и в шкафу. Датчик высоты резака, заменили на датчик высоты реза, отличие в том, что последний следит за напряжением дуги и выдаёт команды поднять опустить и дуга ок. Но теперь необходимо перед каждым резом следить за высотой листа т.е. касание, подъём на 3 мм, Поджио и рез, в конце реза подъём на 50 мм.

И вот проблема. Завели сигнал probe-in на motion.probe-input. Дабы по команде g38.2 опустится до касания листа, далее обнулить по g92, и далее по программе. Но теперь даже выход в ноль не работает пишет ошибку:Probe tripped during homing motion.также пропало нормальное движение по осям, идёт рывками и выдаёт похожую ошибку.

Как сделать? Можно по другому?