diff --git a/LatheMacro.svg b/LatheMacro.svg
index ed0e517555cb52d87071f3aacd463462ab773c4e..ec05a6646223dfd6884f0164178d919aae69efe2 100644
--- a/LatheMacro.svg
+++ b/LatheMacro.svg
@@ -14,7 +14,7 @@
viewBox="0 0 888 686.00002"
height="686"
width="888"
- inkscape:version="0.92.0 r15299"
+ inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="LatheMacro.svg">
+ inkscape:current-layer="layer1" />
Diamater
+ y="496.31708">Diameter
+ y="544.03821" />
- Zero
-
+ y="584.57452" />
Feed
-
-
sub
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G8 ; Lathe radius Mode
+G90 ; Absolute Distance
+G91.1 ; but not for arcs
+
+; #1 X coord
+; #2 surface speed
+; #3 cut size
+; #4 feed/rpm
+; #5 Z coord
+; #6 radius
+; #7 angle
+; #8 tool number
+; #9 coolant
+
+ O10 if [#9 EQ 1]
+ M8
+ O10 endif
+
+;M6 T#8 G43
+ O100 if [#8 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#1 = [#1 / 2] ; because of radius mode
+
+#14 = [#<_x>] (startinG X)
+#13 = #<_z> (startinG Z)
+
+#20 = [#6 * SIN[#7]]
+#21 = [-#6 * COS[#7]]
+#22 = [#6 / COS[#7]]
+#23 = [#5 + #6 - #20]
+#24 = [[#23 - #13] * TAN[#7]]
+
+G96 D2500 S#2 ; Constant Surface Speed Mode
+M3 ;Start Spindle
+G95 F#4 ; Feed-Per-Rev Mode
+G4P1 ; Wait to reach speed
+
+(debuG, TurninG finish dia #1 start dia #14 start lenGth #13 finish lenGth #5)
+ O101 WHILE [#14 LT [#1 - #3]]
+ G0 X #14
+ #14=[#14 + #3]
+ G1 X #14
+ G1 Z #23 X[#14 + #24]
+
+ o102 IF [#6 GT 0]
+ G3 Z#5 X[#14 + #24 + #21] I#21 K#20
+ G1 X[#14 + #24 + #21 - #3]
+ o102 ELSE
+ G1 X[#14 + #24 - [#3 * 1.5]]
+ o102 ENDIF
+
+ G0 Z[#13]
+ O101 ENDWHILE
+
+G0 X#1
+G1 Z#23 X[#1 + #24]
+
+ O103 IF [#6 GT 0]
+ G3 Z#5 X[#1 + #24 + #21] I#21 K#20
+ G1 X[#1 + #24 + #21 - #3]
+ O103 ELSE
+ G1 X[#1 + #24 - #3]
+ O103 ENDIF
+
+G0 Z#13
+G0 X#1 ; For touch-off
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacro-bak/chamfer.ngc b/lathemacro-bak/chamfer.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..9069fe39ddebafddc9a9188bbc3378df3e0fc025
--- /dev/null
+++ b/lathemacro-bak/chamfer.ngc
@@ -0,0 +1,108 @@
+;chamfer
+O sub
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G8 ; Lathe radius Mode
+G90 ; Absolute Distance
+
+; #1 X coord
+; #2 feed/rpm
+; #3 0.5 ?
+; #4 0 ?
+; #5 Z coord
+; #6 tool number
+; #7 0 ?
+; #8 chamfer size
+; #9 exterior front
+; #10 interior
+; #11 exterior rear
+; #12 coolant
+
+ O10 if [#12 EQ 1]
+ M8
+ O10 endif
+
+
+;M6 T#6 G43
+ O100 if [#6 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#1 = [#1 / 2] ; because of radius mode
+
+#14 = [#<_x>] (starting X)
+#13 = [#<_z>] (starting Z)
+
+G96 D2500 S#2 ; Constant Surface Speed Mode
+M3
+G95 F0.1 ; Feed-Per-Rev Mode
+
+#20 = 0
+ O101 if [#9 GT 0.5] ; front outside
+ o102 while [[#20 + #3] lt #8]
+ #20 = [#20 + #3]
+ G0 x[#1 - #20] z#13
+ G1 z#5
+ G1 x#1 z[#5 - #20]
+ G1 x #14
+ G0 z#13
+ o102 endwhile
+ G0 x#14 z#13
+ G0 x[#1 - #8]
+ G1 z#5
+ G1 x#1 z[#5 - #8]
+ G1 x #14
+ G0 z#13
+ O101 elseif [#10 GT 0.5] ; front inside
+ o103 while [[#20 + #3] lt #8]
+ #20 = [#20 + #3]
+ G0 x[#1 + #20] z#13
+ G1 z#5
+ G1 x#1 z[#5 - #20]
+ G1 x #14
+ G0 z#13
+ o103 endwhile
+
+ G0 x#14 z#13
+ G0 x[#1 + #8]
+ G1 z#5
+ G1 x#1 z[#5 - #8]
+ G1 x #14
+ G0 z#13
+ O101 elseif [#11 GT 0.5] ; back outside
+ o104 while [[#20 + #3] lt #8]
+ #20 = [#20 + #3]
+ G0 x[#1 - #20] z#13
+ G1 z#5
+ G1 x#1 z[#5 + #20]
+ G1 x #14
+ G0 z#13
+ o104 endwhile
+
+ G0 x#14 z#13
+ G0 x[#1 - #8]
+ G1 z#5
+ G1 x#1 z[#5 + #8]
+ G1 x #14
+ G0 z#13
+ O101 endif
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacro-bak/drill.ngc b/lathemacro-bak/drill.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..2a9934d4f62cd21abf5c11207cdac27371ee0e9d
--- /dev/null
+++ b/lathemacro-bak/drill.ngc
@@ -0,0 +1,62 @@
+;drill
+O sub
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G7 ; diameter mode
+G90 ; Absolute Distance
+
+; #1 drill diameter
+; #2 ydepth
+; #3 speed
+; #4 feed/rpm
+; #5 tool number
+; #6 peck amount
+; #7 retract amount
+; #8 coolant
+
+ O10 if [#8 EQ 1]
+ M8
+ O10 endif
+
+#9 = #<_y> (starting Y)
+
+;M6 T#5 G43
+ O100 if [#5 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#7 = [[1000 * #3] / [3.1415 * #1]] ; metric mode RPM
+
+G97 S#7 ; Constant RPM mode
+M3 ;Start Spindle
+G95 F#4 ; Feed-Per-Rev Mode
+G4 P1 ; Wait to reach speed
+
+(debug, Drilling dia #1 depth #2 asked-speed #3 feed/rpm #4 tool #5 peck dist #6 calculated-rpm #7 start-Y #9)
+(MSG, ERROR : TODO must retract the X axis to home position)
+; G0 X0 ; TODO must retract the X axis to home position
+;G0 Y#9
+G98
+G83 Y#2 R#9 Q#6
+G80
+;G0 Y#9
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacro-bak/facing.ngc b/lathemacro-bak/facing.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..58e39e6568c278de4d2d814f1ec30e5313bfe0a7
--- /dev/null
+++ b/lathemacro-bak/facing.ngc
@@ -0,0 +1,71 @@
+;Facing
+O sub
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G7 ; diameter mode
+G90 ; Absolute Distance
+
+; #1 X coord
+; #2 surface speed
+; #3 cut size
+; #4 feed/rpm
+; #5 Z coord
+; #6 angles
+; #7 tool number
+; #8 coolant
+
+ O10 if [#8 EQ 1]
+ M8
+ O10 endif
+
+ O20 IF [#6 NE 0]
+ (MSG, Angled facing isn't supported yet)
+ O20 ENDIF
+
+;M6 T#7 G43
+ O100 if [#7 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#14 = [#<_x> * 2] (starting X)
+#13 = #<_z> (starting Z)
+
+G96 D2500 S#2 ; Constant Surface Speed Mode
+M3
+G95 F#4 ; Feed-Per-Rev Mode
+G4P1 ; Wait to reach speed
+
+ O200 WHILE [#13 GT #5 + #3]
+ #13=[#13-#3]
+ G1 Z#13
+ G1 X#1
+ G0 Z[#13+#3]
+ G0 X#14
+ G0 Z#13
+ O200 ENDWHILE
+
+G1 Z#5
+G1 X#1
+G0 Z[#13+#3]
+G0 X[#14+#3]
+G0 Z#5 ; For touch-off
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacro-bak/radius.ngc b/lathemacro-bak/radius.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..5bdf44ad95cd4cdc502e4b98c50bf56b59b88404
--- /dev/null
+++ b/lathemacro-bak/radius.ngc
@@ -0,0 +1,109 @@
+;radius
+O sub
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G7 ; diameter mode
+G90 ; Absolute Distance
+
+; #1 X coord
+; #2 feed/rpm
+; #3 0.5 ?
+; #4 0 ?
+; #5 Z coord
+; #6 tool number
+; #7 0 ?
+; #8 radius size
+; #9 exterior front
+; #10 interior
+; #11 exterior rear
+; #12 coolant
+
+ O10 if [#12 EQ 1]
+ M8
+ O10 endif
+
+;M6 T#6 G43
+ O100 if [#6 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#1 = [#1 / 2] ; because of radius mode
+#14 = [#<_x>] (starting X)
+#13 = [#<_z>] (starting Z)
+
+G96 D2500 S#2 ; Constant Surface Speed Mode
+M3
+G95 F0.1 ; Feed-Per-Rev Mode
+G4P1 ; Wait to reach speed
+
+#20 = 0
+ O101 if [#9 GT 0.5] ; Front outside
+ o102 while [[#20 + #3] lt #8]
+ #20 = [#20 + #3]
+ G0 x[#1 - #20] z#13
+ G1 z#5
+ G3 x#1 z[#5 - #20] K[-#20]
+ G1 x #14
+ G0 z#13
+ o102 endwhile
+ G0 x#14 z#13
+ G0 x[#1 - #8]
+ G1 z#5
+ G3 x#1 z[#5 - #8] K[-#8]
+ G1 x #14
+ G0 z#13
+ O101 elseif [#10 GT 0.5] ; front inside
+ o103 while [[#20 + #3] lt #8]
+ #20 = [#20 + #3]
+ G0 x[#1 + #20] z#13
+ G1 z#5
+ G2 x#1 z[#5 - #20] K[-#20]
+ G1 x #14
+ G0 z#13
+ o103 endwhile
+
+ G0 x#14 z#13
+ G0 x[#1 + #8]
+ G1 z#5
+ G2 x#1 z[#5 - #8] K[-#8]
+ G1 x #14
+ G0 z#13
+
+ O101 elseif [#11 GT 0.5] ; back outside
+ o104 while [[#20 + #3] lt #8]
+ #20 = [#20 + #3]
+ G0 x[#1 - #20] z#13
+ G1 z#5
+ G2 x#1 z[#5 + #20] K#20
+ G1 x #14
+ G0 z#13
+ o104 endwhile
+
+ G0 x#14 z#13
+ G0 x[#1 - #8]
+ G1 z#5
+ G2 x#1 z[#5 + #8] K#8
+ G1 x #14
+ G0 z#13
+
+ O101 endif
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacro-bak/restore.ngc b/lathemacro-bak/restore.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..3c2b5838c6f3a2cacfe369ef77e607e2893612f4
--- /dev/null
+++ b/lathemacro-bak/restore.ngc
@@ -0,0 +1,93 @@
+; restore metric/inch absolute/relative, feed as per paramter values
+; call as 'O call [originalmetric] [originalabs] [originalfeed] [originalcomp]
+;
+;[#] [#] [#] [#] [#] [#] [#]
+;
+O sub
+O100 if [#1 NE #<_metric>]
+O200 if [#1]
+ G21
+O200 else
+ G20
+O200 endif
+O100 endif
+
+O300 if [#2 NE #<_absolute>]
+O400 if [#2]
+ G90
+O400 else
+ G91
+O400 endif
+O300 endif
+
+O500 if [#3 NE #<_feed>]
+ F[#3]
+O500 endif
+
+
+O600 if [#4 NE #<_ccomp>]
+ O601 if [#4 EQ 400]
+ G40
+ O601 endif
+ O602 if [#4 EQ 411]
+ G41.1
+ O602 endif
+ O603 if [#4 EQ 420]
+ G42
+ O603 endif
+ O604 if [#4 EQ 421]
+ G42.1
+ O604 endif
+O600 endif
+
+
+O700 if [#5 NE #<_coord_system>]
+ O701 if [#5 EQ 540]
+ G54
+ O701 endif
+ O702 if [#5 EQ 550]
+ G55
+ O702 endif
+ O703 if [#5 EQ 560]
+ G56
+ O703 endif
+ O704 if [#5 EQ 570]
+ G57
+ O704 endif
+ O705 if [#5 EQ 580]
+ G58
+ O705 endif
+ O706 if [#5 EQ 590]
+ G59
+ O706 endif
+ O707 if [#5 EQ 591]
+ G59.1
+ O707 endif
+ O708 if [#5 EQ 592]
+ G59.2
+ O708 endif
+ O709 if [#5 EQ 593]
+ G59.3
+ O709 endif
+O700 endif
+
+
+O800 if [#6 NE #<_lathe_diameter_mode>]
+ O801 if [#6]
+ G7
+ O801 else
+ G8
+ O801 endif
+O800 endif
+
+
+O900 if [#7 NE #<_ijk_absolute_mode>]
+ O901 if [#7]
+ G90.1
+ O901 else
+ G91.1
+ O901 endif
+O900 endif
+
+O endsub
+M2
diff --git a/lathemacro-bak/threading.ngc b/lathemacro-bak/threading.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..81e567e1bd7aa2d6c38f2647000e990038235f4c
--- /dev/null
+++ b/lathemacro-bak/threading.ngc
@@ -0,0 +1,96 @@
+;threading
+O sub
+
+; #1=thread.x, #2=thread.sf, #3=thread.tool-s, #4=thread.pitch-f, #5=thread.z-f, #6=thread.internal #7=thread.external
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G8 ; Lathe radius Mode
+G90 ; Absolute Distance
+
+; #1 X coord
+; #2 feed/rpm
+; #3 tool number
+; #4 pitch
+; #5 Z coord
+; #6 interior
+; #7 exterior
+; #8 coolant
+
+ O10 if [#8 EQ 1]
+ M8
+ O10 endif
+;M6 T#3 G43
+ O100 if [#3 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#1 = [#1 / 2.0]
+#14 = [#<_x> * 2] (starting X)
+#13 = #<_z> (starting Z)
+G96 D2500 S#2 ; Constant Surface Speed Mode
+M3
+G4 P1 ; Wait to reach speed
+
+# = [0.86603 * #4]
+# = [# * 0.125]
+# = [# * 0.250]
+# = [# * 0.625]
+;(debug, #40 # # #)
+
+ O101 IF [#<_metric>]
+ # = 0.2
+ # = 0.1
+ O101 ELSE
+ # = 0.007
+ # = 0.004
+ O101 ENDIF
+
+G95 F# ; Feed-Per-Rev Mode
+
+;Threading
+ O102 IF [#6 GT 0.5] ;internal
+ ;cut the minor flat diameter
+ ;(debug, INTERNAL Threading thread dia-#1 start-#13 finish-#5 Pitch-#4 Depth-#3)
+ G0 Z #13
+ G0 X [#1 + # - #]
+ G1 Z #5
+ G0 X [#1 - #]
+ G0 Z #13
+ G96 D600 S#2 ; limit RPM in threading mode
+ G76 P#4 Z#5 i# j# k# H3 R1.5 Q29.5 E0 L0
+ G0 X [#1 - 0.5]
+ O102 ELSE ;external
+ ; cut the major diameter
+ ;(debug, EXTERNAL Threading thread dia-#1 start-#13 finish-#5 Pitch-#4 Depth-#3 MF #)
+ G0 Z #13
+ G0 X #1
+ G1 X [#1 - #]
+ G1 Z #5
+ G0 X #1
+ G0 Z #13
+ G96 D600 S#2 ; limit RPM in threading mode
+ G76 P#4 Z#5 i[-#] j# k# H3 R1.5 Q29.5 E0 L0
+ G0 X [#1 + 0.5]
+ O102 ENDIF
+
+G0 Z#13
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacro-bak/turning.ngc b/lathemacro-bak/turning.ngc
new file mode 100755
index 0000000000000000000000000000000000000000..6507f1b14886685294cf2cf446ec97638e979c1a
--- /dev/null
+++ b/lathemacro-bak/turning.ngc
@@ -0,0 +1,102 @@
+;Turning
+O sub
+
+# = #<_ccomp>
+# = #<_metric>
+# = #<_absolute>
+# = #<_feed>
+# = #<_coord_system>
+# = #<_lathe_diameter_mode>
+# = #<_ijk_absolute_mode>
+
+G8 ; Lathe radius Mode
+G90 ; Absolute Distance
+G91.1 ; but not for arcs
+
+; #1 X coord
+; #2 surface speed
+; #3 cut size
+; #4 feed/rpm
+; #5 Z coord
+; #6 radius
+; #7 angle
+; #8 tool number
+; #9 coolant
+
+ O10 if [#9 EQ 1]
+ M8
+ O10 endif
+
+;M6 T#8 G43
+ O100 if [#8 NE #<_current_tool>]
+ (MSG, ERROR : Set tool before use macro)
+ O call [#] [#] [#] [#] [#] [#] [#]
+ O100 return [-2] ; indicate failure to epilog
+ O100 endif
+
+#1 = [#1 / 2] ; because of radius mode
+#14 = [#<_x>] (starting X)
+#13 = #<_z> (starting Z)
+
+#20 = [#6 * SIN[#7]]
+#21 = [#6 * COS[#7]]
+#22 = [#6 / COS[#7]]
+#23 = [#5 + #6 - #20]
+#24 = [[#13 - #23] * TAN[#7]]
+
+G96 D2500 S#2 ; Constant Surface Speed Mode
+M3 ;Start Spindle
+G95 F#4 ; Feed-Per-Rev Mode
+G4P1 ; Wait to reach speed
+
+(debug, Turning finish rad #1 start rad #14 start length #13 finish length #5)
+
+;[${turn.x-f}] [${turn.sf-f}] [${turn.cut-f}] [${turn.feed-f}] [${turn.z-f}] [${turn.rad-f}] [${turn.angle-f}] [${turn.tool-s}]
+
+ O101 WHILE [#14 GT [#1 + #3 / 2]]
+ G0 X #14
+ #14=[#14-#3 / 2]
+ G1 X #14
+ G1 Z #23 X[#14 + #24]
+
+ o102 IF [#6 GT 0]
+ G2 Z#5 X[#14 + #24 + #21] I#21 K#20
+ G1 X[#14 + #24 + #21 + #3/2]
+ o102 ELSE
+ G1 X[#14 + #24 + [#3 * .6]]
+ o102 ENDIF
+
+ o103 IF [#7 LT 0]
+ G0 X#14
+ o103 ENDIF
+
+ G0 Z[#13]
+ O101 ENDWHILE
+
+G0 X#1
+G1 Z #23 X[#1 + #24]
+
+ O104 IF [#6 GT 0]
+ G2 Z#5 X[#1 + #24 + #21] I#21 K#20
+ G1 X[#1 + #24 + #21 + #3]
+ O104 ELSE
+ G1 X[#1 + #24 + #3]
+ O104 ENDIF
+
+ O105 IF [#7 LT 0]
+ G0 X#14
+ O105 ENDIF
+
+G0 Z#13
+G0 X#1 ; For touch-off
+
+M5
+M9
+
+; restore g20/21, g90/g91, feed
+ O call [#] [#] [#] [#] [#] [#] [#]
+
+O endsub
+
+M2
+%
diff --git a/lathemacros/chamfer.ngc b/lathemacros/chamfer.ngc
index 7c21d6de9b012502e05ad85cf8a50d6f9e4811ad..4d43f9dd4247f0d4f66aec38bfebb04b84858566 100644
--- a/lathemacros/chamfer.ngc
+++ b/lathemacros/chamfer.ngc
@@ -31,6 +31,7 @@ G90 ; Absolute Distance
# = [# / 2] ; because of radius mode
# = #<_x> (starting X)
# = #<_z> (starting Z)
+(DEBUG,TEST)
G96 D1500 S#2 ; Constant Surface Speed Mode
M3 ; Start Spindle
diff --git a/lathemacros/threading.ngc b/lathemacros/threading.ngc
index 7e944a6c35de2997aba595c9a2b2f8c04cf407f5..f50e8886a58d127f5a2555ce4ee5b72d20258644 100644
--- a/lathemacros/threading.ngc
+++ b/lathemacros/threading.ngc
@@ -25,7 +25,7 @@ G90 ; Absolute Distance
# = [# / 2.0]
# = [#<_x> * 2] (starting X)
# = #<_z> (starting Z)
-G96 D1500 S# ; Constant Surface Speed Mode
+G96 D2000 S# ; Constant Surface Speed Mode
M4 ; Start Spindle
G4 P2 ; Wait to reach speed
@@ -76,7 +76,7 @@ G95 F# ; Feed-Per-Rev Mode
G1 Z #
G0 X #
G0 Z #
- G96 D600 S# ; limit RPM in threading mode
+ G96 D1000 S# ; limit RPM in threading mode
G4 p2
G76 P# Z# i[-#] j# k# H3 R1.5 Q29.5 E0 L0
G0 X [# + 0.5]
diff --git a/maurice.hal b/maurice.hal
index 2006079dbb7b7c4d12376ad149669774dd90af84..de156297959785bf354bafe8b2bae689a0cb14f1 100644
--- a/maurice.hal
+++ b/maurice.hal
@@ -9,23 +9,23 @@
#loadrt trivkins
#loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt weighted_sum wsum_sizes=4,4,2
-loadrt sum2 count=3
+#loadrt sum2 count=3
loadrt conv_s32_float count=3
-loadrt scale count=3
-loadrt and2 count=1
+loadrt scale names=FeedScale,RapidScale,SpindleScale
+loadrt and2 names=EstopAnd
loadusr atv_vfd -r 9600 -p even
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf process_wsums servo-thread
-addf sum2.0 servo-thread
+#addf sum2.0 servo-thread
addf conv-s32-float.0 servo-thread
addf conv-s32-float.1 servo-thread
-addf scale.0 servo-thread
-addf scale.1 servo-thread
-addf scale.2 servo-thread
-addf and2.0 servo-thread
+addf FeedScale servo-thread
+addf RapidScale servo-thread
+addf SpindleScale servo-thread
+addf EstopAnd servo-thread
#loadusr halui -ini maurice.ini
#loadusr io
@@ -33,9 +33,9 @@ addf and2.0 servo-thread
# Global machine logic
#==========================================
-net state-op => and2.0.in0
-net STBEstop and2.0.in1
-net Estop-and-out and2.0.out iocontrol.0.emc-enable-in
+net state-op => EstopAnd.in0
+net STBEstop EstopAnd.in1
+net Estop-and-out EstopAnd.out iocontrol.0.emc-enable-in
#==========================================
@@ -166,21 +166,21 @@ net FeedOv3 wsum.1.bit.1.in
net FeedOv4 wsum.1.bit.0.in
net FeedOv wsum.1.sum conv-s32-float.0.in
net FeedOvF conv-s32-float.0.out
-net FeedOvF scale.0.in
-setp scale.0.gain -0.06666666666666666666666666666666666666667
-setp scale.0.offset 1
-net FeedOverride scale.0.out
+net FeedOvF FeedScale.in
+setp FeedScale.gain -0.06666666666666666666666666666666666666667
+setp FeedScale.offset 1
+net FeedOverride FeedScale.out
net RapidOv1 wsum.2.bit.1.in
net RapidOv2 wsum.2.bit.0.in
net RapidOv wsum.2.sum conv-s32-float.1.in
net RapidOvF conv-s32-float.1.out
-net RapidOvF scale.1.in
-setp scale.1.gain -0.333333333333333333333
-setp scale.1.offset 1
-net RapidOverride scale.1.out
-
-net SpindlePot scale.2.in
-setp scale.2.gain 0.0000317581300813008
-setp scale.2.offset -0.0137195121951
-net SpindleOverride scale.2.out
+net RapidOvF RapidScale.in
+setp RapidScale.gain -0.333333333333333333333
+setp RapidScale.offset 1
+net RapidOverride RapidScale.out
+
+net SpindlePot SpindleScale.in
+setp SpindleScale.gain 0.0000317581300813008
+setp SpindleScale.offset -0.0137195121951
+net SpindleOverride SpindleScale.out
diff --git a/mesa.hal b/mesa.hal
index ed018e112569aab69f6c2b6bd65f1051bdf453e9..100d686a1b802a5919e2b57e503d995956704bc6 100644
--- a/mesa.hal
+++ b/mesa.hal
@@ -3,10 +3,12 @@ loadrt hostmot2
loadrt hm2_pci config="num_encoders=2 num_pwmgens=0"
loadrt mux8 names=mpg
loadrt abs count=1
+loadrt near names=atspeed
addf hm2_5i24.0.read servo-thread
addf hm2_5i24.0.write servo-thread
addf mpg servo-thread
+addf atspeed servo-thread
addf abs.0 servo-thread
#We have a 6i24 in emulation mode so all pin will be hm2_5i24.0.
@@ -22,6 +24,11 @@ net spindle-vel-fb-rpm abs.0.in hm2_5i24.0.encoder.00.velocity-rpm
net spindle-vel-fb-rpm-abs abs.0.out
net spindle-index-enable hm2_5i24.0.encoder.00.index-enable
+net spindle-vel-fb-rps atspeed.in1
+net spindle-vel-cmd-rps atspeed.in2
+net spindle-at-speed atspeed.out
+setp atspeed.scale 1.05
+
####################################################################
#Jog Handling
####################################################################