пользоваться не мне, отправлю оператору, пусть пробует!nkp писал(а):на форуме два каких то пп под мач выкладывали...
--------
можно под фанук пробовать - емс должен кушать...
плазма на linuxcnc с THC
-
Leo_1943
- Мастер
- Сообщения: 875
- Зарегистрирован: 03 май 2014, 07:24
- Репутация: 250
- Настоящее имя: Леонид
- Откуда: Харьков
Re: плазма на linuxcnc с THC
- odekolon
- Мастер
- Сообщения: 1125
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: плазма на linuxcnc с THC
Всем Добрый день!
Установил Внешний THC-контроллер (куплен на сайте po-mo.ru)
привинтил его с к Linux-cnc
все работает, но хотелось бы уточнить у знатоков процесса регулировки высоты горелки по напряжению дуги, все ли я сделал правильно.
Итак, имеем - внешний THC - который меряет напряжение дуги, усредняет его (судя по всему постоянная времени - секунды 2)
и, в зависимости от установленного значения напряжения, выдает сигналы UP\DONW
у меня в логике станка эти сигналы подают сигналы от программного генератора (компонент siggen) на реверсивный счетчик (компонент updown) значение которого, умноженное на шаг подстройки и выдает сигнал на перемещение оси Z.
так вот вопрос - как часто, и с каким шагом желательно выдавать сигнал перемещения оси Z?
Естественно, можно поэкспериментировать с разными значениями частоты\шага подстройки, но может быть кто-то уже решал подобную задачу...
Установил Внешний 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
Я бы так и решал, т.к. я такие станки только в рабочее состояние довожу, а дальше- оператор.odekolon писал(а):Естественно, можно поэкспериментировать с разными значениями частоты\шага подстройки, но может быть кто-то уже решал подобную задачу...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: плазма на linuxcnc с THC
Обнаруженную ошибку по высоте исправлять надо как можно быстрее (с учётом возможностей оси).
P.S. http://linuxcnc.org/docs/devel/html/man ... cud.9.html
P.S. http://linuxcnc.org/docs/devel/html/man ... cud.9.html
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: плазма на linuxcnc с THC
Я так понимаю выдавать надо всеравно в servo-thread, и там складывать с заданием для оси. А все остальное будет делать stepgen.
+1 то, что надо!UAVpilot писал(а):P.S. http://linuxcnc.org/docs/devel/html/man ... cud.9.html
- odekolon
- Мастер
- Сообщения: 1125
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: плазма на linuxcnc с THC
ну тут может быть, все-таки, лучше подсчитать оптимальную скорость желаемого перемещения?UAVpilot писал(а):Обнаруженную ошибку по высоте исправлять надо как можно быстрее (с учётом возможностей оси).
(ну типа скорость*время усреднения напряжение дуги/максимльно возможную дельту высоты за время усреднения) V=S*t/maxdeltaH
а исправления с максимальной скоростью могут привести к постоянным скачкам горелки вверх\вниз...
Этим компонентом, я к несчастью не пользовался но сейчас уже поздноUAVpilot писал(а): P.S. http://linuxcnc.org/docs/devel/html/man ... cud.9.html
в этом компоненте, кстати, тоже есть вроде есть параметры настройки скорости коррекции
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: плазма на linuxcnc с THC
Этот вопрос скорее из области философии:odekolon писал(а):ну тут может быть, все-таки, лучше подсчитать оптимальную скорость желаемого перемещения?
"Железный" THC понятия не имеет о динамических характеристиках оси Z, поэтому с его точки зрения вполне логично "желать" максимально быстрой реакции на его управляющие команды.
Ну или из области маркетинга:
Чтобы THC мог учитывать скорость/время реакции оси Z на его управляющие импульсы он должен производить упреждающие расчёты, а для этого нужны упреждающие данные. Всё это довольно сложно реализуемо и, как следствие, повышает себестоимость самого THC. Поэтому проще и дешевле принять, что ось Z должна реагировать мгновенно и тем самым все проблемы переложить на потребителя.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- odekolon
- Мастер
- Сообщения: 1125
- Зарегистрирован: 05 ноя 2014, 14:53
- Репутация: 360
- Настоящее имя: Борис
- Контактная информация:
Re: плазма на linuxcnc с THC
Вот только что получил ответ от производителя THC
"Добрый день, Борис
Опытным путем установлено thc speed
для тонких материалов (до 5 мм) -- 20% от 2000, т.е. соответственно 400 мм/мин
для толстых материалов около 10% от 2000, т.е. 200 мм/мин
Мы обычно не меняем thc speed -- только если возникают ситуации когда
нужно какой-нибудь профнастил резать."
"Добрый день, Борис
Опытным путем установлено thc speed
для тонких материалов (до 5 мм) -- 20% от 2000, т.е. соответственно 400 мм/мин
для толстых материалов около 10% от 2000, т.е. 200 мм/мин
Мы обычно не меняем thc speed -- только если возникают ситуации когда
нужно какой-нибудь профнастил резать."
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: плазма на linuxcnc с THC
Вернее: лучше, чем ничего.Nick писал(а):+1 то, что надо!
Например он не умеет игнорировать коррекцию на низких скоростях (при прохождении углов).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: плазма на linuxcnc с THC
Очень хотелось-бы посмотреть на эти опыты! Это что такое надо резать, чтобы перепада высот неровностей было достаточно для того, чтобы ось успевала разгонятся до скорости выше 400 мм/мин?..odekolon писал(а):Опытным путем установлено thc speed
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
Leo_1943
- Мастер
- Сообщения: 875
- Зарегистрирован: 03 май 2014, 07:24
- Репутация: 250
- Настоящее имя: Леонид
- Откуда: Харьков
Re: плазма на linuxcnc с THC
Как сделать, чтоб при обсчете (проверке) программы в ЕМС2, не обсчитывалось больше двух знаков после запятой. Т.к. при обсчете программы в Пронесте постпроцессор выдает только два знака после запятой, и при открытии программы в ЕМС2 выдает ошибку на дугах g02 или g03, судя по всему неправильное округление в постпроцессоре (проверено экспериментально, менял на 1 в последнем разряде после запятой в программе и ошибка проподала). В тексте ошибки показывает 4 знака после запятой.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: плазма на linuxcnc с THC
посмотрел примеры кода пронест - есть и три знака после запятой ( глянуть ПП на этот счет)
----------
проверить можно ,запустив то же с другим GUI (не Axis)
----------
там заковыка в том ,что скорей это Axis "просчитывает" так (glcanon.py?)Leo_1943 писал(а):Как сделать, чтоб при обсчете (проверке) программы в ЕМС2,
проверить можно ,запустив то же с другим GUI (не Axis)
-
Leo_1943
- Мастер
- Сообщения: 875
- Зарегистрирован: 03 май 2014, 07:24
- Репутация: 250
- Настоящее имя: Леонид
- Откуда: Харьков
Re: плазма на linuxcnc с THC
Или как в Пронесте добавить еще разряд после запятой?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: плазма на linuxcnc с THC
ну наверно смотреть примерно такое:
там по моему зависимость G20 vs G21
Код: Выделить всё
[IJ FORMAT]
IF $PRECISION=NORMAL
%1.2lf
ELSE
%1.3lf
END-
Leo_1943
- Мастер
- Сообщения: 875
- Зарегистрирован: 03 май 2014, 07:24
- Репутация: 250
- Настоящее имя: Леонид
- Откуда: Харьков
Re: плазма на linuxcnc с THC
Это в Пронесте?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: плазма на linuxcnc с THC
эээ...Leo_1943 писал(а):Это в Пронесте?
мог и ошибнуться))
винды сейчас под рукой нет (точно открыть то что нужно ) , а это куски из пп - разбирал недавно , посчитал что пронест
=========
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: плазма на linuxcnc с THC
вот весь код:
Код: Выделить всё
[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
Спасибо, но быстро попробовать не смогу, может через пару недель.
-
AlleXHOM
- Новичок
- Сообщения: 3
- Зарегистрирован: 13 мар 2014, 22:54
- Репутация: 1
- Контактная информация:
Re: плазма на linuxcnc с THC
Леонид, а почему именно Пронест, есть же и под линукс проги, пускай не такие "красивые" но все же есть? 
-
Leo_1943
- Мастер
- Сообщения: 875
- Зарегистрирован: 03 май 2014, 07:24
- Репутация: 250
- Настоящее имя: Леонид
- Откуда: Харьков
Re: плазма на linuxcnc с THC
Добрый день.
Прошло время и решили чуть освежить станок плазменной резки.
Заменили контроллеры шаговых двигателей, проводку по станка и в шкафу. Датчик высоты резака, заменили на датчик высоты реза, отличие в том, что последний следит за напряжением дуги и выдаёт команды поднять опустить и дуга ок. Но теперь необходимо перед каждым резом следить за высотой листа т.е. касание, подъём на 3 мм, Поджио и рез, в конце реза подъём на 50 мм.
И вот проблема. Завели сигнал probe-in на motion.probe-input. Дабы по команде g38.2 опустится до касания листа, далее обнулить по g92, и далее по программе. Но теперь даже выход в ноль не работает пишет ошибку:Probe tripped during homing motion.также пропало нормальное движение по осям, идёт рывками и выдаёт похожую ошибку.
Как сделать? Можно по другому?
Прошло время и решили чуть освежить станок плазменной резки.
Заменили контроллеры шаговых двигателей, проводку по станка и в шкафу. Датчик высоты резака, заменили на датчик высоты реза, отличие в том, что последний следит за напряжением дуги и выдаёт команды поднять опустить и дуга ок. Но теперь необходимо перед каждым резом следить за высотой листа т.е. касание, подъём на 3 мм, Поджио и рез, в конце реза подъём на 50 мм.
И вот проблема. Завели сигнал probe-in на motion.probe-input. Дабы по команде g38.2 опустится до касания листа, далее обнулить по g92, и далее по программе. Но теперь даже выход в ноль не работает пишет ошибку:Probe tripped during homing motion.также пропало нормальное движение по осям, идёт рывками и выдаёт похожую ошибку.
Как сделать? Можно по другому?
