O9015.NC
%
O9015(COMPARISON OFFSET LENGTH TOOL AND MEASURED LENGTH TOOL )
#151=95.872(Z AXIS MUSHROOM COMPENSATOR)
#152=#20(-T- TOOL)
#153=#6(-K- OPTIONAL NUMBER CORRECTOR TOOL)
#154=#7(-D- DIAMETER TOOL)
#155=#13(-M- SPINDLE ROTATION DIRECTION)
#156=#19(-S- SPINDLE SPEED)
#157=200(MAX SPINDLE SPEED)
#158=5.(DIAMETER MEASUREMENT)
#159=1200.(1 FEED SPEED)
#160=400.(2 FEED SPEED)
#161=50.(3 FEED SPEED)
#162=-1000.(STOP Z)
#163=22(MAX COUNT TOOLS)
#164=400(MAX COUNT CORRECTORS)
#170=99(TYPE STARTUP)
IF[#4000EQ9015]THEN#170=30(MACRO NAMES MUST BE EQUIVALENT)
(---- DEFAULT ----)
IF[#153EQ#0]THEN#153=#152(DEFAULT NUMBER CORRECTOR TOOL)
IF[#155EQ#0]THEN#155=4(DEFAULT SPINDLE ROTATION DIRECTION -M-)
IF[#156EQ#0]THEN#156=50(DEFAULT SPINDLE SPEED -S-)
(---- END ----)
(---- CHECK VARIABLE ----)
IF[#152EQ#0]GOTO1201(MISSING TOOL NUMBER)
IF[#152NE[ROUND[ABS[#152]]]]GOTO1202(WRONG TOOL NUMBER)
IF[[#152LE0]OR[#152GT#163]]GOTO1203(TOOL NUMBER OUT OF RANGE)
IF[#153NE[ROUND[ABS[#153]]]]GOTO1204(WRONG CORRECTOR NUMBER)
IF[[#153LE0]OR[#153GT#164]]GOTO1205(CORRECTOR NUMBER OUT OF RANGE)
IF[[#154LT0]OR[#154GT120.]]GOTO1206(WRONG DIA TOOL)
IF[[#155NE3]AND[#155NE4]]GOTO1207(WRONG SPINDLE ROTATION DIRECTION)
IF[[#156LT0]OR[#156GT#157]]GOTO1208(WRONG SPINDLE SPEED)
(---- END ----)
(---- ADJUSTMENT FEED SPEED ----)
#183=1 (COEFFICIENT FEED SPEED)
IF[#154GE16.]THEN#183=0.9
IF[#154GE18.]THEN#183=0.8
IF[#154GE20.]THEN#183=0.7
IF[#154GE30.]THEN#183=0.6
IF[#154GE40.]THEN#183=0.5
(---- END ----)
G90G69G61G49G40G15G0
M5
G91G28Z0
G90
T#152
G65P9001(M6)
(---- CLEAN TOOL ----)
M4S1000
M7(AIR BLOW)
G4X3.
M9
G4X1.
M5
(---- END ----)
(---- MUSHROOM POSITION ----)
#171=[#5001-[#5021-#981]](X ABS COORDINATES)
#172=[#5002-[#5022-#982]](Y ABS COORDINATES)
(---- END ----)
(---- FIND MINIMAL Z POINT ----)
#180=0(SHIFT ANGLE)
IF[[#991LT#993]AND[#992LT#994]AND[#991LE#992]]THEN#180=ROUND[[90.-[90./[#991/#992]]/2]*1000]/1000(0 - 90 DEGREES)
IF[[#991LT#993]AND[#992LT#994]AND[#992LE#991]]THEN#180=ROUND[[[90./[#992/#991]]/2]*1000]/1000(0 - 90 DEGREES)
IF[[#993LT#991]AND[#992LT#994]AND[#992LE#993]]THEN#180=ROUND[[270.+90.-[90./[#992/#993]]/2]*1000]/1000(270 - 0 DEGREES)
IF[[#993LT#991]AND[#992LT#994]AND[#993LE#992]]THEN#180=ROUND[[270.+[90./[#993/#992]]/2]*1000]/1000(270 - 0 DEGREES)
IF[[#993LT#991]AND[#994LT#992]AND[#993LE#994]]THEN#180=ROUND[[180.+90.-[90./[#993/#994]]/2]*1000]/1000(180 - 270 DEGREES)
IF[[#993LT#991]AND[#994LT#992]AND[#994LE#993]]THEN#180=ROUND[[180.+[90./[#994/#993]]/2]*1000]/1000(180 - 270 DEGREES)
IF[[#991LT#993]AND[#994LT#992]AND[#994LE#991]]THEN#180=ROUND[[90.+90.-[90./[#994/#991]]/2]*1000]/1000(90 - 180 DEGREES)
IF[[#991LT#993]AND[#994LT#992]AND[#991LE#994]]THEN#180=ROUND[[90.+[90./[#991/#994]]/2]*1000]/1000(90 - 180 DEGREES)
#181=[ROUND[[COS[#180]*[#158/2+#154/2]]*1000]]/1000(SHIFT X)
#182=[ROUND[[SIN[#180]*[#158/2+#154/2]]*1000]]/1000(SHIFT Y)
(---- END ----)
IF[[#5001EQ[#171+#181]]AND[#5002EQ[#172+#182]]]GOTO10
IF[[[ABS[ABS[#5001]-ABS[#171+#181]]]LE50.]AND[[ABS[ABS[#5002]-ABS[#172+#182]]]LE50.]]GOTO10
G90G0X#171Y#172(MUSHROOM CENTER POINT)
N10
G90G0X[#171+#181]Y[#172+#182](MUSHROOM MEASUREMENT POINT)
#174=[#5003-[#5123-#162]](Z ABS NEXT POSITION)
M#155S#156(START SPINDLE)
(---- MEASUREMENT Z AXIS ----)
G90G31P1Z#174F[ROUND[#159*#183]](1 TOUCH)
G4X0.1
IF[#5003EQ#174]GOTO1209(DANGEROUS POSITION IN Z)
G91G1Z10.F#160(REBOUND)
G4X0.1
G91G31P1Z-20.F[ROUND[#160*#183]](2 TOUCH)
G91G1Z5.F#160(REBOUND)
G4X0.1
G91G31P1Z-20.F[ROUND[#161*#183]](3 TOUCH)
G4X0.1
#176=#5023-#990+#151(LEGHT TOOL)
G91G1Z3.F#160(REBOUND)
G90
M5
G91G28Z0
G90
(---- END ----)
(---- EQUATION OF PLANES ----)
#111=[#158/2+#154/2](X1)
#112=0(Y1)
#113=#992(Z1)
#121=0(X2)
#122=[#158/2+#154/2](Y2)
#123=#991(Z2)
#131=-[#158/2+#154/2](X3)
#132=0(Y3)
#133=#994(Z3)
#141=#181(X)
#142=#182(Y)
#143=[[#141-#111]*[[#122-#112]*[#133-#113]-[#123-#113]*[#132-#112]]-[#142-#112]*[[#121-#111]*[#133-#113]-[#123-#113]*[#131-#111]]]/[[#121-#111]*[#132-#112]-[#122-#112]*[#131-#111]]*[-1]+#113(Z)
(---- END ----)
(---- CHECKING LENGTH TOOL ----)
#184=#[11000+#153](OFFSET LENGTH TOOL)
#185=#176-#143(MEASUREMENT LENGTH TOOL)
#186=[#184-#185]-FIX[#184-#185](LENGTH SHIFT)
IF[#186GT1.]THEN#3000=101(LENGTH SHIFT MORE 1 MM)
IF[#186GT0.9]THEN#3000=102(LENGTH SHIFT MORE 0.9 MM)
IF[#186GT0.8]THEN#3000=103(LENGTH SHIFT MORE 0.8 MM)
IF[#186GT0.7]THEN#3000=104(LENGTH SHIFT MORE 0.7 MM)
IF[#186GT0.6]THEN#3000=105(LENGTH SHIFT MORE 0.6 MM)
IF[#186GT0.5]THEN#3000=106(LENGTH SHIFT MORE 0.5 MM)
IF[#186GT0.4]THEN#3000=107(LENGTH SHIFT MORE 0.4 MM)
IF[#186GT0.3]THEN#3000=108(LENGTH SHIFT MORE 0.3 MM)
IF[#186GT0.2]THEN#3000=109(LENGTH SHIFT MORE 0.2 MM)
IF[#186GT0.1]THEN#3000=120(LENGTH SHIFT MORE 0.1 MM)
IF[#186LT1.]THEN#3000=111(LENGTH SHIFT LESS 1 MM)
IF[#186LT0.9]THEN#3000=112(LENGTH SHIFT LESS 0.9 MM)
IF[#186LT0.8]THEN#3000=113(LENGTH SHIFT LESS 0.8 MM)
IF[#186LT0.7]THEN#3000=114(LENGTH SHIFT LESS 0.7 MM)
IF[#186LT0.6]THEN#3000=115(LENGTH SHIFT LESS 0.6 MM)
IF[#186LT0.5]THEN#3000=116(LENGTH SHIFT LESS 0.5 MM)
IF[#186LT0.4]THEN#3000=117(LENGTH SHIFT LESS 0.4 MM)
IF[#186LT0.3]THEN#3000=118(LENGTH SHIFT LESS 0.3 MM)
IF[#186LT0.2]THEN#3000=119(LENGTH SHIFT LESS 0.2 MM)
IF[#186LT0.1]THEN#3000=120(LENGTH SHIFT LESS 0.1 MM)
(---- END ----)
M#170(END PROGRAM)
(ERRORS)
N1201#3000=1(MISSING TOOL NUMBER)
N1202#3000=2(WRONG TOOL NUMBER)
N1203#3000=3(TOOL NUMBER OUT OF RANGE)
N1204#3000=4(WRONG CORRECTOR NUMBER)
N1205#3000=5(CORR. NUMBER OUT OF RANGE)
N1206#3000=6(WRONG DIA TOOL)
N1207#3000=7(WRONG SPINDLE ROTATION)
N1208#3000=8(WRONG SPINDLE SPEED)
N1209#3000=9(DANGEROUS POSITION IN Z)
%