need post processor help for dophin cam to kmotion cnc lathe

Moderators: TomKerekes, dynomotion

Post Reply
turbothis
Posts: 325
Joined: Fri Mar 15, 2019 4:07 pm
Location: southern oregon

need post processor help for dophin cam to kmotion cnc lathe

Post by turbothis » Fri Mar 15, 2024 11:21 pm

so i am needing to match up a new post processor for partsmaster/dolphing CAM to Kmotion CNC
i guess what common lathe would share the same PPR?
there is a drop down list of them to choose from

Code: Select all

T_3NE300_V11.ppr
T_802-BVDB-15-Aug-13.ppr
T_802S_BigDog-V11.ppr
T_810D-BTA-V11.ppr
T_AL20_HHAIN-V11.ppr
T_AL30_HHAIN-V11.ppr
T_AL30_SIEMENS-V11.PPR
t_anilam4200.ppr
T_BigLathe.ppr
T_BigLathe.ppx
T_BOXFRD_V11.ppr
T_CINC_FALCON-V11.ppr
T_Crus2-anembo-30-11-11.ppr
T_Crus2-anembo-30-11-11_V11.ppr
T_CRUS2L_V11.ppr
T_CTEK903_V11.ppr
T_CTEK903_V11.ppx
T_DEBUG.ppr
T_DSG_V11.ppr
T_DUMMY.PPR
T_Eagle-300-CLG-1-12-11_V11.ppr
T_Eagle-300-CLG-18-12-11_V10.ppr
T_EdingCNC_FTurret_10_Apr_15.ppr
T_EMC-14-Dec-09-V11.ppr
T_EMCO_V11.ppr
T_EMC_FTurret_V13_10Mar15.ppr
T_F0i_HOWCO_C_Jun2014.ppr
t_f0tc-expand-all-V11.ppr
T_F0tc_v11.ppr
T_F0T_V11.ppr
T_F18i_HOWCO_C_Jun2014.ppr
T_F20i_HOWCO_SH-V11.ppr
T_F21i_HOWCO_24-FEB-14.ppr
T_F21i_HOWCO_VERT_11Nov13.ppr
T_F21i_TC200-V11.ppr
T_F3TC_Armour_18_Aug2014.ppr
T_F3TC_V11.ppr
T_F5HYDR_V11.ppr
T_F6TR_V11.ppr
T_F6T_V11.ppr
t_fag800_V11.txt
T_Fagor-8055-V11.PPR
T_FEMCO_FANUC-V11.ppr
t_flashcut_lathe_v10-V11.ppr
t_flashcut_lathe_v10-V11.ppx
T_F_REVARC_VBORE-V11.ppr
T_GE1050_V11.ppr
T_GE2000_V11.ppr
T_GE550_V11.ppr
T_Haas-front-V11.ppr
T_Haas-TL1-V11-13Aug12.ppr
T_Haas_SL20-MPS_25Feb13_V11.ppr
T_Haas_SL30-V11.ppr
T_HAWK_FANUC-V11.ppr
t_hhain-V11.ppr
T_horiz1_V11.ppr
T_Hyundai_CNC_Lathe_22Aug2013.ppr
t_lx2_V11.ppr
t_lx3_V11.ppr
T_M378_V11.ppr
T_Mach3DcssT.ppr
T_Mach3DcssT.ppx
T_Mach3Rcss.ppr
T_MachLatheRadius_V11.ppr
T_MachLatheRadius_V11.ppx
T_MAXNCI_V11.ppr
T_MAXNC_V11.ppr
T_MSLT30_V11.ppr
T_New.ppr
T_New.ppx
T_OKUMA_V11.ppr
T_OLIVE_V11.ppr
T_PNC3_V11.ppr
T_S810T_V11.ppr
T_SIN3A_V11.ppr
T_Takisawa_Fanuc11T_V11_27Feb13.ppr
T_TRAUB_V11.ppr
T_Tsugami_Fanuc10T_V11_18Jan13.ppr
T_USB-CNC-V11.ppr
T_USB-CNC-V11.ppx
T_VBM-V12.ppr
T_VBORER_FANUC-V11.ppr
T_Wabeco-8-Apr-15.ppr
t_yang_17mar-V11.ppr

