Перейти к содержанию
Авторизация  
Саня2009"

Пронест и танцы с бубном.

Рекомендуемые сообщения

Парни, всем привет. Собрал и запустил станок плазморез, есть конечно недочеты из за комплектующих. Но вопрос вот в чем. На мач3 и Пронест на просторах и не только добыты макросы и постпроцессоры, работает все вроде нормально. Но после перезагрузки компа Пронест начал выдавать Джи-код не много не тот что надо. Все попытки посредством замены параметров процесса в Пронест не приводят к желаемому результату. В джи-коде появилась строка после М5 - G0 Z2. Хотя днем ранее об этой строке ни каких намеков в джи-коде не было. Приходится редактировать в Блокноте и убирать эту строку. Уже переустанавливал Пронест, да чего только не делал, джи-код может измениться, но эта строка ни куда не уходит. Постпроцессор на Mash3 no Z, ТНС работает на макросах в М3. При переездах от детали к детали эта строка опускает резак до 2мм, резак скребет по металлу. Алгоритм получается следующий - М5 выключает плазму и поднимает резак на +30, а следующая команда - G0 Z2 ставит крест на команды М5, опускает до 2 и дает отмашку на переезд. Как быть и как с этим бороться?

Поделиться сообщением


Ссылка на сообщение

а покажите ваш постпроцессор?

Поделиться сообщением


Ссылка на сообщение

Как его сюда вставить?

 

Самое интересное, пока сам стол был не готов, я экспериментировал с Пронест, менял параметры процесса, разные Джи-коды на выходе, добился что бы нужный джи-код выдавало. Выключил-включил комп через несколько дней и все, выдает джи-код только с G0 Z2 после М5

Поделиться сообщением


Ссылка на сообщение
13 часов назад, cyberninja сказал:

а покажите ваш постпроцессор?

Если я правильно понимаю, то у меня стоит mach3 no Z. Как сюда прицепить не понимаю, пробовал выкидывает что такие форматы не принимаются

Поделиться сообщением


Ссылка на сообщение

1. есть подозрение, что у вас сейчас выводится код не с нужного вам постпроцессора...  в настройках пронеста проверяли, точно нужный выбран?

2. можно просто его содержимое скопировать и в сообщение вставить, кстати...

Поделиться сообщением


Ссылка на сообщение
1 час назад, cyberninja сказал:

1. есть подозрение, что у вас сейчас выводится код не с нужного вам постпроцессора...  в настройках пронеста проверяли, точно нужный выбран?

Вот и у меня такие подозрения. Что не измени в пронест а  джикод практически одинаков. Может пронест криво встал?

[MAIN PART OF THE CFF]

[MACHINE PROPERTIES]
name=Mach 3 with Touch-n-Go
model=No Subroutines
subroutines=0
comment_indicator=//
Machine Type=0
// Machine Types: 0 = plasma, 1 = oxyfuel, 2 = waterjet, 3 = laser, 4 = router

[PROCESS NAMES]
CUT1=Cut
SCRIBE1=Scribe
PUNCH1=Punch

[REVISION NUMBER]
$Revision: 1.1 $

[REVISION NOTES]
1.0 Original version from Generic 1.36
1.1 A bit of rephrasing and cleanups on the configuration comments

[MAIN]
//
////////////////////////////////////////////////////////////////////////////////
// The following variables can be initialized in this section for NestMaster.
// For TurboNest 2010 or ProNest 2010, they can be initialized here or set in
// a process parameter file. In addition, particularily for NestMaster, each
// of the parameters has a prompt line. If the // is removed from in front of
// the specific prompt lines, NestMaster (or TurboNest or ProNest) will prompt
// the user for that value when they output a cnc file.
////////////////////////////////////////////////////////////////////////////////
//

// The following section shows how the values are used in the Touch-n-Go sequence
//
// G28.1 Z($G28Z)
// G92 Z0
// G00 Z($SWITCHOFFSET)
// G92 Z0
// G00 Z($PIERCEHEIGHT)
// G04 P($PREHEAT) Only shows up if $PREHEAT>0
// M03
// G04 P($PIERCEDELAY) Only shows up if $PIERCEDELAY>0
// cutting occurs here
// M05
// G04 P($ENDDELAY) Only shows up if $ENDDELAY>0
//


// These values are the same for inch or metric
$PREHEAT:=0.0
$PIERCEDELAY:=0.0
$ENDDELAY:=0.0
// If non-zero, SCODE will come out at the top of the file after the F1 line
$SCODE:=0
// $TOOL is used as the T value in the M06 line. If zero, the M06 line is omitted.
$TOOL:=0
// CONFIGTOUCHNGO can have 3 possible values:
// $CONFIGTOUCHNGO:=NONE Don't do Touch-N-Go
// $CONFIGTOUCHNGO:=PART Do a Touch-N-Go only on the first profile of a part
// $CONFIGTOUCHNGO:=ALL Do a Touch-N-Go for every profile start
$CONFIGTOUCHNGO:=ALL
//
// For the next several lines, if you want to prompt the user for the individual
// values, remove the // from in front of the line that you want prompting for.
// If you don't want to prompt the user for a value, then leave the // in front
// of the prompt for that value.
//
//$G28Z := 'NPROMPT(Enter G28.1 Z Value)
//$SWITCHOFFSET := 'NPROMPT(Enter Switch Offset Z Value)
//$PIERCEHEIGHT := 'NPROMPT(Enter Pierce Height)
//$SAFEZ := 'NPROMPT(Enter Safe Z Value)
//$PREHEAT := 'NPROMPT(Enter Preheat Time 0 for none)
//$PIERCEDELAY := 'NPROMPT(Enter Pierce Delay 0 for none)
//$ENDDELAY := 'NPROMPT(Enter End Delay 0 for none)
//$SCODE := 'NPROMPT(Enter S Code 0 for none)
//$TOOL := 'NPROMPT(Enter Tool number 0 for none)

// 0 => Use G41/G42/G40 on lines by themselves
// 1 => Use G41/G42 with leadin move, G40 with leadout
// 2 => Don't use G41/G42 (perhaps the CUTON in the machine triggers cutter comp?)
$CONFIGUSEKERFONMOVE:=0

// 0 => G40 on an arc move is acceptable
// 1 => Delay G40 to the next rapid if still in CW/CCW mode
$CONFIGNOG40ONARC:=0

// 0 => Use K value with kerf amount 
// 1 => Use D value with G41/G42
// 2 => Don't include anything with G41/G42
// 3 => Use Kerf value as D value (typically used with TurboNest
$CONFIGUSEDVALUE:=0

// 0 => Use feedrate on a line by itself
// 1 => Use feedrate on the leadin motion line
// 2 => Use no feedrates
$CONFIGFEEDRATEONMOVE:=0

// 0 => Output Feedrate with each process start
// 1 => Suppress Feedrate if it hasn't changed
$CONFIGSUPRESSFEEDRATE:=0

// 0 => No G61/G64 codes
// 1 => Include G61/G64 exact stop codes based on angle change at end of motion
// 2 => Use G09 for exact stop check on each occurance
$CONFIGUSEEXACTSTOPCHECK:=0

// 0 => Start of Profile line numbers are on lines by themselves
// 1 => Start of Profile line numbers are on the process on rapid motion line
$CONFIGSOPLINENOLOCATION:=1

// 0 => Include G00/G01/G02/G03 on every motion line
// 1 => Suppress repeated G00/G01/G02/G03 codes
$CONFIGUSEMODALMOTIONCODES:=0

// 0 => Include X and Y on every motion line
// 1 => Suppress duplicate X, Y codes
// 2 => Include X and Y on all rapid motion, suppress on cutting motion
$CONFIGUSEMODALXY:=2

// CONFIGAHCISON can start out as 0, 1, 2, or 3
// 0 => implies that AHC defaults at start of program to off
// 1 => implies that AHC defaults at start of program to on
// 2 => implies that an AHC code should be used at the start in any case
// 3 => No AHC codes
// In most cases, 1 or 3 are the only usable choices.
$CONFIGAHCISON:=1

// 0 => I, J are absolute if X, Y are absolute, otherwise incremental
// 1 => I, J are always incremental
$CONFIGIJALWAYSINCREMENTAL:=1

// 0 => CUT OFF, CUT OFFUP are as normal
// 1 => At end of exterior profiles, skeleton cuts, and Crop cuts, always use OFFUP
$CONFIGFORCEEXTERIORTOOFFUP:=1

// Set a Zero point. By default, use $INITPTX, $INITPTY, which is where the
// starting point is located. ZEROPT_ allows setting a zero point separate
// from the initial point. To start the head out in the upper left of the
// sheet, with all dimensions in absolute from the lower left, set the init
// point in PN to the upper left, and use $ZEROPTX:=$SHEETMINX and
// $ZEROPTY:=$SHEETMINY
$ZEROPTX := $INITPTX
$ZEROPTY := $INITPTY

$AHCISON := $CONFIGAHCISON
{START OF FILE}
// Uncomment the next line to include a list of all parts, quantities on the list
//{OUTPUT PLP LIST INFO}
{PROGRAM INIT}
{VALIDATE PLATE}
{OUTPUT PROFILES}
{END OF FILE}

[SECTION PART OF THE CFF]

[START OF FILE]

