Possible Bug in G28 and G30?

OK, so here’s a weird one.

Using Universal GCode Sender:

  1. Move carriage to YMax, X roughly centered. Z all the way up. Enter G28.1 on the command line. This saves the position in what I’m calling the “clean and remove workpiece” position.

  2. Move carriage to YMin, X roughly centered, Z all the way up. Enter G30.1 on the command line. This saves the position in what I call the “tool change position”.

  3. Type G28 on command line. Machine rapids to the proper position.

  4. Type G30 on the command line. Machine rapids to proper position.

  5. Jog carriage to arbitrary point, then zero X, Y, Z (to set work zero).

  6. Type G28 on command line. Machine rapids to proper position.

  7. Type G30 on command line. Machine rapids to proper position.

  8. Load GCode created with Fusion 360 that has “safe G28” post processor option active. Run program. Program runs normally (using part zero set in step 5 properly) then on completion of run, lifts Z to G28 then rapids back to G28. (Program issues G28 Z0; G28 X0 Y0;)

  9. Type G30 on command line (actually, execute stored macro G30 Z0; G30 X0 Y0) and machine rapids to G30 position.

  10. Hit “return to zero” button on UGS (issues G90 X0 Y0; G90 Z0) machine rapids back to part zero.

OK, so far everything is working exactly the way I expect. Now it gets WEIRD.

  1. Jog machine to arbitrary location.

  2. Type either G28 or G30 on command line.

  3. Z axis lowers to part zero, then retracts to G28|G30 zero, then rapids X/Y to part zero then back to G28|G30 zero. Every use of G28 or G30 from this step on will ALWAYS first move to part zero before executing the move to either the G28 or G30 positions.

What. The. Hell.

It seems like G90 is somehow setting a switch somewhere that forces subsequent G28 and G30 moves to first move to part zero, which is SUPER NON INTUITIVE.

Is this working as designed? If so, how do you clear it? Or is this a GBRL bug?

What version of UGCS are you using?

Doesn’t work this way in version 1.0.9.

Do you enter any co-ordinates with G28 (G28 X0 Y0 Z0) or just G28?

G.28

Takes X Y Z addresses which define the intermediate point that the tool tip will pass through on its way home to machine zero. They are in terms of part zero (aka program zero), NOT machine zero.

1 Like