turbothis
Posts: 325
Joined: Fri Mar 15, 2019 4:07 pm
Location: southern oregon

Re: need post processor help for dophin cam to kmotion cnc lathe

Post by turbothis » Fri Mar 15, 2024 11:28 pm

chatbot says this is a good start with the parameters i gave it

Code: Select all

TITLE: Dolphin CAM to KMotionCNC Lathe Post Processor

VERSION:
    FILEVERSION 1.0

WORDS:
    :XAXIS = {"X"DDDDD.ddd" "}
    :ZAXIS = {"Z"DDDDD.ddd" "}
    :FEEDRATE = {"F"DDDDD.ddd" "}
    :SPINDLE_CW = {"M03 S"DDDD" "}
    :SPINDLE_CCW = {"M04 S"DDDD" "}
END:

AXES:
    XSCALE 1
    ZSCALE 1
    TURRET
END:

GROUPS:
    :G0 = {G0}
    :G1 = {G1}
    :G2 = {G2}
    :G3 = {G3}
END:

MACROS:
    #X = { $X:XAXIS }
    #Z = { $Z:ZAXIS }
    #F = { $FEEDRATE:FEEDRATE }
    #CW = { $SPINDLE_CW }
    #CCW = { $SPINDLE_CCW }
END:

RULES:
    :START = { ; Start of the program }
        (G90) ; Absolute positioning mode
        (G20) ; Inch units mode
        (G18) ; XZ plane selection
        (G96) ; Constant surface speed mode
        (G40) ; Cancel cutter radius compensation
        (G80) ; Cancel canned cycles
        (M05) ; Stop spindle
        ; Additional initialization commands can be added here
    }

    :END = { ; End of the program }
        (M05) ; Stop spindle
        (M30) ; Program end and reset
    }

    :MOVE = { ; Movement command }
        #X #Z #F
    }

    :SPINDLE_CW = { ; Spindle clockwise command }
        #CW
    }

    :SPINDLE_CCW = { ; Spindle counterclockwise command }
        #CCW
    }
END:


turbothis
Posts: 325
Joined: Fri Mar 15, 2019 4:07 pm
Location: southern oregon

Re: need post processor help for dophin cam to kmotion cnc lathe

Post by turbothis » Mon Mar 25, 2024 4:28 pm

ok, the guy at dolphin helped me and chatbot out and made a nice little post processor
i will use it over time and see if it needs more work or is just fine

Code: Select all

TITLE:
    :T1 = {
        CNC Lathe
            Kmotion CNC Radius Mode Post     
    }   
END:

VERSION:
        FILEVERSION 15.0 TURNING
END:

WORDS:
    :TMP = {DDDDDD.dd}
    :BLOCK = {"N"DDDD" "}
    :XAXIS = {" Z"DDDDD.ddd" "} {" Z"DDD.dddd" "}
    :YAXIS = {" X"DDDDD.ddd" "} {" X"DDD.dddd" "}
    :XARC = {"K"DDDDD.ddd" "} {"K"DDD.dddd" "}
    :YARC = {"I"DDDDD.ddd" "} {"I"DDD.dddd" "}
    :ARAD = {"R"DDDDD.ddd" "} {"R"DDD.dddd" "}
    :DELAY = {"G04 P"DDD" "}
    :DWELL = {"P"DDDD.dddd" "}
    :PECK = {"Q"DDDDD.ddd" "} {"Q"DDD.dddd" "}
    :NDEEP = {"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"ZDD}
    :SUBPR = {"P"DDDD" "}
    :REPEAT = {"L"DDDD" "}
    :CRC = {"D"DD" "}
    :TLC = {""ZDD" "}
    :SURF = {"S"DDDD" "}
    :SRAD = {"R"DDDD.ddI} {"R"DD.ddddI}
    :INDEX = {"INDEX"DDD.ddd" "}
    :PROGNO = {"O"DDDDD" "}
    :NUM1 = {" "DDDD.dddd" "}
    :ROT = {" "DD" "}
    :TOOLD = {DDDDD.ddd} {DDD.dddd}
    :SPDELAY =  {"G04P"DDDD}