[PLP INFO LINE]
// The next line might need comment characters adjusted if you're using the part list
{LINENO :M}(PART#:{ROOT PART NAME} QTY {PART QUANTITY ON NEST})

[ROOT PART NAME]
// ROOT PART NAME is the part file name without path (used only in PLP INFO LINE)
ARGUMENT=$ROOTPARTNAME
FORMAT=%s

[PART QUANTITY ON NEST]
// Number of times this part occurs on this nest (used only in PLP INFO LINE)
ARGUMENT=$PARTQUANTITYONNEST
FORMAT=%d

[PROGRAM INIT]
// Next two lines are example of how to prompt for a program number
//$PROGRAMNUMBER := 'NPROMPT(Enter Program Number)
//P{PROGRAM NUMBER}
{LINENO :M}(Filename: {ROOT FILE NAME})
{LINENO :M}(Date: {DATE})
{UNITS}
{MODE}
{LINENO :M}F1
{INITIALIZE CUT PARAMETERS}
IF $SCODE>0
{LINENO :M}{SCODE}
END
{RESET PARAMETERS}

[SCODE]
ARGUMENT=$SCODE
FORMAT=S%d

[UNITS]
// Common G codes for units are G70 or G20 for inch and G71 or G21 for metric
IF $UNITS=INCH
{LINENO :M}G20
ELSE
{LINENO :M}G21
END

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

[QUAD ARCS]
0

[ROOT FILE NAME]
ARGUMENT=$ROOTFILENAME
FORMAT=%s

[PROGRAM NUMBER]
ARGUMENT=$PROGRAMNUMBER
FORMAT=%d

[DATE]
ARGUMENT=$DATE
FORMAT=%s

[TIME]
ARGUMENT=$TIME
FORMAT=%s

[MATERIAL THICKNESS]
ARGUMENT=$MATERIALTHICKNESS * $CONVERSION
FORMAT={Z FORMAT}

[MATERIAL NAME]
ARGUMENT=$MATERIALNAME
FORMAT=%s

[PART CLASS]
ARGUMENT=$PART_CLASS
FORMAT=%s

[CNC NAME]
ARGUMENT=$FILENAME
FORMAT=%s

[NEST NUMBER]
ARGUMENT=$NESTNUMBER+1
FORMAT=%d

[NUMBER OF NESTS]
ARGUMENT=$NUMBER_OF_NESTS
FORMAT=%d

[TIMES TO RUN]
ARGUMENT=$CUTNUMBEROFTIMES
FORMAT=%d

[PRODUCTION TIME]
ARGUMENT=$PRODUCTIONTIME
FORMAT=%4.3f

[SHEET X]
ARGUMENT=$SHEETX * $CONVERSION
FORMAT={DIMENSION DISPLAY FORMAT}

[SHEET Y]
ARGUMENT=$SHEETY * $CONVERSION
FORMAT={DIMENSION DISPLAY FORMAT}

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

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

[VALIDATE PLATE]
IF $VALIDATEPLATE = TRUE
// Note that X and Y both need to be set each at each step for incremental
// output to work correctly.
$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
{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
{LINENO :M}M30

[LINEAR MOTION TO INIT]
$X:=$INITPTX
$Y:=$INITPTY
{RAPID MOTION}

[OUTPUT START INTERIOR PROFILE]
// $PREKERFED variable tracks to see if a KERF LEFT or KERF RIGHT CALL is
// made so kerf off calls can be made only if needed
{CANCEL CURRENT OFFSET}
{SOP LINENO 0}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
$DOTOUCHNGO:=0
IF $CONFIGTOUCHNGO=ALL
$DOTOUCHNGO:=1
END
{PART NAME COMMENT}
$PREKERFED:=1
$FORCEOFFUP:=0

[OUTPUT START EXTERIOR PROFILE]
{CANCEL CURRENT OFFSET}
{SOP LINENO 0}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
$DOTOUCHNGO:=0
IF $CONFIGTOUCHNGO=ALL
$DOTOUCHNGO:=1
END
{PART NAME COMMENT}
$PREKERFED:=1
$FORCEOFFUP:=$CONFIGFORCEEXTERIORTOOFFUP

[OUTPUT START OPEN PROFILE]
{CANCEL CURRENT OFFSET}
{SOP LINENO 0}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
$DOTOUCHNGO:=0
IF $CONFIGTOUCHNGO=ALL
$DOTOUCHNGO:=1
END
{PART NAME COMMENT}
$PREKERFED:=1
$FORCEOFFUP:=$CONFIGFORCEEXTERIORTOOFFUP

[OUTPUT START CROP]
{CANCEL CURRENT OFFSET}
{SOP LINENO 0}
{OUTPUT TORCH SPACING}
{ACTIVATE NEXT OFFSET}
{PROCESS ON MOTION}
$DOTOUCHNGO:=0
IF $CONFIGTOUCHNGO=ALL
$DOTOUCHNGO:=1
END
{PART NAME COMMENT}
$PREKERFED:=1
$FORCEOFFUP:=$CONFIGFORCEEXTERIORTOOFFUP

[OUTPUT TORCH SPACING]
IF {TORCH SPACING REQUIRED}
IF $NUMTORCHES = 1 || $NUMTORCHES = 0
(Set 1 torch.)
{OUTPUT STOP}
ELSE
IF $USEAUTOTORCHSPACING = TRUE
// Auto torch spacing commands go here.
END
(Set {NUMTORCHES} torches at {TORCHSPACING}{TORCHUNITS}.)
{OUTPUT STOP}
END
END

[OUTPUT END INTERIOR PROFILE]
IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
{KERF OFF}
END

[OUTPUT END EXTERIOR PROFILE]
IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
{KERF OFF}
END

[OUTPUT END OPEN PROFILE]
IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
{KERF OFF}
END

[OUTPUT END CROP]
IF {KERF STILL ON} && $CONFIGNOG40ONARC=0
{KERF OFF}
END

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

[SOP LINENO 0]
IF $USELINENUMBERS = STARTOFPROFILE && $CONFIGSOPLINENOLOCATION=0
{NWORD}
END

[SOP LINENO 1]
IF $USELINENUMBERS = STARTOFPROFILE && $CONFIGSOPLINENOLOCATION=1
{NWORD}
END

[PART NAME COMMENT]
$SAVEPARTNAME := $PARTNAME
$SAVENUM := $PARTSEQUENCENUMBER
IF $SAVENUM != $LASTSAVENUM || $SAVEPARTNAME != $LASTSAVEPARTNAME
IF $CONFIGTOUCHNGO=PART
$DOTOUCHNGO:=1
END
IF $PARTNAMEASCOMMENT = TRUE
IF $PARTSEQUENCENUMBER > 0
(Seq {PART SEQUENCE NUMBER} - {PARTNAME})
ELSE
({PARTNAME})
END
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 $PROCESS != $LASTPROCESS
IF $LASTPROCESS=SCRIBE1
//{LINENO :M}M70
END
END

[CANCEL CURRENT OFFSET]
IF $PROCESS != $NEXTPROCESS
IF $PROCESS=SCRIBE1
//{LINENO :M}M70
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=CUT1 || $PROCESS=PUNCH1) && $TOOL>0
{LINENO :M}M06 T{TOOL}
{SAFE Z}
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=CUT1 || $NEXTPROCESS=PUNCH1) && $TOOL>0
{LINENO :M}M06 T{TOOL}
{SAFE Z}
END
END

