плазма на linuxcnc с THC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

nkp писал(а):на форуме два каких то пп под мач выкладывали...
--------
можно под фанук пробовать - емс должен кушать...
пользоваться не мне, отправлю оператору, пусть пробует!
Аватара пользователя
odekolon
Мастер
Сообщения: 1125
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

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

Сообщение odekolon »

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

у меня в логике станка эти сигналы подают сигналы от программного генератора (компонент siggen) на реверсивный счетчик (компонент updown) значение которого, умноженное на шаг подстройки и выдает сигнал на перемещение оси Z.
так вот вопрос - как часто, и с каким шагом желательно выдавать сигнал перемещения оси Z?
Естественно, можно поэкспериментировать с разными значениями частоты\шага подстройки, но может быть кто-то уже решал подобную задачу...
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

odekolon писал(а):Естественно, можно поэкспериментировать с разными значениями частоты\шага подстройки, но может быть кто-то уже решал подобную задачу...
Я бы так и решал, т.к. я такие станки только в рабочее состояние довожу, а дальше- оператор.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Обнаруженную ошибку по высоте исправлять надо как можно быстрее (с учётом возможностей оси).

P.S. http://linuxcnc.org/docs/devel/html/man ... cud.9.html :roll:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Я так понимаю выдавать надо всеравно в servo-thread, и там складывать с заданием для оси. А все остальное будет делать stepgen.
+1 то, что надо!
Аватара пользователя
odekolon
Мастер
Сообщения: 1125
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

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

Сообщение odekolon »

UAVpilot писал(а):Обнаруженную ошибку по высоте исправлять надо как можно быстрее (с учётом возможностей оси).
ну тут может быть, все-таки, лучше подсчитать оптимальную скорость желаемого перемещения?
(ну типа скорость*время усреднения напряжение дуги/максимльно возможную дельту высоты за время усреднения) V=S*t/maxdeltaH
а исправления с максимальной скоростью могут привести к постоянным скачкам горелки вверх\вниз...
Этим компонентом, я к несчастью не пользовался но сейчас уже поздно
в этом компоненте, кстати, тоже есть вроде есть параметры настройки скорости коррекции
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

odekolon писал(а):ну тут может быть, все-таки, лучше подсчитать оптимальную скорость желаемого перемещения?
Этот вопрос скорее из области философии:
"Железный" THC понятия не имеет о динамических характеристиках оси Z, поэтому с его точки зрения вполне логично "желать" максимально быстрой реакции на его управляющие команды. :) Команда на изменение высоты есть результат обнаружения неправильной/ошибочной высоты и естественно подлежит скорейшему исправлению.
Ну или из области маркетинга:
Чтобы THC мог учитывать скорость/время реакции оси Z на его управляющие импульсы он должен производить упреждающие расчёты, а для этого нужны упреждающие данные. Всё это довольно сложно реализуемо и, как следствие, повышает себестоимость самого THC. Поэтому проще и дешевле принять, что ось Z должна реагировать мгновенно и тем самым все проблемы переложить на потребителя. ;)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
odekolon
Мастер
Сообщения: 1125
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

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

Сообщение odekolon »

Вот только что получил ответ от производителя THC
"Добрый день, Борис
Опытным путем установлено thc speed
для тонких материалов (до 5 мм) -- 20% от 2000, т.е. соответственно 400 мм/мин
для толстых материалов около 10% от 2000, т.е. 200 мм/мин
Мы обычно не меняем thc speed -- только если возникают ситуации когда
нужно какой-нибудь профнастил резать
."
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Nick писал(а):+1 то, что надо!
Вернее: лучше, чем ничего. :)
Например он не умеет игнорировать коррекцию на низких скоростях (при прохождении углов).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

odekolon писал(а):Опытным путем установлено thc speed
Очень хотелось-бы посмотреть на эти опыты! Это что такое надо резать, чтобы перепада высот неровностей было достаточно для того, чтобы ось успевала разгонятся до скорости выше 400 мм/мин?.. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

Как сделать, чтоб при обсчете (проверке) программы в ЕМС2, не обсчитывалось больше двух знаков после запятой. Т.к. при обсчете программы в Пронесте постпроцессор выдает только два знака после запятой, и при открытии программы в ЕМС2 выдает ошибку на дугах g02 или g03, судя по всему неправильное округление в постпроцессоре (проверено экспериментально, менял на 1 в последнем разряде после запятой в программе и ошибка проподала). В тексте ошибки показывает 4 знака после запятой.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

посмотрел примеры кода пронест - есть и три знака после запятой ( глянуть ПП на этот счет)
----------
Leo_1943 писал(а):Как сделать, чтоб при обсчете (проверке) программы в ЕМС2,
там заковыка в том ,что скорей это Axis "просчитывает" так (glcanon.py?)
проверить можно ,запустив то же с другим GUI (не Axis)
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

Или как в Пронесте добавить еще разряд после запятой?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

ну наверно смотреть примерно такое:

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

[IJ FORMAT]
IF $PRECISION=NORMAL
	%1.2lf
ELSE
	%1.3lf
END
там по моему зависимость G20 vs G21
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

Это в Пронесте?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Leo_1943 писал(а):Это в Пронесте?
эээ...
мог и ошибнуться))
винды сейчас под рукой нет (точно открыть то что нужно ) , а это куски из пп - разбирал недавно , посчитал что пронест :thinking:
=========
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение 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
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

Спасибо, но быстро попробовать не смогу, может через пару недель.
AlleXHOM
Новичок
Сообщения: 3
Зарегистрирован: 13 мар 2014, 22:54
Репутация: 1
Контактная информация:

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

Сообщение AlleXHOM »

Леонид, а почему именно Пронест, есть же и под линукс проги, пускай не такие "красивые" но все же есть? ;)
Leo_1943
Мастер
Сообщения: 875
Зарегистрирован: 03 май 2014, 07:24
Репутация: 250
Настоящее имя: Леонид
Откуда: Харьков

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

Сообщение Leo_1943 »

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

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

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

Вернуться в «LinuxCNC»