Solved G53 vs G54 issue
-
Hello all. I’m having an issue with the CNC version of reprap. I’ve written some soft home setting macros to set x,y,z and it is supposed to just set the zero for g54 and I’m using G10 L20 P1. This seems to zero both G53 and G54. If I change to P2 in the G10 it will zero G55 and leaves G53 and G54 as they were. Is this normal behavior? I have also found that if I put it into G53 the. Home it the G10 offsets are not erased. This seems like something is wrong as G53 should not be changed by G10 and should always be the machine coordinates.
Thanks
-
@baird1fa
Or is G53 and G54 treated as the same thing on the duet? If that is the case how do I see the machine coordinates? -
-
I think you may have the G10 parameters mixed up?
L is the offset to update; 1 for the tool, 2 for G54, 3 for G55 etc.
L20 updates the tool relative to the present position.P1 with L20 updates the offset presently in use.
I think you may just need something like G10 L2 P1 to update G54 offsets, or L3 for G55.
See these:
https://duet3d.dozuki.com/Wiki/Gcode#Section_G53_Use_machine_coordinates -
l@baird1fa commands prefixed by G53 on the same line should not be affected by tool offsets or workplace offsets set by G10. Note that G53 is not modal, i.e. it is cancelled at the end of the line that it is on, as per the NIST specification (see https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=823374 section 3.5.12).
If you are sure that G10 L20 P1 affects the behaviour of commands prefixed with G53 then please write and test a command sequence that demonstrates this.
-
I must be confused then.
I just want to zero x, y, z for G54. Essentially I want to set “soft home” for my machine so I can run tool paths relative to that position.
The way it read to me, was to use G10 L20 P1 X and that will set X to zero in G54. Is that not how it works? If I use G10 L20 P2 X, it sets G55 X to zero. But when I use P1 it sets both G54 and G53.
Or maybe it doesn’t affect G53 and there isn’t an indicator for the Machine coordinates vs the work coordinates.
I assumed that if I send a G53 command that the DRO would show that machine coordinates and if I send a G54, G55, etc. it would then display the workspace coordinates.
-
@baird1fa I think you have misunderstood G53.
G54, G55, G56, G57, G58, G59, G59.1, G59.2 and G59.3 all behave in the same way: they select one of the available 9 workplace coordinate systems.
G53 is completely different. It does not select a coordinate system. It causes the machine to ignore the offsets of the current workplace coordinate system, whichever one that is, for movement and related commands for the remainder of the current line only. Tool offsets are also ignored. So if you send e.g. G53 G1 X10 Y20 then it will go to X10 Y20 in machine coordinates, regardless of which workplace coordinate system you are in, and ignoring any offsets of that coordinate system. So previous G10 L2 and G20 L20 commands will have no effect of where it goes. When the move has completed, the user coordinates displayed by RRF will be X10 Y20 translated to the current workplace coordinate system, and the machine coordinates displayed will be X10 Y20.
You can set the current position to be X=0 in the G54 coordinate system by sending this:
G10 L20 P1 X0
-
@dc42 thank you for the explanation, and that is why I thought happens with the exception that I thought the default coordinate system was G53 but it sounds like it is G54. So I’m clear on that now.
I suppose what I’m trying to do is “toggle” the DRO between the work coordinates and the machine coordinates. Is that possible? The reason for this is I would like to know the machine coordinates (G53) of the tool when work coordinate (G54,etc) is at zero. Is that possible in RRF? With the CNC at work (UCCNC) there is a button to toggle between work coordinates and machine coordinates just like any digital readout.
Thanks.
-
@baird1fa if you use the CNC version of Duet Web Control then I think both user and machine coordinates are displayed.
You can also get the machine coordinates from the object model. For example, you could run the following command, or put it in a macro file and run that:
echo "Machine coordinates: X:",move.axes[0].machinePosition,"Y:",move.axes[1].machinePosition,"Z:",move.axes[2].machinePosition
You can also read out the workplace coordinate offsets directly from the object model. For example, for the offsets of the G54 system, use this:
echo "Workplace 1 offsets: X:",move.axes[0].workplaceOffsets[0],"Y:",move.axes[1].workplaceOffsets[0],"Z:",move.axes[2].workplaceOffsets[0]
-
@dc42 I am using the CNC version of DWC but only version 3.3 I think. I did upgrade to the 3.4 beta versions but there wasn't any DRO readout at all with those so I downgraded back to 3.3.
Maybe I’ll try upgrading again and see what how it looks.
I’m using google chrome for my web browser and safari on my iPhone and neither had the DRO with 3.4.
-
@baird1fa are you also using M453 to switch the firmware into CNC mode?
-
Yes sir, I am. I think I have that early in my config before I configure the spindle parameters.
-
@baird1fa had the problem too. Try delete cache
-
@pcr how do you do that? Or like the browser cache? I’ve done that already and the documentation I found on the other DWC is for version 2 or something that doesn’t seem to be relevant anymore.
-
I updated to the 3.4.0 beta7 version of the firmware and the DWC. I still have no feedback of the current tool position. I have tried to clear the cache as best as I can from what I've found online. Ctrl + F5 for chrome to delete the cache for a specific page and that did not help.
This is a screen shot of what I'm seeing for my dashboard. Not too much helpful information there. Surely I'm missing something.
-
@baird1fa hmm that's strange . @Sindarius
-
@baird1fa bring up your browser console and see if you are getting any errors. Share them here if you would please.
-
Nope, no errors when I run the config.g file or boot it up.
If I remove the M453 so it is in 3D printer mode then I get the DRO portion. But in the M453 CNC version the DRO is gone. I have also tried to move the M453 to different places in the config.g and that doesn't help either.
I even tried to let it boot up as a 3D printer then send the M453 command to put it in CNC mode and the DRO portion just disappears. Is it a bug maybe to do with the fact that I'm not using any of the built in drivers? I'm only using external stepper drivers. Could that have something to do with it?
Here is my config.g if that helps.
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Thu Aug 19 2021 13:14:05 GMT-0600 (Central Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"CNC Router" ; set printer name ;M453 ; Make CNC board ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; External Drives M569 P5 S0 R1 T5:2.5:5:7.5 ; external drive 5 goes forwards requires an active high enable, 5us minimum step pulse, 2.5us minimum step interval, 5us DIR setup, and 7.5us hold time M569 P6 S1 R1 T5:2.5:5:7.5 ; external drive 6 goes forwards requires an active high enable, 5us minimum step pulse, 2.5us minimum step interval, 5us DIR setup, and 7.5us hold time M569 P7 S1 R1 T5:2.5:5:7.5 ; external drive 7 goes forwards requires an active high enable, 5us minimum step pulse, 2.5us minimum step interval, 5us DIR setup, and 7.5us hold time M569 P8 S1 R1 T5:2.5:5:7.5 ; external drive 8 goes forwards requires an active high enable, 5us minimum step pulse, 2.5us minimum step interval, 5us DIR setup, and 7.5us hold time M569 P9 S1 R1 T5:2.5:5:7.5 ; external drive 9 goes forward requires an active high enable, 5us minimum step pulse, 2.5us minimum step interval, 5us DIR setup, and 7.5us hold time ; Disable internal drives ;M569 P1 R-1 ; disable physical drive ;M569 P2 R-1 ; disable physical drive 2 ;M569 P3 R-1 ; disable physical drive 3 ;M569 P4 R-1 ; disable physical drive 4 ;M569 P5 R-1 ; disable physical drive 5 ; Map axis drives M584 X7 Y5:6 Z8 A9 ; set drive mapping ;M350 X64 Y64 Z16 E16 I0 ; configure microstepping with interpolation ; Set drive speeds M92 X394.09 Y394.09 Z1280.00 A420.00 ; set steps per mm M566 X300.00 Y300.00 Z100.00 A120.00 ; set maximum instantaneous speed changes (mm/min) M203 X24000.00 Y24000.00 Z3600.00 A1200.00 ; set maximum speeds (mm/min) M201 X250.00 Y250.00 Z150.00 A250.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 A800 I30 ; set motor currents (mA) and motor idle factor in per cent ;M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X1235 Y2480 Z225 S0 ; set axis maxima ; Endstops M574 X1 S1 P"^exp.e4stop" ; configure active-high endstop for low end on X via pin xstop M574 Y2 S1 P"^exp.e2stop+^exp.e3stop" ; configure active-high endstop for high end on Y via pin ystop and on e0stop M574 Z2 S1 P"^exp.e5stop" ; configure active-high endstop for high end on Z via pin zstop ; Z-Probe ;M558 P1 C"zprobe.in" H5 F120 T15000 ; set Z probe type to unmodulated and the dive height + speeds ;G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height ;M557 X15:215 Y15:195 S20 ; define mesh grid ; Driver error inputs M950 J0 C"e1stop" ;Input 0 uses Zstop M950 J1 C"xstop" ;Input 1 uses xstop M950 J2 C"ystop" ;Input 2 uses ystop M950 J3 C"e0stop" ;Input 3 uses estop M581 T2 P0:1:2:3 R0 S0 ;Configure the trigger T0 is emergency stop T1 is pause T#>2 calls sys/trigger#.g ; Temperature sensors M308 S0 Y"mcu-temp" A"MCU" ; create mcu temperature M308 S1 Y"drivers" A"Stepper driver" ; create driver temperature ;M308 S2 P"TC0" Y"thermocouple-max31856" A"box" ; create enclosure temperature type K sensor ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin bedheat and set its frequency M106 P0 L100 T20:45 H0 ; set fan 0 to minimum of 50 value. Thermostatic control is turned on based on MCU temp ;M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency ;M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ;M453 ; Make CNC board ; Tools M950 R0 C"bedheat+e0heat+e1heat" Q250 L3000:18000 ; spindle 0 uses bedheat for RPM pwm, e1heat for forward, fan2 for reverse M563 P1 S"Spindle 1" R0 ; define tool 0 as Spindle 0 G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets ; Custom settings M669 K0 S1 T1 ; Set Cartesian kinematics and small segment values for quick pauses.
-
@baird1fa I am looking for browser errors which are causing the DRO portion to not display properly. For most browsers on PC hitting F12 brings up the browser’s console.
-
Sorry about that. does this help?
-
@baird1fa thanks that is what I was looking for. Looks like a value is coming in empty from the OM that needs to be accounted for. Thanks
In the mean time on general settings you can switch to the FFF dashboard and see the original screen until this gets resolved.