My profuse apologies for:
my (very) late answer
digging up this old topic (Halloween trick or treat ?!)
but my answer is still relevant (based on the code base of the RRF 3.5.0 rc1 and 3.4.6).
@dc42 said in G30: unexpected probe dive motion range:
If you set the dive height to some value H [...] the code starts the dive at (trigger_height + H) and ends it if the probe is not triggered first at (trigger_height - H)
That is my expectation, but not what the G30 command currently does.
You will notice in the code of G30 command the mention of platform.AxisMinimum(Z_AXIS), variable which I can't make sense of:
ms.coords[Z_AXIS] = (IsAxisHomed(Z_AXIS)) ? platform.AxisMinimum(Z_AXIS) - zp->GetDiveHeight() + zp->GetActualTriggerHeight()
This is in contrast to the probing code of the G29 command, which works as you described without ever using platform.AxisMinimum(Z_AXIS):
ms.coords[Z_AXIS] = -zp->GetDiveHeight() + zp->GetActualTriggerHeight();
Hence my (old yet still relevant) pull request.
Hopefully this patch would not bring any regression, however it might save multiple RRF user from less than desirable unexpected nozzle crashes.