Net als bij vele andere zaken bij de CNC heeft ook het maken van een eerste macro en het leren van wat GCODE een vrij steile leercurve voor mij. Maar goed, met de hoeveelheid kennis en adviezen op dit forum kan je er lustig op loslezen en zoeken en ben ik er volgens mij wel redelijk uitgekomen.
Hieronder mijn macro voor het vlakfrezen, waarbij ik zoveel mogelijk van de tips en aanwijzingen uit dit draadje heb meegenomen. In de simulatie modus van Eding draait alles prima, maar ik moet hem morgen in de schuur nog IRL uitproberen.
Voor op- en aanmerkingen en verbeteringen houd ik mij warm aanbevolen
Oh ja, standaard disclaimer heb ik gelezen, gebruik voor eigen risico,...
Code: Selecteer alles
;***************************************************************************************
;**************** FACING MACRO **********************************************************
;***************************************************************************************
SUB FACING
;---------------------------------------------------------------------------------------
GOSUB DIALOGUE_FACING
GOSUB DLG_CHECK
GOSUB RUN_FACING
M2
ENDSUB
SUB DIALOGUE_FACING
; PARAMETERS
; #1101 = X_LENGTH
; #1102 = Y_LENGTH
; #1005 = Z_SAFE
; #1209 = MILL_DIAMETER
; #1203 = STEPOVER
; #1103 = FACING_DEPTH
; #1206 = SPINDLESPEED
; #1207 = FEED
; #1998 = MILL X_DIRECTION (1=TRUE, 0=FALSE)
; #1999 = MILL Y_DIRECTION (1=TRUE, 0=FALSE)
#1206 = [#5394] ; Preselected Spindlespeed as Max RPM Spindle
DLGMSG"FACING PARAMETERS - TOP OF STOCK IS Z0 - 1=TRUE, 0=FALSE" "X_LENGTH" 1101 "Y_LENGTH" 1102 "Z_SAFE" 1005 "MILL_DIAMETER" 1209 "STEPOVER" 1203 "FACING_DEPTH" 1103 "SPINDLE_SPEED" 1206 "FEED" 1207 "MILL_X" 1998 "MILL_Y" 1999
ENDSUB
SUB RUN_FACING
; PARAMETERS
; #1101 = X_LENGTH
; #1102 = Y_LENGTH
; #1005 = Z_SAFE
; #1209 = MILL_DIAMETER
; #1203 = STEPOVER
; #1103 = FACING_DEPTH
; #1206 = SPINDLESPEED
; #1207 = FEED
; #1998 = MILL X_DIRECTION (1=TRUE, 0=FALSE)
; #1999 = MILL Y_DIRECTION (1=TRUE, 0=FALSE)
; #300 = incremental X+ mill direction counter
; #301 = incremental X- mill direction counter
; #302 = incremental Y+ mill direcion counter
; #303 = incremental Y- mill direcion counter
IF [#1203>#1209] ;CHECK IF STEPOVER IS LARGER THEN MILL_DIAMETER
DLGMSG "STEPOVER IS LARGER THEN MILL_DIAMETER"
GOSUB DLG_CHECK
GOSUB FACING
ENDIF
IF [#1998==1 AND #1999==1]
DLGMSG "SELECT EITHER X OR Y DIRECTION"
GOSUB DLG_CHECK
GOSUB FACING
ENDIF
IF [#1998==1]
MSG"Milling in X-direction" ; MILLING IN X-DIRECTION
#300 = 0 ; Set incremental X+ mill direction counter to 0
#301 = #1203 ; Set incremental X- mill direction counter to stepover value
G0 Z[#1005] ; Move to Z_Safe
G0 X0 Y0 ; Move to X0 Y0
M3 S[#1206] ; Start spindle at chosen RPM
G1 Z[#1103] F100 ; go down to facingdepth
WHILE [#300 <= #1102]
G1 X[#1101] F[#1207] ; mill line from 0 to x_length in X+ direction
G3 Y[#301] J[#1203/2] ; Counterclockwise turn to make return pass in X- direction
G1 X0 ; mill line from x_length to 0 in X- direction
IF [#301 <= #1102] ; If y_length was not reached on the return pass in X- direction
G2 Y[#301 + #1203] J[#1203/2] ; Clockwise turn to make one more X+ and X- direction pass
#300 = [#300 + 2*#1203] ; set y value for x+ direction
#301 = [#301 + 2*#1203] ; set y value for x- direction
ELSE
#300 = [#300 + 2*#1203] ; set y value for x+ direction
#301 = [#301 + 2*#1203] ; set y value for x- direction
ENDIF
ENDWHILE
M30
ENDIF
IF [#1999==1]
MSG"Milling in Y-direction" ; MILLING IN Y-DIRECTION
#302 = 0 ; Set incremental Y+ mill direction counter to 0
#303 = #1203 ; Set incremental Y- mill direction counter to stepover value
G0 Z[#1005] ; Move to Z_Safe
G0 X0 Y0 ; Move to X0 Y0
M3 S[#1206] ; Start spindle at chosen RPM
G1 Z[#1103] F100 ; go down to facingdepth
WHILE [#302 <= #1101]
G1 Y[#1102] F[#1207] ; mill line from 0 to y_length in Y+ direction
G2 X[#303] I[#1203/2] ; Counterclockwise turn to make return pass in Y- direction
G1 Y0 ; mill line from y_length to 0 in Y- direction
IF [#303 <= #1101] ; If x_length was not reached on the return pass in Y- direction
G3 X[#303 + #1203] I[#1203/2] ; Clockwise turn to make one more Y+ and Y- direction pass
#302 = [#302 + 2*#1203] ; set x value for y+ direction
#303 = [#303 + 2*#1203] ; set x value for y- direction
ELSE
#302 = [#302 + 2*#1203] ; set x value for y+ direction
#303 = [#303 + 2*#1203] ; set x value for y- direction
ENDIF
ENDWHILE
M30
ELSE
DLGMSG "SELECT EITHER X OR Y DIRECTION"
GOSUB DLG_CHECK
GOSUB FACING
ENDIF
ENDSUB
Nog een uitbreiding zou kunnen zijn om in meerdere dieptestappen te kunnen frezen, maar voor het vlakfrezen gok ik dat dit niet snel van toepassing zal zijn. Dat wordt dan voor een volgende macro.