Mach3 плазма

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Mach3 плазма

Сообщение nkp »

тут под мач наткнулся на пост:
(для просмотра содержимого нажмите на ссылку)

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

[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
//

IF $UNITS=INCH
// If not prompting, these are the default inch values
$G28Z := 3.0/25.4
$SWITCHOFFSET:=0.054
$PIERCEHEIGHT:=0.125
$SAFEZ:=2.0
ELSE
// If not prompting, these are the default metric values
$G28Z := 3.0
$SWITCHOFFSET:=1.37
$PIERCEHEIGHT:=3.2
$SAFEZ:=50.0
END
// These values are the same for inch or metric
$PREHEAT:=0.0
$PIERCEDELAY:=0.6
$ENDDELAY:=0.0
// If non-zero, SCODE will come out at the top of the file after the F1 line
$SCODE:=500
// $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:=NONE
//
// 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:=2

// 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:=2

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

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

// 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:=0

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

// 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:=0

// 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}
(Äàòà: {DATE})
{LINENO :M}(Ôàéë: {ROOT FILE NAME})
{LINENO :M}(Òîëùèíà: {MATERIAL THICKNESS})
{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=%s

[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
(Äåòàëü¹ {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}

[POST MOTION]
// 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

[OUTPUT AHCON]
{AHCON}

[OUTPUT AHCOFF]
{AHCOFF}

[AHCON CODE]
{LINENO :M}M51

[AHCOFF CODE]
{LINENO :M}M50

[AHCON]
IF ($AHCISON = 0 || $AHCISON = 2) && $DISABLEAHC=0
{AHCON CODE}
$AHCISON:=1
END

[FORCE AHCON]
IF ($AHCISON = 0 || $AHCISON = 2)
{AHCON CODE}
$AHCISON:=1
END

[AHCOFF]
IF ($AHCISON = 1 || $AHCISON = 2)
{AHCOFF CODE}
$AHCISON:=0
END

[CHECK AHC]
// If Pronest thinks it's supposed to be on ($AHC=ON), and it's not, and we're
// not disabling it through the Process Parameter file, turn it on
IF $AHC=ON && $AHCISON=0 && $DISABLEAHC=0
{AHCON}
END
// If Pronest thinks it's supposed to be off ($AHC=OFF), and it's on, turn it off
IF $AHC=OFF && $AHCISON!=0 || $DISABLEAHC=1
{AHCOFF}
END

[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}
{CHECK AHC}
IF $CONFIGUSEKERFONMOVE=0
{KERF DIRECTION :M}
END
{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
{CHECK AHC}
{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
{FORCE AHCON}
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
{CHECK AHC}
{LINENO :M}M05
{OUTPUT ENDDELAY}
//{SAFE Z}
//IF $PREKERFED=0 && $INTAB=0 && ($CONFIGNOG40ONARC=0 || $CURRENTMOTION<2)
{KERF OFF}
END
$KERF:=0.0
{FORCE AHCON}
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

[POST PROCESSING]
// 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.6
ENDDELAY|DOUBLE|0.0
TOOL|INTEGER|7
SCODE|INTEGER|500
а еще заметил директорию для макросов
так что даже и макросом еще до пп можно добавлять функционал
только тоскливо как то под венду и в платной программке это делать
тогда уж в шиткаме дописывать ...))))
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

Алекс писал(а):Aftaev спасибо за ссылки буду изучать
посмотри тему там выкладывал макросы, люди пробовали и видео выкладывали как работает у них макрос.
nkp писал(а):тогда уж в шиткаме дописывать ...))))
В Шии все уже есть и так замечательно работает с Мачем :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Mach3 плазма

Сообщение nkp »

aftaev писал(а):В Шии все уже есть и так замечательно работает с Мачем
на случай каких то "своих" заморочек ;)
я не спец - но вижу станки плазмы люди по разному строят (и соответственнно код управления своеобразный)
в основном это Z касается
вот я о таких случаях писал
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

nkp писал(а):я не спец - но вижу станки плазмы люди по разному строят (и соответственнно код управления своеобразный)
люди по разному понимают как должен работать станок плазмы. Одни хотят чтобы проколы/задержки... задавались в ЧПУ (Мач,ЕМС) а другие делают это все в программах. И по мне лучше задать это в Шии. Потом достаточно выбрать"инструмент" в котором прописан ток, ширина реза, высота прокола и тд.. ЧПУ должен находить ноль материала, и следить за высотой резки.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

aftaev писал(а):люди по разному понимают как должен работать станок плазмы
просто кто как видел станок в деле так и пытается его реализовать не вникая в глубину.
я схему такую выбрал потому что я её обслуживал и считаю это более удачно чем когда все пытаются затолкать в код программы.
мое мнение программа должна только управлять движением по двум осям х,у и подавать сигналы в нужные моменты на включение и выключение а остальное реализовывать отдельно в том числе и автовысоту
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

Алекс писал(а):мое мнение программа должна только управлять движением по двум осям х,у и подавать сигналы в нужные
есть станки 6ти осевые :)
Алекс писал(а):я схему такую выбрал потому что я её обслуживал и считаю это более удачно чем когда все пытаются затолкать в код программы.
Заталкивать нужно именно в Gcode это наиболее гибко.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

