(C-AXIS SINEWAVE ON FACE REV A0
(WRITTEN 6/15/2020 BY MARTIN L. HOPPE JR
(GENERAL PART INFORMATION
#1=20 (NUMBER OF SINEWAVES
#2=0.300 (SINEWAVE AMPLITUDE
#3=12.0 (PATTERN START, X -- BEGIN SLIGHTLY OUTSIDE THE EDGE OF THE PART
#4=3.00 (PATTERN END, X -- END SLIGHTLY PAST THE EDGE OF THE PART
#5=1.0 (C-AXIS INCREMENT - MUST DIVIDE EVENLY INTO 360 DEGREES
#6=0.10 (MM/REV, X_AXIS
(SPINDLE RAMP_UP
#504 = 10.0 (NUMBER OF REVOLUTIONS TO REACH DESIRED RPM
#505 = 100.00 (FEEDRATE OVERRIDE PERCENTAGE
#506 = 0.020 (INITIAL FEEDRATE -- MUST BE IN INCREMENTS OF 0.001 SECONDS
#507 = 0.008 (FINAL FEEDRATE -- MUST BE IN INCREMENTS OF 0.001 SECONDS
#517 = 5.0 (INITIAL Z POSITION TO BEGIN RAMP_UP
(SPINDLE RAMP_DOWN
#104 = 10.0 (NUMBER OF REVOLUTIONS TO REACH DESIRED RPM
#105 = 100.00 (FEEDRATE OVERRIDE PERCENTAGE
#106 = #507 (INITIAL FEEDRATE -- MUST BE IN INCREMENTS OF 0.001 SECONDS
#107 = 0.020 (FINAL FEEDRATE -- MUST BE IN INCREMENTS OF 0.001 SECONDS
#117 = 5.0 (FINAL Z POSITION
#20=0 (C-AXIS COUNTER
#21=0 (Z_AXIS POSITION
#30=0 (REVOLUTIONS COUNTER
#32=FUP[[#3-#4]/#6]
#33=#4+#6*#32
#34=#6/360*#5
T0101
G90 G18 G71 G40 G94 G97 G54
((X#33 Z5 C0 Y0 (HERE FOR NCPLOT ONLY -- CAN SAFELY IGNORE
G53 Z0
G52 X0 Y0 Z0 B0 C0
M80
G01 C0.0
G92 C0.0
(SPINDLE RAMP_UP
#502 = #517 (INITIAL Z POSITION
#503 = #20 (INITIAL C POSITION
#506=#506*#5
#507=#507*#5
#515 = ROUND[[#506-#507]*1000] (FEEDRATE RANGE, CONVERTED TO WHOLE NUMBERS
G01 X[#33] Z[#502+9] C[#503] F500
X[#33] Z[#502] F100
G93 F#506
#508 = 0 (C-AXIS COUNTER
#510 = #504*360 (DEGREES OVER WHICH TO RAMP UP THE SPINDLE TO THE PROGRAMMED RPM
#511 = #515 / #510 (FEEDRATE INCREMENT PER DEGREE
#512 = ROUND[#506 *1000 - FUP[#511]] / 1000 (FEEDRATE CONVERTED TO MILLSECONDS
#513 = 0
While [#508 LT #510]DO1 (LOOP TO RAMP THE SPINDLE UP TO THE DESIRED VELOCITY
C[[#503-#508+360*#514]MOD[360]] Z[#502] F#512
#508 = #508 + #5
#512 = ROUND[#506*1000 - FUP[#511 * #508]] / 1000
#513 = #513+#5 (CURRENT ANGULAR POSITION -- NOT NORMALIZED TO 360 DEGREES
#514 = #513MOD[360] (NORMALIZED ANGULAR POSITION
#502 = #502-[#517/#510]
END1
C[#503]
(SINEWAVE MACHINING
WHILE[#30LT#32]DO1
WHILE[#20LT360]DO2
#21=COS[#1*#20]*#2-#2
X[#33] Z[#21] C[#20]
#20=#20+#5
#33=#33-#34
END2
#20=0
#30=#30+1
END1
#21=COS[#1*#20]*#2-#2
X[#33] Z[#21] C[#20]
(SPINDLE RAMP_DOWN
#101 = #33 (INITIAL X POSITION
#102 = #21 (INITIAL Z POSITION
#103 = #20 (INITIAL C POSITION
#106=#106*#5
#107=#107*#5
#115 = ROUND[[#106-#107]*1000] (FEEDRATE RANGE, CONVERTED TO WHOLE NUMBERS
(G01 X[#101] C[#103] F90
(Z[#102]
(G93 F#106
#108 = 0 (C-AXIS COUNTER
#110 = #104*360 (DEGREES OVER WHICH TO RAMP UP THE SPINDLE TO THE PROGRAMMED RPM
#111 = #115 / #110 (FEEDRATE INCREMENT PER DEGREE
#112 = ROUND[#106 *1000 - FUP[#111]] / 1000 (FEEDRATE CONVERTED TO MILLSECONDS
#113 = 0
While [#108 LT #110]DO1 (LOOP TO RAMP THE SPINDLE UP TO THE DESIRED VELOCITY
C[[#103-#108+360*#114]MOD[360]] Z[#102] F#112
#108 = #108 + #5
#112 = ROUND[#106*1000 - FUP[#111 * #108]] / 1000
#113 = #113+#5 (CURRENT ANGULAR POSITION -- NOT NORMALIZED TO 360 DEGREES
#114 = #113MOD[360] (NORMALIZED ANGULAR POSITION
#102 = #102+[#117/#110]
END1
C[#103] Z[#102]
G94
M29
G53 Z0
M79
M30