[PROCESS ON MOTION]
{SOP LINENO 1 :M}{RAPID MOTION}

[RAPID MOTION]
$MOTIONTYPE:=0
IF $CONFIGUSEMODALXY=2
{LINENO :M}{KERF MOVE :M}{RAPID MOTION CODE :M}{CURRENTX}{CURRENTY}
ELSE
{LINENO :M}{KERF MOVE :M}{RAPID MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}
END

[PRE MOTION]
// Calls at the start of the MOTION lines
// This keeps the MOTION sections not quite as wide
{EXACT STOP :M}{KERF MOVE :M}


// Calls at the end of the MOTION lines
{ADD FEEDRATE :M}

[LINEAR MOTION]
$MOTIONTYPE:=1
{FEEDRATE LINE}
IF $CONFIGUSEKERFONMOVE=0
{KERF DIRECTION :M}
ELSE
IF $INLEADOUT=TRUE && $NEXTPROFILEMOTION=NONE
$KERFDIR:=OFF
END
END
{LINENO :M}{PRE MOTION :M}{LINEAR MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{POST MOTION :M}

[CLOCKWISE MOTION]
$MOTIONTYPE:=2
{CHECK FOR ARC TOO SMALL}
IF $ARCTOOSMALL=1
{LINEAR MOTION}
ELSE
{FEEDRATE LINE}
IF $CONFIGUSEKERFONMOVE=0
{KERF DIRECTION :M}
ELSE
IF $INLEADOUT=TRUE && $NEXTPROFILEMOTION=NONE && $CONFIGNOG40ONARC=0
$KERFDIR:=OFF
END
END
{LINENO :M}{PRE MOTION :M}{CLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}{POST MOTION :M}
END

[COUNTERCLOCKWISE MOTION]
$MOTIONTYPE:=3
{CHECK FOR ARC TOO SMALL}
IF $ARCTOOSMALL=1
{LINEAR MOTION}
ELSE
{FEEDRATE LINE}
IF $CONFIGUSEKERFONMOVE=0
{KERF DIRECTION :M}
ELSE
IF $INLEADOUT=TRUE && $NEXTPROFILEMOTION=NONE && $CONFIGNOG40ONARC=0
$KERFDIR:=OFF
END
END
{LINENO :M}{PRE MOTION :M}{COUNTERCLOCKWISE MOTION CODE :M}{CURRENTX :M}{CURRENTY :M}{CURRENTI}{CURRENTJ}{POST MOTION :M}
END

[EXACT STOP]
// This section decides if the machine should maintain feedrate at the end of the motion
// or if it should come to a stop. The degree of angle change determines this
IF $CONFIGUSEEXACTSTOPCHECK=0
$EXACTSTOPCHECK:=2
END
IF $NEXTPROFILEMOTION=NONE
$ANGLECHANGE:=0
ELSE
$ANGLECHANGE:='ABS($ENDTANGENTANGLE-$NEXTSTARTTANGENTANGLE)
END
IF $ANGLECHANGE>180
$ANGLECHANGE:='ABS($ANGLECHANGE-360.0)
END
IF $CONFIGUSEEXACTSTOPCHECK=2
$EXACTSTOPCHECK:=0
END
// The number in the next line determines when an EXACT STOP needs to be inserted
// and when it should maintain feedrate
IF $ANGLECHANGE>=$EXACTSTOPANGLE
// Use exact stop check mode
IF $EXACTSTOPCHECK=0
IF $CONFIGUSEEXACTSTOPCHECK=2
// One-shot exact stop
G09
ELSE
// Modal exact stop
G64
END
$EXACTSTOPCHECK:=1
END
ELSE
// Continuous (cut) mode
IF $EXACTSTOPCHECK=1
G61
$EXACTSTOPCHECK:=0
END
END

[RAPID MOTION CODE]
IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=0)
G00
$CURRENTMOTION:=0
END

