O9021.NC
%
O9021(FIND CENTER OF MUSHROOM)
#150=10.(DIAMETR TOOL)
#151=30.(DIAMETR MUSHROOM)
#152=15.(DIAMETR MEASURMENT)
#153=5.(HEIGNH MUSHROOM)
#154=2.(LEGHT OVERRUN)
#155=500.(FAST FEED SPEED)
#156=300.(FEED SPEED)
#157=40.(WORK FEED SPEED)
#158=5.(MAX LEGHT SHIFT)
#159=1.(STEP SHIFT)
#160=99(TYPE STARTUP)
IF[#4000EQ9021]THEN#160=30(MACRO NAMES MUST BE EQUIVALENT)
(---- CURRENT POSITION ----)
#161=#5001(X ABS COORDINATES)
#162=#5002(Y ABS COORDINATES)
#163=#5003(Z ABS COORDINATES)
(---- END ----)
(---- MEASURMENT Z AXIS ----)
G90G31P1Z[#163-30.]F#156(1 TOUCH)
G4X0.1
IF[#5003EQ[#163-30.]]GOTO1202(MUSHROOM NOT FOUND)
G91G1Z2.F#156(REBOUND)
G4X0.1
G91G31P1Z-3.F#157(2 TOUCH)
G4X0.1
#171=#5023(Z MACHINE)
#163=#5003(Z MACHINE)
G91G1Z2.F#156(REBOUND)
G4X0.1
(---- END ----)
(---- MEASURMENT X AXIS ----)
(X+ TOUCH)
G91G1X[#151/2+#150/2+#154]F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
WHILE[[#5003NE[#163-#153]]AND[#5001LE[#161+#158+#151/2+#150/2+#154]]]DO1
G90G1Z[#163+2.]F#156(REBOUND)
G91G1X#159F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
END1
IF[#5003NE[#163-#153]]GOTO1201(WRONG DIAMETR)
G91G31P1X-20.F#156(1 TOUCH)
G4X0.1
G91G1X2.F#156(REBOUND)
G91G31P1X-3.F#157(2 TOUCH)
G4X0.1
#172=#5021(+X POSITION)
G91G1X1.F#156(REBOUND)
G90G1Z[#163+2.]F#156(REBOUND)
G90G1X#161Y#162F#155
(X- TOUCH)
G91G1X[-[#151/2+#150/2+#154]]F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
WHILE[[#5003NE[#163-#153]]AND[#5001GE[#161-#158-#151/2-#150/2-#154]]]DO1
G90G1Z[#163+2.]F#156(REBOUND)
G91G1X-#159F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
END1
IF[#5003NE[#163-#153]]GOTO1201(WRONG DIAMETR)
G91G31P1X20.F#156(1 TOUCH)
G4X0.1
G91G1X-2.F#156(REBOUND)
G91G31P1X3.F#157(2 TOUCH)
G4X0.1
#173=#5021(+X POSITION)
G91G1X-1.F#156(REBOUND)
G90G1Z[#163+2.]F#156(REBOUND)
G90G1X#161Y#162F#155
(---- END ----)
(---- MEASURMENT Y AXIS ----)
(Y+ TOUCH)
G91G1Y[#151/2+#150/2+#154]F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
WHILE[[#5003NE[#163-#153]]AND[#5002LE[#162+#158+#151/2+#150/2+#154]]]DO1
G90G1Z[#163+2.]F#156(REBOUND)
G91G1Y#159F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
END1
IF[#5003NE[#163-#153]]GOTO1201(WRONG DIAMETR)
G91G31P1Y-20.F#156(1 TOUCH)
G4X0.1
G91G1Y2.F#156(REBOUND)
G91G31P1Y-3.F#157(2 TOUCH)
G4X0.1
#174=#5022(+X POSITION)
G91G1Y1.F#156(REBOUND)
G90G1Z[#163+2.]F#156(REBOUND)
G90G1X#161Y#162F#155
(Y- TOUCH)
G91G1Y[-[#151/2+#150/2+#154]]F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
WHILE[[#5003NE[#163-#153]]AND[#5002GE[#162-#158-#151/2-#150/2-#154]]]DO1
G90G1Z[#163+2.]F#156(REBOUND)
G91G1Y-#159F#155
G90G31P1Z[#163-#153]F#157(CHECK TOUCH)
G4X0.1
END1
IF[#5003NE[#163-#153]]GOTO1201(WRONG DIAMETR)
G91G31P1Y20.F#156(1 TOUCH)
G4X0.1
G91G1Y-2.F#156(REBOUND)
G91G31P1Y3.F#157(2 TOUCH)
G4X0.1
#175=#5022(+X POSITION)
G91G1Y-1.F#156(REBOUND)
G90G1Z[#163+2.]F#156(REBOUND)
G90G1X[#5001-[#5021-[[#172+#173]/2]]]Y[#5002-[#5022-[[#174+#175]/2]]]F#156
(---- END ----)
(---- OUTPUT ----)
#981=[[#172+#173]/2](X CENTER)
#982=[[#174+#175]/2](Y CENTER)
#983=#171(Z POZITION)
(---- END ----)
G4X0.5
M#160(END PROGRAM)
(ERRORS)
N1201#3000=1(WRONG DIA TOOL OR MUSHROOM)
N1202#3000=2(MUSHROOM NOT FOUND)
%