Art,
This has turned out to be a bit more detailed than I first thought. What's the old saw about devil and details...
Anyway, I will try to closely describe the behavior:
I find that a jog of more +/-.01" or more off of a chosen offset (say g58) in X or Y will allow a correct GoTo Z. A movement of .001" is NOT enough to allow a successful GoTo Z. A movement in Z ONLY of any amount (.001" - 6.000"+) will not allow a successful GoTO Z. Obviously, the only way to recover is to do a Ref All.
Machine coordinates or Offset coordinates, the behavior is the same.
When a GoTo Z succeeds, the Z rises to machine Zero (moving from say -4.321 up to 0.000), the DRO stops at 000, all Z servo rotation stops, the X & Y go directly to their respective Offset zeros, then Z goes to its offset zero. Success.
When a GoTo Z fails, the Z approaches machine Zero, (moving from -4.321 toward 0.000) but the DRO does not stop at 000 (I can't actually detect it--too quick). Rather it immediately tries to return to Offset Z zero (which it shlould) but machine does not move. Rather the servo continues to "click" moving the belt about 1/2", then snapping back. It does this about every 1/2 second or so. Is the Z up against the stop? NO. I can move the Z past machine Zero another 0.018" before triggering a Reset, and still be off of the hard-stop.
To continue the story from the first Z servo "click", the Z will continue its click and short movement until the Z DRO returns to its selected offset Zero. Once the DRO does agree with offset zero, MACH is happy, but of course, the machine is totally out of sync with where Mach thinks it is.
Its like the Z must pause some minimal amount of time (e.g., enough time to move the X 0.010") so the Z knows how to continue, or the servo can pause long enough to reverse or... I know that makes no sense (the Z serve reverses direction in every other situtation. Indeed, I've run the system through many minutes of X, Y & Z and it returns to a known zero dead-on).
As per your request, I entered -0.25 in the Safe_Z field. Restarted Mach, Ref All, Goto Z, and then Goto Z again. The machine goes to about 1/4" shy of the limit switch and stops. But the Z DRO counts back toward Offset Zero and the servo is clicking every 1/2 second. And BTW, I get an error message "Safe_Z ignored, Z already higher than Safe_Z setting" with the -.25 in the Safe_Z field. It does not throw this error with 0 in this field.
Anyway, this is what I think I know at this point in time. I hope I have explained in sufficient detail that you can grok what I am seeing here. FYI, I'm running 2.020.
Thanks Art!!
David