[LINEAR MOTION CODE]
IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=1)
G01
$CURRENTMOTION:=1
END

[CLOCKWISE MOTION CODE]
IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=2)
IF {NORMAL AXIS DIRECTION}
G02
ELSE
G03
END
$CURRENTMOTION:=2
END

[COUNTERCLOCKWISE MOTION CODE]
IF ($CONFIGUSEMODALMOTIONCODES=0) || ($CURRENTMOTION!=3)
IF {NORMAL AXIS DIRECTION}
G03
ELSE
G02
END
$CURRENTMOTION:=3
END

[INIT PT MOTION CODE]
{RAPID MOTION CODE}

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

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

[ADD KERF VALUE]
IF $KERF > 0.0 && $KERF != $LASTKERF
{KERF VALUE}
$KERF:=$KERF
END

[OUTPUT KERF LEFT]
// Any call from Pronest to this or the next section says that this part was not
// prekerfed. If not prekerfed, then we need to cancel the Kerf at the end of
// the cut.
$PREKERFED:=0

[OUTPUT KERF RIGHT]
$PREKERFED:=0

[KERF LEFT]
IF $CONFIGUSEKERFONMOVE<2
IF ($KERF <= 0 && $CONFIGUSEDVALUE=0) || $CONFIGUSEDVALUE=2
IF $CONFIGUSEKERFONMOVE=0
{LINENO :M}G41
ELSE
G41
END
ELSE
IF $CONFIGUSEKERFONMOVE=0
{LINENO :M}G41{KERF VALUE :M}
ELSE
G41{KERF VALUE :M}
END
$KERF:=$KERF
END
END
$KERFSTATUS:=41

[KERF RIGHT]
IF $CONFIGUSEKERFONMOVE<2
IF ($KERF <= 0 && $CONFIGUSEDVALUE=0) || $CONFIGUSEDVALUE=2
IF $CONFIGUSEKERFONMOVE=0
{LINENO :M}G42
ELSE
G42
END
ELSE
IF $CONFIGUSEKERFONMOVE=0
{LINENO :M}G42{KERF VALUE :M}
ELSE
G42{KERF VALUE :M}
$KERF:=$KERF
END
END
$KERFSTATUS:=42

[KERF OFF]
IF $CONFIGUSEKERFONMOVE<2
IF $KERFSTATUS!=40
IF $CONFIGUSEKERFONMOVE=0
{LINENO :M}G40
ELSE
G40
END
END
END
$KERFSTATUS:=40

[KERF MOVE]
{KERF DIRECTION}

[KERF DIRECTION]
IF ($PROCESS != SCRIBE1) && ($PROCESS != SCRIBE2) && ($PREKERFED=0)
IF $KERFDIR = LEFT && $KERFSTATUS!=41
{KERF LEFT}
END
IF $KERFDIR = RIGHT && $KERFSTATUS!=42
{KERF RIGHT}
END
IF $KERFDIR = OFF && $KERFSTATUS!=40
{KERF OFF}
END
END

[OUTPUT STOP]
{LINENO :M}M00

[START LEADIN]
// This section is here as a place holder and so the name is already in place

[END LEADIN]
// This section is here as a place holder and so the name is already in place

[START LEADOUT]
// This section is here as a place holder and so the name is already in place

[END LEADOUT]
// This section is here as a place holder and so the name is already in place

[START TAB]
$INTAB := 1

[END TAB]
$INTAB := 0
{END LEADIN}

[CUT SUB]
// This section may be useful if an integer value is used to initiate cutting.
// This is often an M98P___ call to a subroutine already stored in the machine
ARGUMENT=$CUTSUB
FORMAT=M98P%d