END:

AXES:
    YSCALE      1
    XSCALE      1
    TURRET
END:

GROUPS:
    :G1 = {G00_ G01_ G02_ G03_ }
    :G2 = {G17_ G18_ G19_}
    :G3 = {G90_ G91_ }
    :G5 = {G48_ G93_ G94_ G95_ G96_ G97_}
    :G6 = {G20_ G21_}
    :G7 = {G40_ G41_ G42_}
    :G10 = {G98_ G99_}

    :M1 = {_M00 _M01 _M02}
    :M2 = {_M03 _M04 _M05}
    :M3 = {_M08 _M09}
    
END:

CYCLES:
    NPECK       EXPAND
    NDEEP       EXPAND
    TURN        EXPAND
    FACE        EXPAND
    THREAD      EXPAND
END:

MACROS:
    #N = { NULL }
    #L = { [RAPID ? (G01_) / (G00_)]  }
    #FTYPE = { [FEEDTYPE ? (G94_) / (G95_) ] }
    #X = { $X:XAXIS }
    #Y = { $Y:YAXIS }
    #I = { $XCEN:XARC }
    #K = { $YCEN:YARC }
    #AR = { $ARCRAD:ARAD }
    #R = { ($CCLDIST:RPLANE) }
    #P = { IF ($CDELAY NE 0) THEN ($CDELAY:DWELL) ENDIF }
    #F = { [RAPID ? [FEEDTYPE ? ($FPM:FEED) / ($FPR:FEED)] ] }
    #DWELL = { IF ($CDELAY NE 0) THEN (G82_) ELSE (G81_) ENDIF }
    #RAPID = { SET [RAPID] = 2 }
    #FEED = { SET [RAPID] = 1 }
    #SPIN =  { ($SPINDLE:SPIN) [SPIN ? (M05_) / (M03_) / (M04_) ] }
    #RPM =     { ($SPINDLE:SPIN) }
    #GCLW = {
        IF ($USR11 EQ 0) THEN
            (G02_)
        ELSE
            (G03_)
        ENDIF
    }
    #GACLW = {
        IF ($USR11 EQ 0) THEN
            (G03_)
        ELSE
            (G02_)
        ENDIF
    }
    #IPLANE = {
        IF ([CRETRACT] EQ 2) THEN
            (G99_)
        ELSE
            (G98_)
        ENDIF
    }

    #CRC = {
        ; Only output G41/G42 if part surface is requested (PSPROG=2) which means the CNC
        ;  has to offset the tool
        IF ([PSPROG] EQ 2) THEN
            [CUTCOM ? (G40_) / (G41_) / (G42_) ]
        ENDIF
    }

    #CRCNO = { 
        IF ([PSPROG] EQ 2) THEN
            ($CRCNO:CRC)
        ENDIF
    }

    #Q = { ABS($CDEPTH/$CNDEPTH):NDEEP }

    #Q = { ABS($CDEPTH/$CNDEPTH):NPECK }

    #UNSET = {
        IF ((ABS($DELTAX) LT $USR8) AND (ABS($DELTAY) LT $USR8)) THEN
            UNSETALL
        ENDIF
    }

END:

