Chris Radek wrote: > Even if G43 can take a tool length directly, I couldn't come up with a > straightforward way for the user to use that in gcode. Imagining the > mill case first because it's simpler: maybe you'd store in a gcode > variable the Z coordinate you get when you probe your reference > tool. Then when you probe a new tool you'd take the difference and > pass that to G43. But if someone doesn't have tool holders at all, > I don't know what the reference tool would be, and with no > reference tool I don't know what you'd use to touch-off the work. > > Tool length offset is just that - a length - and to measure a length > you need to find the difference between two points. If you probe a > tool tip, that's only one. This is problem 2 - I don't quite see a > good way for someone to use G43 in this way, after we solve problem > 1.
Hmm, I have a small hobby-grade CNC machine (a modified Proxxon MF70 from usovo.de) which doesn't have a tool holder. It came with PC/NC, a DOS program. This program takes the following approach for tool length corrections: It basically assumes that the first tool you use is the one you used to define your coordinate system. (PC/NC allows redefining X/Y/Z origins per g-code file, though this is a non-gcode manual process, which also involves options to define the working space, with an error issued when you g-code exceeds this working space. It also allows defining independent scaling for the X and Y axes, not sure about Z at the moment.) All origin, offset and working area settings are done before the first line of G-Code is executed. Anyway, the process in PC/NC works like this: Define working area in X, Y dimensions (machine coordinates), define origin in X, Y and Z (machine coordinates) for G-Code. This all usually happens with the first tool you intend to use. You need to measure the tool length before setting X/Y/Z origins and that tool length (or rather: The Z coordinate at whicht the tool hit the measurement switch) is used as a reference. Whenever PC/NC reaches another "M06 T?", it will _always_ measure the tool anew, even if it has a known length for that tool number. It then uses the difference in Z to correct the tool length. I would hope that EMC at one time also provides a similar functionality. Especially as manual tool changes are prone to errors with the depth to which a tool is inserted into the spindle. However, PC/NC also has problems with tool changes. Imagine the following G-Code: M06 T02 G01 X1 Y1 Z0 M06 T03 G01 X1 Y1 Z0 Looks pretty simple, doesn't it? Now, what happens in PC/NC? 0) (store current position) 1) move to tool change position 2) ask for tool to be changed (which you confirm) 3) move to stored position 4) move to maximum Z on measurement X/Y 5) measure tool 6) move to stored position 7) execute G01 X1 Y1 Z0 (and store that position) 8) move to tool change position 9) ask for tool change (which you confirm) 10) move to stored position (without correction, since it is not yet measured) 11) move to maximum Z on measurement X/Y 12) measure tool 13) move to stored position (with corrected tool length) 14) execute G01 X1 Y1 Z0 (with corrected tool length) Now imagine what happens it T03 is longer than T02. Right, it either breaks or damages the stock when (10) is done. Regards, Sven ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users