[CUT CONDITION]
// This section may be useful if a cutting condition needs to be applied
// separately from the CUT SUB value.
ARGUMENT=$CUTCONDITION
FORMAT=E%d

//[TOUCH AND GO]
//IF $DOTOUCHNGO=1
//{PIERCE HEIGHT}
//{G28 Z}
//{LINENO :M}G92 Z0.0
//{SWITCH OFFSET}
//{LINENO :M}G92 Z0.0
//END
//{PIERCE HEIGHT}

//[PIERCE HEIGHT]
//ARGUMENT=$PIERCEHEIGHT
//FORMAT={LINENO :M}{RAPID MOTION CODE :M} Z{Z FORMAT}

//[G28 Z]
//ARGUMENT=$G28Z
//FORMAT={LINENO :M}G28.1 Z{Z FORMAT}

//[SWITCH OFFSET]
//ARGUMENT=$SWITCHOFFSET
//FORMAT={LINENO :M}{RAPID MOTION CODE :M} Z{Z FORMAT}

[OUTPUT CUT1 ON]
// CUT1 ON codes go in this section.
{FEEDRATE LINE}
//IF $CONFIGUSEKERFONMOVE=0
//{KERF DIRECTION :M}
//END
//{TOUCH AND GO}
//{OUTPUT PREHEAT}
{LINENO :M}M03
{OUTPUT PIERCEDELAY}

[OUTPUT CUT1 OFF]
IF $FORCEOFFUP=0
// Turn off the cutting device, but leave the head at cutting height
{LINENO :M}M05
{OUTPUT ENDDELAY}
// Should we really call Safe Z here?
{SAFE Z}
IF $PREKERFED=0 && $INTAB=0 && ($CONFIGNOG40ONARC=0 || $CURRENTMOTION<2)
{KERF OFF}
END
$KERF:=0.0

IF $CONFIGSUPRESSFEEDRATE=0
$FEEDRATE:=0.0
END
ELSE
{OUTPUT CUT1 OFFUP}
END

[OUTPUT CUT1 OFFUP]
// Turn off the cutting device, and raise the head to travel height
{LINENO :M}M05
{OUTPUT ENDDELAY}
//{SAFE Z}
IF $PREKERFED=0 && $INTAB=0 && ($CONFIGNOG40ONARC=0 || $CURRENTMOTION<2)
{KERF OFF}
END
$KERF:=0.0

IF $CONFIGSUPRESSFEEDRATE=0
$FEEDRATE:=0.0
END

[SAFE Z]
ARGUMENT=$SAFEZ
FORMAT={LINENO :M}{RAPID MOTION CODE :M} Z{Z FORMAT}

[OUTPUT SCRIBE1 ON]
// Scribing or Marking commands go in this section
$PREKERFED:=1
{CANCEL PREVIOUS OFFSET}
{SOP LINENO 0}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
{ACTIVATE CURRENT OFFSET}
{PROCESS ON MOTION}
{LINENO :M}M08

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

[OUTPUT PUNCH1 ON]
// Depending on customer choice, this could be a piercing routine or a point
// marking routine. Or duplicate the section and make both.
$PREKERFED:=1
{CANCEL PREVIOUS OFFSET}
{SOP LINENO 0}
IF $PARTNAMEASCOMMENT = TRUE
{PART NAME COMMENT}
END
{ACTIVATE CURRENT OFFSET}
{PROCESS ON MOTION}
{TOUCH AND GO}
{OUTPUT PREHEAT}
{LINENO :M}M03
{OUTPUT PIERCEDELAY}
{LINENO :M}M05
{OUTPUT ENDDELAY}
{SAFE Z}
$KERF:=0.0
IF $CONFIGSUPRESSFEEDRATE=0
$FEEDRATE:=0.0
END

[COMMENT FORMAT]
(%s)

[FORMAT PART OF THE CFF]


[INITPTX]
ARGUMENT=($INITPTX - $ZEROPTX) * $CONVERSION
FORMAT=X{XY FORMAT}

[INITPTY]
ARGUMENT=($INITPTY - $ZEROPTY) * $CONVERSION
FORMAT=Y{XY FORMAT}

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

[NWORD]
// Use N%d for no leading zeros
// Use N%03d for 3 digit N numbers
// Use N%04d for 4 digit N numbers
FORMAT=N%d{SP}
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 $UNITS=INCH
IF $PRECISION=NORMAL
%1.3lf
ELSE
%1.4lf
END
ELSE
IF $PRECISION=NORMAL
%1.2lf
ELSE
%1.3lf
END
END

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

[Z FORMAT]
IF $UNITS=INCH
IF $PRECISION=NORMAL
%1.3lf
ELSE
%1.4lf
END
ELSE
IF $PRECISION=NORMAL
%1.2lf
ELSE
%1.3lf
END
END