aftaev писал(а):Алекс писал(а):
мое мнение программа должна только управлять движением по двум осям х,у и подавать сигналы в нужные

есть станки 6ти осевые
я про плазму имел в виду)))) ;)
гибко тогда когда ты же чертишь ты же создаешь раскрой ты же вырезаешь.
но когда создает один а работает другой то гибкость теряется. так как все жестко прописанно и изменить что либо эт нужно переделывать УП(время на пробой когда одну и туже деталь надо вырезать из разных по толщине металла).
если честно ты меня начинаешь убеждать что часть все таки надо засунуть в программу.
подскажи: во время выполнения программы можно оперативно переключатся в мече с автоматического контроля высоты на ручной и обратно.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

Алекс писал(а):гибко тогда когда ты же чертишь ты же создаешь раскрой ты же вырезаешь.
Чертят одни. Приносят чертеж. Загоняешь чертеж в программу возле станка и делаешь УП. Именно в САМ программе задаешь ширину реза если расходники меняешь.
Алекс писал(а):если честно ты меня начинаешь убеждать что часть все таки надо засунуть в программу.
на своей плазме несколько лет режу, потому знаю.
Алекс писал(а):подскажи: во время выполнения программы можно оперативно переключатся в мече с автоматического контроля высоты на ручной и обратно.
Ручного если нет нужно завести сигнал на ЛПТ по логической ИЛИ от кнопок. ТНС включаешь/выключаешь.
Пробовал эмулировать сигналы ТНС клавой Мач чудеса творит - чем больше жмешь на клаву тем хуже сбиваются координаты
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

вот как и обещал файлик постпроцессора Pronest для масн3. заталкивать его надо в папку C:\Program Files (x86)\MTC\CFF :)
затем его надо выбрать в настройка по умолчанию стоит бурновский пр-ор
Вложения
Mach3 NO Z test.zip
(7.6 КБ) 954 скачивания
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

и еще один :D
Вложения
GoodMach.zip
(2.66 КБ) 830 скачиваний
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

nkp писал(а):тут под мач наткнулся на пост:
(для просмотра содержимого нажмите на ссылку)

а еще заметил директорию для макросов
так что даже и макросом еще до пп можно добавлять функционал
только тоскливо как то под венду и в платной программке это делать
тогда уж в шиткаме дописывать ...))))
это похоже тоже самое что я выложил в первом файле
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

G41K2.
F6000
M98 P2
M03 M1003
G01Y12.7
Y100..

вот в третьей строчке стоит М1003 может кто сказать что она обозначает, что то я не найду про нее ни чего
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

Алекс писал(а):вот в третьей строчке стоит М1003 может кто сказать что она обозначает, что то я не найду про нее ни чего
Это не стандартный М код может что угодно делать(компрессор отключать, вытяжку и тд..). Нужно искать по названию постпроцессора станок и на него описание или проще забить :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

эту программу создал пронест с постпроцессором масн3 который я выкинул выше (GoodMach.zip)
такой код М1003 просто создался в уп и мачь его сразу понимает или его надо еще прописывать в макросах
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

Алекс писал(а): М1003 просто создался в уп и мачь его сразу понимает или его надо еще прописывать в макросах
ему пофиг должно быть :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

aftaev писал(а):Все это делается в макросе М03
Как пишутся макросы описывал здесь http://www.chipmaker.ru/topic/74794/pag ... p__1433442
собственно сам макрос http://www.chipmaker.ru/topic/74794/pag ... p__1227049 (малость нужно будет переделать под свои нужды)
сделал все как написанно, мачь при выполнении кода м3 пишет ошибка макроса(внизу рядом с кнопкой E-stop)
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Mach3 плазма

Сообщение aftaev »

коментриуй код макроса снизу вверх пока ошибка не пропадет. Нужно понять на какой строчке глючит.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
RUSland
Новичок
Сообщения: 2
Зарегистрирован: 11 мар 2013, 14:42
Репутация: 0
Контактная информация:

Re: Mach3 плазма

Сообщение RUSland »

Всем привет! Помогите пожалуйста, мач не включает горелку, оси ездят и просто режут воздух.
RUSland
Новичок
Сообщения: 2
Зарегистрирован: 11 мар 2013, 14:42
Репутация: 0
Контактная информация:

Re: Mach3 плазма

Сообщение RUSland »

с горелкой я разобрался, теперь все нормально. но кто мне может сказать, где настроить в мач 3 опускание и поднимание оси Z (пневмоцилиндр).
Алекс
Кандидат
Сообщения: 69
Зарегистрирован: 26 авг 2011, 13:48
Репутация: 1
Контактная информация:

Re: Mach3 плазма

Сообщение Алекс »

Алекс писал(а):сделал все как написанно, мачь при выполнении кода м3 пишет ошибка макроса(внизу рядом с кнопкой E-stop)
Алекс
Кандидат
 
Сообщения: 64
Зарегистрирован: 26 авг 2011, 14:48
Вернуться к началу
Re: Mach3 плазма
#37 aftaev » 09 мар 2013, 14:15

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

Вернуться в «Windows / Mach»