Hey all,
I see a strange behaviour on my Onefinity Controller. G53 (Move in Machine Coordinates) should move in absolute machine coordinates.
So the command
G53 G0 Z0
should always move Z to machine zero (topmost position, Z home position), regardless which coordinate system offset is in effect.
But if I switch to incremental distance mode G91 (Select Incremental Distance Mode), G53 G0 Z0 does not move there, it just moves by zero distance. This is not only wrong and probably a bug, it is also clear that it makes no sense to use incremental distances when using G53.
Peter Smid writes in the standard textbook “CNC Programming Handbook 3rd Ed.”, Industrial Press, South Norwalk, CT, USA, ISBN 9780831133474 on page 400:
G53 Machine Coordinate System
[…]
Machine coordinate system G53 uses the coordinates measured from machine zero as an input – always!
[…]
Programmed coordinates are always relative to machine zero position
G53 is only used in the absolute mode (G90)
In his example program, he prepends a G90 in front of the G53.
So I understand that you can write G-code with an occurrence of G53 while G91 is active, but it should trigger an error. But it doesn’t on buildbotics-derived Onefinity Controller, at least not on onefinity-firmware version 1.0.9.
You can test this with this small G-code program:
M70 ; Save all modal states
G21 ; Switch to metric units
G92.1 ; Delete any offsets that could be active
G90 ; Select absolute distance mode
G53 G0 Z0 ; Move Z to 0, Z machine zero, topmost position
G53 G0 Z-50 ; Move Z downwards to -50 mm
G91 ; Now switch to incremental distance mode
G53 G0 Z0 ; Move to Z0 again with G53 (in machine coordinates)
M71 ; Restore all modal states
(comments can be left when copying/pasting, they will be ignored)
Here is the above program as a file that you can upload to your Onefinity machine:
test_G53_when_G91_is_active.ngc (388 Bytes)
When I run this program, on my system, it shows the following bugs:
- The Z axis is not moved back to topmost position but takes Z0 as relative value (and zero means no motion).
- No error is displayed about using G53 when G91 is active.
In the Mach support forum I found that they get an error saying “Cannot use G53 incremental” in this case.
Before I can file a bug report, I would need someone to test this on latest stable release (1.3.1 as of this writing). Please, would a friendly forum user test this?