[DIMENSION DISPLAY FORMAT]
IF $UNITS=INCH
IF $PRECISION=NORMAL
%1.3lf
ELSE
%1.4lf
END
ELSE
IF $PRECISION=NORMAL
%1.2lf
ELSE
%1.3lf
END
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]
1

[TOOL]
ARGUMENT=$TOOL
FORMAT=%d

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

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

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

[CURRENTJ]
IF $MODE=ABSOLUTE && $CONFIGIJALWAYSINCREMENTAL=0
ARGUMENT=($J - $ZEROPTY) * $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]
IF $CONFIGUSEDVALUE=1
// D value as kerf
ARGUMENT=$DVALUE
FORMAT=D%02d
ELSE
IF $CONFIGUSEDVALUE=0
// Kerf as actual kerf (typically with a leading K)
MODAL_ARGUMENT=$KERF
ARGUMENT=$KERF * $CONVERSION * $KERFDECIMALSHIFT
FORMAT=K{XY FORMAT}
ELSE
IF $CONFIGUSEDVALUE=3
// For TurboNest CFFs that want a D register but can't use a Process
// Parameter column, use the Kerf column as the D register number
ARGUMENT=$KERF * $CONVERSION
FORMAT=D%02.0lf
END
END
END

[OUTPUT DWELL]
ARGUMENT=$DWELL * $DWELLDECIMALSHIFT
// Dwell times are usually specified with an F, X, or P value
FORMAT={LINENO :M}G04F{DWELL FORMAT}

[OUTPUT PREHEAT]
IF $PREHEAT>0
ARGUMENT=$PREHEAT * $DWELLDECIMALSHIFT
FORMAT={LINENO :M}G04 P{DWELL FORMAT}
END

[OUTPUT PIERCEDELAY]
IF $PIERCEDELAY>0
ARGUMENT=$PIERCEDELAY * $DWELLDECIMALSHIFT
FORMAT={LINENO :M}G04 P{DWELL FORMAT}
END

[OUTPUT ENDDELAY]
IF $ENDDELAY>0
ARGUMENT=$ENDDELAY * $DWELLDECIMALSHIFT
FORMAT={LINENO :M}G04 P{DWELL FORMAT}
END

[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

[NORMAL AXIS DIRECTION]
(($AXIS_SWAP_TYPE=NONE) || ($AXIS_SWAP_TYPE=SWAP90) || ($AXIS_SWAP_TYPE=SWAP180) || ($AXIS_SWAP_TYPE=SWAP270))

[INSIDE CW ARC TOO SMALL FOR KERF]
($CONFIGUSEDVALUE<3 && ($MOTIONTYPE=2 && $KERFDIR=RIGHT && $RADIUS<$KERF*0.5))

[INSIDE CCW ARC TOO SMALL FOR KERF]
($CONFIGUSEDVALUE<3 && ($MOTIONTYPE=3 && $KERFDIR=LEFT && $RADIUS<$KERF*0.5))

[ARC TOO LINEAR]
({CHORD LENGTH}<(($RADIUS^2-($RADIUS-0.002)^2)^0.5)*2 && $RADIUS>3 && $ARCANGLE<10)

[ARC RADIUS TOO SMALL]
($RADIUS < 0.008000 || ({CHORD LENGTH} < 0.00200 && $ARCANGLE<10))

[CHECK FOR ARC TOO SMALL]
$ARCTOOSMALL:=0
IF {INSIDE CW ARC TOO SMALL FOR KERF}
$ARCTOOSMALL:=1
END
IF {INSIDE CCW ARC TOO SMALL FOR KERF}
$ARCTOOSMALL:=1
END
IF {ARC TOO LINEAR}
$ARCTOOSMALL:=1
END
IF {ARC RADIUS TOO SMALL}
$ARCTOOSMALL:=1
END

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

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

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

[CNC TOKEN DEBUG]
// See FogBugz #2923 for details
0

[SP]
ARGUMENT=$SPACE
FORMAT=%c

[CHARACTER REPLACE TABLE]
(|_
)|_

[CFFDIR]
IF $CFFDIR=none
$CFFDIR:='SUBSTRING($CFFNAME,'RANGE(0,'TEXTLEN($CFFNAME)-'TEXTLEN($ROOTCFFNAME)-6))
END
ARGUMENT=$CFFDIR
FORMAT=%s
// As of the 8.3 release version, the CFFDIR variable is optional in the user
// defined variables. In all prior release versions, it is required.

[ROOT CFF NAME]
ARGUMENT=$ROOTCFFNAME
FORMAT=%s


// Uncomment if an executable is needed
//'EXECUTE "{CFFDIR}\{ROOT CFF NAME}.exe" "{CNC NAME}"

