This does not just involve probe offset it also involves workspace offset so I better start with a definition for this discussion - even if it’s not super correct. RAW coordinates are the measured coordinates from the X & Y end stops. Snapmaker does printing in a workspace offset of X-19 Y-10. So when you do a G1 X100 Y100 the nozzle moves to a logical X100 Y100 which is the RAW position of X81 Y90. My probe is offset from the nozzle by X13.5 Y0. I am going to stick with those numbers as the Y0 makes counting easy . In the above example when the nozzle is moved to logical X100 Y100 the probe will be at logical X113.5 Y100, RAW X94.5 Y90.
As of now, G30 just does a Z probe of the current position. It doesn’t move in the X or Y direction to handle probe offset or anything else. That’s not what it reports it’s doing however.
Your example of G1 X100 Y100 followed by a G30 the nozzle moves to the logical position X100 Y100 G30 probes the bed without XY movement and reports:-
“Move to X: 119.00, Y: 110.00”
So it’s assuming the current position is RAW nozzle X100 Y100 reporting logical X119 Y110 with the probe at position X132.5 Y110. Thats a wrong assumption.
My reading of the limited Marlin documentation says G30 probes the current position so I dont think it should move for the probe offset but it should report the correct numbers - this is different from the RepRap G30 behaviour.
It gets a bit more interesting with a G30 X100 Y100
In this case it reports that it will:-
“Move to X: 86.50, Y: 100.00”
That all looks good, do a move to put the probe over X100, Y100 - but it’s not what it does.
It actually moves the Nozzle to logical X67.5 Y90. Thats what the RAW coordinates would be if it was putting the nozzle into position to probe logical X100 Y100 but it’s done it within the logical workspace so it’s effectively probing the RAW position rather than the logical one. This is the same problem that there is with bed leveling.
My understanding is that a G30 without parameters should do a probe without moving the head. The behaviour is correct but the position reporting is wrong and needs fixing.
A G30 with X & Y parameters has the same issue as bed leveling and probes the wrong point, effectively double counting the workspace offset. It would be good if the bed levelling changes also fix this.
Does this equate with your understanding @brent113? If it does I will add a comment to the GitHub issue asking them to make sure this is also fixed and ask whether a new issue is required.
My main concern though is bed levelling and I want that fixed fast but I would like to see it done so that levelling follows the standard Marling G29 code as much as possible and hopefully it will also sort out issues like this.