I asked this on IRC yesterday, but realize that was a bad format, so here goes!
I have been helping Lcvette with a very simple probing GUI and some probing routines. The routines probes the top and then corner of the part and set the specified (not necessarily current) WCOs to the value of probed position. One thing that was unexpected is that the probed pos parameters (5061-5069) are relative to the currently active WCS. This is not clear from the description in the docs, and is not consistent with the values returned by `stat.probed_position` which returns the ABS position at which the probe tripped. It makes sense for the probed pos to be in ABS coordinates, since one of the main uses of probing is to set a WCS. All the commercial controllers I am familiar with report probed pos in ABS coordinates, Fanuc even uses the same param numbers as LCNC for the probed pos values, but they are ABS vs LCNC relative pos. There are significant advantages to having the probed pos be in ABS coordinates, mainly because it makes it easy to set a WCS to the probed pos: G38.2 Z-.5 G10 L2 P0 Z[#5063] To get the same function as the Fanuc style parameters in linuxcnc requires something like this: (Get the current WCS Z offset) o100 if [#5220 EQ 1] (G54, 5520 = current work space ID 1-9) #<workspace_z> = #5223 o100 elseif [#5220 EQ 2] (G55) #<workspace_z> = #5243 o100 elseif [#5220 EQ 3] (G56) #<workspace_z> = #5263 o100 elseif [#5220 EQ 4] (G57) #<workspace_z> = #5283 o100 elseif [#5220 EQ 5] (G58) #<workspace_z> = #5303 o100 elseif [#5220 EQ 6] (G59) #<workspace_z> = #5323 o100 elseif [#5220 EQ 7] (G59.1) #<workspace_z> = #5343 o100 elseif [#5220 EQ 8] (G59.2) #<workspace_z> = #5363 o100 elseif [#5220 EQ 9] (G59.3) #<workspace_z> = #5383 o100 else (default to G54) #<workspace_z> = #5223 o100 endif G38.2 Z-.5 (Calculate the probed ABS pos) #<z_abs_probed_pos> = #5063 + #<workspace_z> G10 L2 P0 Z[#<z_abs_probed_pos>] Having to use the if-elseif block is somewhat cumbersome, and needs to be done for each axis for which it is desired to set the WCO. So the question is, why did LCNC choose to use relative positions for the probe parameters? There must be a good reason to not follow what seems to be a standard among other controllers, but the only advantage I can see is when probing to measure/scan a part, but in that case it would be very easy to convert the ABS probed pos to relative by subtracting the WCO. Trying to think of ways to make the behavior more expected for people coming from other controllers, and at least make it clear in the docs . Would it make sense to change parameters 5061-5069 to be the ABS probed pos, or maybe allow using G53 with G38? I think it would also make sense if `stat.probed_position` was consistent with the 5061-5069. Anyway, interested to see what you all think. I am going to at least work on clarifying the parameter and python interface docs to better reflect what system the probed positions are in. If anything else could/should be done I will try to take that on as well. Thanks all! Kurt ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Emc-developers mailing list Emc-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-developers