RULES:

    :INIT = {
        set $RAPIDFEED = 100     ; rapid feedrate
	SET $USR2 = 0	; ITINERANT
	SET $USR3 = 0	; DENOTES 2ND OR SUBSEQUENT TOOL
        SET $USR11 = 1 ; Set to 1 if Proturn Arcs to be negated (dependant on tool)
        SET $USR12 = 0 ; set for Arc direction fix for FRONT turret and TURN cycles.
        SET $USR13 = 1.0 ; SCALE FACTOR TO COMPENSATE FOR ANGLES BEING WRONGLY SCALED IN INCH.
        SET $USR14 = 0.0
    }

    :START = {
        ; start with N10, increment in 1s
        SET $BLOCK = 1
        set $INCR = 1
    }

    :ORIGIN = {
        ;#N (G92_) $ORIGINY:YAXIS $ORIGINX:XAXIS EOB
                ;unset :XAXIS
        ;unset :YAXIS
    }

    

    :RETRACT = { #N #L #Y #X EOB }





    :UNITS = {
        ; G20/G21 = Inch/MM units
        ; G18 = XZ Plane
        ; G80 = Cancel modal motion (deactivates all move modalities)
        ; G90 = Absolute mode (G91 = Incremental mode)
        

        #N (G18_) [UNITS ? (G21_) / (G20_)]  (G80_) (G90_) EOB

        ; KAA - changed order to default IN so that the set is not needed 2x for each IN
        ; Sets MIN change in move for a program block to be written
        SET $USR8 = 0.00005        ; default IN scale
        set $usr13 = 25.4

        IF ([UNITS] EQ 1) THEN
            SET $USR8 = 0.0005    ; set MM scale
            SET $USR13 = 1.0
        ENDIF        
    }

    
    :CUTCOM = {
            IF (0 NE 0) THEN
            ; Only output G41/G42 if part surface is requested (PSPROG=2) which means the CNC
            ;  has to offset the tool
            IF ([PSPROG] EQ 2) THEN
                [CUTCOM ? (G40_) / (G41_) / (G42_) ]
            ELSE
                (G40_)
            ENDIF

            #CRCNO EOB
        ENDIF
    }

    :GOTO = 
        {
        NULL ; "DISTANCE : " $DISTANCE:NUM1 EOB
        IF ($DISTANCE GE $USR8) THEN
            #N #CRC #CRCNO EOB
            #N #L #Y #X #F EOB
        ENDIF
        }

    :GOCLW = {
        #UNSET
        IF (([PSPROG] NE 2) OR ([CUTCOM] LT 2)) THEN
            #N #CRC EOB
            #N #GCLW #Y #X #AR #F EOB
        ELSE
            #N #CRC #CRCNO EOB
            #N #GCLW #Y #X #AR #F EOB
        ENDIF
    }

    :GOACLW = {
        #UNSET
        IF (([PSPROG] NE 2) OR ([CUTCOM] LT 2)) THEN
            #N #CRC EOB
            #N #GACLW #Y #X #AR #F EOB
        ELSE
            #N #CRC #CRCNO EOB
            #N #GACLW #Y #X #AR #F EOB
        ENDIF
    }

    :DELAY = { #N $DELAY:SPDELAY EOB }


    :SCREWING = {   #N "G32 " #Y #X #F EOB
        UNSET (G5)
        UNSET :FEED
    }


:SELCTL = 
{ 
UNSETALL
IF ($USR3 EQ 1) THEN
	#N (_M05) (_M09) EOB
	#N (_M00) EOB
	" " EOB
	" " EOB
ENDIF
SET $USR3 = 1
}


:SPINDLE = 
{
#N #FTYPE EOB
#N #RPM [SPIN ? (_M05) / (_M03) / (_M04) ]  EOB
SET $USR2 = $SPINDLE / 1000.0
IF ($USR2 LT 1) THEN
    SET $USR2 = 1
ELSE
    SET $USR2 = $USR2 + 0.999  ; Adding just under 1 to make sure we increment by 1 at every 1000 RPM step
    SET $USR2 = INT($USR2)     ; Convert to an integer, effectively achieving the ceiling effect
ENDIF
#N ($USR2:SPDELAY) EOB
" " EOB
" " EOB
}


    :FINISH = 
{
UNSETALL
#N (_M05) (_M09) EOB
#N (_M30) EOB " " EOB
}
END:

Post Reply