hey, andre.
this might be a better place to work on this rather than emailing
i had emailed you last week about my lathe PPR but figured i would warm up on something already functioning ( my milling PPR )
it is a basic 3 axis knee mill with VFD spindle
i have chatbot helping me but we cant get it all worked out
1 i would like to have a G04 with a second per 1000 rpm commanded. can be rounded up to whole seconds
chatbot got me this but it does not add the dwell in the final G code
:SPINDLE = { $SPINDLE:SPIN (M03) eob
(G04 P$SPINDLE/1000) eob ; Dwell 1 second per 1000 RPM
}
2 trying to have a basic end of cycle details
:FINISH = {
(G00 Z0.5) (M05) (M09) (M30) EOB
}
3 a basic once over if i am missing or killing something usefull
THANKS
HTML Code:TITLE: :T1 = { KmotionCNC Milling Controller } END: WORDS: :TMP = {DDDDDD.dd} :BLOCK = {"N"DDDD" "} :XAXIS = {" X"DDDDD.ddd} {" X"DDD.dddd} :YAXIS = {" Y"DDDDD.ddd} {" Y"DDD.dddd} :ZAXIS = {" Z"DDDDD.ddd} {" Z"DDD.dddd} :XARC = {" I"DDDDD.ddd} {" I"DDD.dddd} :YARC = {" J"DDDDD.ddd} {" J"DDD.dddd} :KARC = {" K"DDDDD.ddd} {" K"DDD.dddd} :DELAY = {"G04X"DDDDD.ddd} :DWELL = {"P"DDDD.ddd} :PECK = {"Q"DDDDD.ddd} {"Q"DDD.dddd} :RPLANE = {"R"DDDDD.ddd} {"R"DDD.dddd} :FEED = {" F"DDDDD.dddI} {" F"DDD.dddd} :SPIN = {"S"DDDD} :TOOL = {"T"DD} :SUBPR = {"P"DDDD} :REPEAT = {"L"DDDD} :CRC = {"D"DD} :TLC = {"H"DD} :INDEX = {"INDEX"DDD.ddd} :PROGNO = {"O"DDDDD} END: GROUPS: :G2 = { G17 G18 G19 } :G1 = { G00 G01 G02 G03 } :G8 = { G73 G74 G76 G80 G81 G82 G83 G84 G85 G86 G87 G88 G89 } :G3 = { G90 G91 } :G4 = { G94 G95 } :G5 = { G20 G21 } :G6 = { G40 G41 G42 } :G7 = { G43 G44 G49 } :G9 = { G98 G99 } :G10 = { G54 G55 G56 G57 G58 G59 } :M1 = { M00 M01 M03 M04 M05 M06 } :M2 = { M98 M99 } END: CYCLES: DRILL CANNED DRILLDWELL CANNED DEEPDRILL EXPAND NDEEP CANNED NPECK CANNED PECKDRILL EXPAND NPECK CANNED HELIX VECTOR ARC QUADRANT END: MACROS: #N = {} #L = { [RAPID ? (G01) / (G00)] } #FTYPE = { (G94) } #X = { ($X:XAXIS) } #Y = { ($Y:YAXIS) } #Z = { ($Z:ZAXIS) } #I = { $XCEN-$OLDX:XARC } #J = { $YCEN-$OLDY:YARC } #K = { $KCEN-$OLDK:KARC } #R = { ($CCLDIST:RPLANE) } #P = { if ( $CDELAY ne 0 ) then ($CDELAY:DWELL) endif } #F = { ($FPM:FEED) } #DWELL = { if ($CDELAY ne 0) then (G82) else (G81) endif } #RAPID = { SET [RAPID] = 2 } #FEED = { SET [RAPID] = 1 } #IPLANE = { if ( [CRETRACT] eq 2 ) then (G99) else (G98) endif } #CRCX = { [CUTCOM ? (G40) / (G41) / (G42)] } #CRCNOX = { [CUTCOM ? NULL / ($CRCNO:CRC) / ($CRCNO:CRC) ] } #CRC = { NULL } #CRCNO = { NULL } #Q = { (ABS($CD1):PECK) } END: RULES: :INIT = { SET $USR1 = 0 SET $USR5 = 2.5 SET $BLOCK = 1 SET $INCR = 1 SET $RAPIDFEED = 10000 ; rapid feedrate } :XPROGNO = { "%" EOB $PROGNO:PROGNO EOB } :UNITS = { #N (G20) (G17) (G90) (G40) (G49) (G80) (G94) EOB IF ([UNITS] EQ 1) THEN SET $USR2 = 0.0005 SET $PRECISION = 0.001 ELSE SET $USR2 = 0.00005 SET $PRECISION = 0.0001 ENDIF } :STOP = { UNSETALL #N (M00) EOB } :PPRINT = { #N $JOBTEXT EOB } :RETRACT = { #N (G00) #Z eob } :INSERT = { #N $JOBTEXT EOB } :GOTO = { SET $USR3 = 0 IF ((ABS($DELTAX) GE $USR2) OR (ABS($DELTAY) GE $USR2)) THEN SET $USR3 = 1 ENDIF IF (($USR3 EQ 1) OR (ABS($DELTAZ) GE $USR2)) THEN #L #CRC IF ((ABS($DELTAX) GE $USR2) OR (ABS($DELTAY) GE $USR2)) THEN $X:XAXIS $Y:YAXIS ENDIF IF (ABS($DELTAZ) GE $USR2) THEN #Z ENDIF #CRCNO #F EOB ENDIF } :GOCLW = { (G02) #CRC #X #Y #Z #I #J #CRCNO #F eob } :GOACLW = { (G03) #CRC #X #Y #Z #I #J #CRCNO #F eob } :DELAY = { $DELAY:DELAY eob } :SPINDLE = { $SPINDLE:SPIN (M03) eob (G04 P$SPINDLE/1000) eob ; Dwell 1 second per 1000 RPM } :FINISH = { (_M05) (_M09) EOB (_M30) EOB } :CLEARP = { if ($CLEARP lt $CLDIST) then ERRMSG "Clear plane is below Wsurf - DANGER" endif } END: