hello i would like to share my latest thoughts on this :
1) attached excel file+images help computing start diameters, in such a way that interference are omited, thus being sure that groove tool will start cutting smooth ( no stress on 1st cut );
2) carefull with lube setting for such operations; you may consider :
...... reducing off timer #2
...... also :
Originally Posted by
OkumaWiz
You should check #3 on this page in order to reduce the amount of lube you use. This will enable lubing the axis only when the axis are moving rather than all the time - even when parked and not running a program
3) check droop value for X axis; program shared in this post activates droop only when X axis is positioned for the cut; how cutting depth ( radial ) is equal with a few hundreds, it may help considering droop control; otherwise, remove G64 and G65 from the code, and maybe consider repeating last pass if clearance is low and feed is high
4) about the program :
Code:
( main values ) V1 = 41.2 ( start diameter ) ( for internal grooves : V1 < V2 )
V2 = 59.38 ( end ... ... ) ( for external grooves : V1 > V2 )
V3 = 0.03 ( radial cut depth ) ( >0 )
V4 = 10 ( how many grooves )
V5 = 5 ( Z start ) ( Z start > Z end )
V6 = -73 ( Z end )
V7 = 9 ( turret post )
V8 = 0.6 ( X axis disengage; input 0 to return @ start diameter ) ( >=0 )
...... allows cutting od or id grooves;
......... for internal grooves : start diameter < end diameter ( V1 < V2 )
......... for external grooves : start diameter > end diameter ( V1 > V2 )
...... a variable ( V3 ) will be initialized with desired radial cutting depth ( =t ) ; if |end_dia-start_dia|/2 is not a multiply of "t", than "t" is recalculated in such a manner, that new_value is never higher than desired value ( new_t <= t )
...... simply declare the turret post used ( V7 ); is not needed to change tool corection inside the program
...... V8 delivers custom behaviour for retreat path :
......... if V8=0 than tool will always retreat at X=start diameter, avoiding tool friction during retreat movement
......... if V8>0 than tool will always retreat at X=X_cut±V8
............ if V8>0 and V1 < V2, tool will always go X- after the cut
............ if V8>0 and V1 > V2, tool will always go X+ after the cut
............... thus V8 represent the clearance in absolute value; if it is zero, than tool will always return at start diameter
............... i input this option after remembering this reply from mr Wizard :
Originally Posted by
OkumaWiz
It may also be a good idea to move back toward centerline so that the insert is not dragging on the way back out. Carbide doesn't like that very well
Code:
( auxiliar values ) V9 = 1 ( groove to begin with ) ( default = 1 )
V10 = 0 ( angular shift ) ( default = 0 )
this ones allow more control :
... V9 is self explanatory : for example if something happened at an intermediate groove, you may simply change the insert and continue the program from the next groove, without changing C_zero
... V10 inputs same behaviour as editing C_zero : it shifts the grooves position with a specific angle; how the program crafts all angles inside a 360arch, thus a polygon inside a circle, this may help alligning the grooves with whatever geometry you consider
default values for these variables are written in paranthesys
also some infos are written after programs end ( like a delay after M147 )
Code:
OS01 ( broaching internal / external grooves ) ( some infos @ bottom )
( main values ) V1 = 41.2 ( start diameter ) ( for internal grooves : V1 < V2 )
V2 = 59.38 ( end ... ... ) ( for external grooves : V1 > V2 )
V3 = 0.03 ( radial cut depth ) ( >0 )
V4 = 10 ( how many grooves )
V5 = 5 ( Z start ) ( Z start > Z end )
V6 = -73 ( Z end )
V7 = 9 ( turret post )
V8 = 0.6 ( X axis disengage; input 0 to return @ start diameter ) ( >=0 )
( auxiliar values ) V9 = 1 ( groove to begin with ) ( default = 1 )
V10 = 0 ( angular shift ) ( default = 0 )
( * )
( G270 ) (*1)
G00 X+LVXP-VETFX Z150-VETFZ
M110 T+V7*101 M66 M08 M808 G94
V6 = V5 - V6 ( full travel )
IF [ [ [ V8 GT 0 ] AND [ V1 GT V2 ] ] EQ 1 ] NJUMP
V8 = -V8 ( adjust sign for X disengage )
NJUMP
V11 = DROUND [ ABS [ V2 - V1 ] / [ 2 * V3 ] ] ( nr of passes : with 3 digits )
V11 = FUP [ V11 ] ( nr of passes : natural )
V12 = [ V2 - V1 ] / V11 ( diameter cut depth )
V13 = V9 - 1
NINCC V13=V13+1 G65
G00 X+V1+V12 Z+V5 C+MOD[V10+360/V4*[V13-1],360]
M147 G64
G04 F1 (*2)
V15=0 G01 F123.456
IF [ V8 EQ 0 ] NINCX2
G91
(*3) NINCX1 Z-V6 F5000 ( Z- : cut )
X+V8 F50 ( X disengage )
Z+V6 F5000 ( Z+ : back @ clearance )
V15=V15+1
IF [ V15 EQ V11 ] NGOOUT
G65 ( droop on )
X+V12-V8 F50 ( X for next pass at small ipw )
G64 ( droop off )
IF [ V15 LT V11 ] NINCX1 ( increment X axis, version 1 )
NINCX2 Z+V5-V6 F5000 ( Z- : cut )
X+V1 F6500 ( X disengage )
Z+V5 ( Z+ : back @ clearance )
V15=V15+1
IF [ V15 EQ V11 ] NGOOUT
X+V1+V12*[V15+1] G65 ( X for next pass + droop on )
X+VSIOX F50 ( repeat X to assure small ipw )
G64 ( droop off )
IF [ V15 LT V11 ] NINCX2 ( increment X axis, version 2 )
NGOOUT M146 G90
IF [ V13 LT V4 ] NINCC ( increment C axis )
G00 X+LVXP-VETFX Z150-VETFZ M807 M109
RTS ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )
( adjust linear speeds with caution )
( do not exceed maximum rapids when tool is going back to Z start, even if movement is in feed )
( consider a limit, like rapids * 50% for example )
(*1)
( unblock G270 to prevent possible errors when program begins )
(*2)
( delay, so the breaking mechanism will fully engage )
(*3)
( NINCX1 : is executed when X disengagement is always constant, thus return movements are paralel )
( NINCX2 : ... ... ... ... ... ... ... ... ... not constant, ... ... ... ... ... ... coaxial )
program is called from the headquarters :
Code:
( intro )
( VSZOZ = ... + 0 )
( VSZOC = ... + 0 )
G50 S1900
M867 ( cas : off )
M216 ( rapid ignore : on )
LVXP = VPVLX - VBZOX
( main )
CALL OS01
( outro )
( M84 )
( G195 SP=1 )
( M215 ) ( rapid ignore : off )
M866 ( cas : on )
M02
optimized to the teeth kindly !