[USER DEFINED VARIABLES]
SAVEPARTNAME|STRING|0
SAVENUM|INTEGER|0
DX|DOUBLE|0.0
DY|DOUBLE|0.0
EXACTSTOPCHECK|INTEGER|0
ANGLECHANGE|DOUBLE|0.0
KERFSTATUS|INTEGER|0
PREKERFED|INTEGER|0
AHCISON|INTEGER|3
AHC|STRING|ON
SPACE|INTEGER|32
CONFIGTOUCHNGO|STRING|ALL
CONFIGUSEDVALUE|INTEGER|0
CONFIGUSEKERFONMOVE|INTEGER|0
CONFIGNOG40ONARC|INTEGER|0
CONFIGFEEDRATEONMOVE|INTEGER|0
CONFIGSUPRESSFEEDRATE|INTEGER|0
CONFIGUSEEXACTSTOPCHECK|INTEGER|0
CONFIGUSEMODALMOTIONCODES|INTEGER|0
CONFIGUSEMODALXY|INTEGER|0
CONFIGAHCISON|INTEGER|0
CONFIGIJALWAYSINCREMENTAL|INTEGER|1
CONFIGSOPLINENOLOCATION|INTEGER|0
CONFIGFORCEEXTERIORTOOFFUP|INTEGER|1
FORCEOFFUP|INTEGER|0
ZEROPTX|DOUBLE|0.0
ZEROPTY|DOUBLE|0.0
CFFDIR|STRING|none
CURRENTMOTION|INTEGER|-1
MOTIONTYPE|INTEGER|-1
INTAB|INTEGER|0
ARCTOOSMALL|INTEGER|0
DOTOUCHNGO|INTEGER|1
PossibleProcParamsStartHere|INTEGER|0
CUTSUB|INTEGER|0
CUTCONDITION|INTEGER|0
ProcParamColsStartHere|INTEGER|0
EXACTSTOPANGLE|DOUBLE|45.0
FEEDRATE|DOUBLE|0.0
DVALUE|INTEGER|0
DISABLEAHC|INTEGER|0
KERF|DOUBLE|0.0
DWELL|DOUBLE|0.0
PIERCEHEIGHT|DOUBLE|0.0
SWITCHOFFSET|DOUBLE|0.054
G28Z|DOUBLE|0.0
SAFEZ|DOUBLE|2.0
PREHEAT|DOUBLE|0.0
PIERCEDELAY|DOUBLE|0.4
ENDDELAY|DOUBLE|0.0
TOOL|INTEGER|7
SCODE|INTEGER|500

Поделиться сообщением


Ссылка на сообщение

странно

у меня вобще с этим ПП выдает ошибку и не генерит код

Поделиться сообщением


Ссылка на сообщение

В Пронест у меня загружены таблицы, с этим постпроцессом работает вроде все нормально. В общем вроде вот в чем причина, на мелких отверстиях в джикоде появляются эти две команды G0 Z2. Как я понимаю, эту команду Пронест берет из таблиц. все бы ни чего, но ТНС работает на макросах из М3 и это проблема. Мало того, что скорость приходится в макросе постоянно редактировать, еще и этот ТНС не реагирует на команду вкл-выкл.ТНС убожный, В джи-коде много чего в зависимости от детали прописывает, а макросы в М3 можно сказать плюют на истины прописанные в таблицах.

Поделиться сообщением


Ссылка на сообщение
6 часов назад, Саня2009" сказал:

В Пронест у меня загружены таблицы, с этим постпроцессом работает вроде все нормально. В общем вроде вот в чем причина, на мелких отверстиях в джикоде появляются эти две команды G0 Z2. Как я понимаю, эту команду Пронест берет из таблиц. все бы ни чего, но ТНС работает на макросах из М3 и это проблема. Мало того, что скорость приходится в макросе постоянно редактировать, еще и этот ТНС не реагирует на команду вкл-выкл.ТНС убожный, В джи-коде много чего в зависимости от детали прописывает, а макросы в М3 можно сказать плюют на истины прописанные в таблицах.

1) не совсем понятно, как у вас в таблице прописана высота Z

2) зачем редактировать скорость в макросе, если пронест снижает скорость в соответствии с таблицей, где она задается в процентах от нормальной скорости подачи...

3) попробуйте использовать готовую рабочую сборку мач3 и написанный для нее ПП, например от пурлоджик, а не пытаться подобрать ПП для своих настроек.

Поделиться сообщением


Ссылка на сообщение

Дело в том, что в джикоде скорость реза прописана строкой выше М3, станок только успевает переехать на скорости в джикоде, начинает читать М3 и дальше работает на прописанных скоростях макроса в М3, там их две - Z800 (поиск металла) и потом приходится указать какую нить среднюю скорость, на которой в итоге и работает станок. Если не прописать среднюю, тогда совсем беда, станок считывает скорость 800 из поиска металла и тогда на ней режет

Поделиться сообщением


Ссылка на сообщение

Я делаю проще, через Пронест прогоняю файлы, потом делаю экспорт в dxf, при этом убрав все входы выходы и прочую дребень. После уже обрабатываю файл в sheetcam tng, так проще и надежнее. 

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.