CNC G28 with High End stop
-
@gwilson152 said in CNC G28 with High End stop:
I changed everything accordingly
Perhaps not?
Did you change the endstop configuration in config.g?
How did you change your homing files? -
show us your endstop config at least the M574 part.
Should have Z2 instead of Z1 i think, or maybe you're missing Z completely due an issue with the web config tool?
-
I feel like an idiot. I DID find the issue. Super simple. I have never asked for forum help up to this point in my life, and I chose this issue. Such is life.
The problem was in the homing configuration. I was relying on the configurator too much. I did not consider that G28 was running the homeall script. I only updated the homez script. After hitting the end stop, it was setting Z0 in the homing scripts, so I fixed that in the G92 command.
I could have solved the issue with the end stop being at the low end by adding a subsequent command to lift the cutter in the homing files. Obviously. What a doofus.
I got that fixed, but then decided it would be really nice to have a prompt to manually zero the bit after it found the end stop, as my surface height may change a lot. I did the following in the script:
; homeall.g
; called to home all axes
;
; generated by RepRapFirmware Configuration Tool v2 on Sat Apr 06 2019 08:38:03 GMT-0600 (Mountain Daylight Time)
G91 ; relative positioning
G1 Z50 F6000 S2 ; lift Z relative to current position
G1 S1 X-645 Y-920 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)
G1 X5 Y5 F6000 ; go back a few mm
G1 S1 X-645 Y-920 F360 ; move slowly to X and Y axis endstops once more (second pass)
G1 S1 Z190 F1800 ; move Z up stopping at the endstop
G90 ; absolute positioning
G92 Z175 ; set Z to axis minimum (you may want to adjust this)
G91 ; relative positioning
G1 Z-50 F1800 ; move Z Down 50M291 P"Set Manual Z Height" S2 X1 Y1 Z1
G92 Z0
G90
M292 P0This all works wonderfully when manually selecting "Home All", but when G28 is called from a job, it gives me the prompt and does not allow me to manually move the axis while the job is waiting for the homing to complete. If I just click okay, the job is stuck in a paused state that requires me to reboot in order to regain control. If I could nail this part down, it would resolve any issues I am having heretofore.
One thought I have had is that maybe there is a command to set an offset in the same manner instead of setting Z0 manually.
Thanks again for your help!
-
In case it is helpful, here is my config.g
; Configuration file for Duet WiFi (firmware version 1.21)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v2 on Sat Apr 06 2019 08:38:03 GMT-0600 (Mountain Daylight Time); General preferences
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves; Network
M550 P"ThinkBox CNC" ; Set machine name
M551 P"" ; Set password
M552 S1 ; Enable network
M587 S"DRIVE Upstairs 2.4GHz" P"" ; Configure access point. You can delete this line once connected
M586 P0 S1 ; Enable HTTP
M586 P1 S0 ; Disable FTP
M586 P2 S0 ; Disable Telnet; Drives
M569 P0 S1 ; Drive 0 goes forwards
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S0 ; Drive 2 goes backwards
M584 X0 Y3:4 Z2
M350 X16 Y16 Z16 I1 ; Configure microstepping with interpolation
M92 X640.00 Y640.00 Z640.00 ; Set steps per mm
M566 X900.00 Y900.00 Z900.00 ; Set maximum instantaneous speed changes (mm/min)
M203 X1800.00 Y1800.00 Z1800.00 ; Set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z500.00 ; Set accelerations (mm/s^2)
M906 X2400.00 Y2400.00 Z2400.00 I50 ; 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 X640 Y915 Z185 S0 ; Set axis maxima; Endstops
M574 X1 Y1 Z2 S0 ; Set active low and disabled endstops; Z-Probe
M558 P0 H50 F120 T6000 ; Disable Z probe but set dive height, probe speed and travel speed
M557 X15:600 Y15:800 S20 ; Define mesh grid; Heaters
M140 H-1 ; Disable heated bed; Fans
; Tools
M563 P0 D H ; Define tool 0
G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C; Automatic saving after power loss is not enabled
; Custom settings
-
@gwilson152 said in CNC G28 with High End stop:
M291 P"Set Manual Z Height" S2 X1 Y1 Z1
G92 Z0
G90
M292 P0
This all works wonderfully when manually selecting "Home All", but when G28 is called from a job, it gives me the prompt and does not allow me to manually move the axis while the job is waiting for the homing to complete. If I just click okay, the job is stuck in a paused state that requires me to reboot in order to regain control. If I could nail this part down, it would resolve any issues I am having heretofore.I think can see why that is happening. I will fix it in the next firmware release. Meanwhile, the following might work around it (I haven't tested it). Move all the code in homeall.g that does movement prior to the M291 command into a separate macro file in /sys. In homeall.g, call that file using M98, then do the M291 and subsequent commands.
-
I appreciate the incredibly quick responses. I will do that and report back in case it may help others. I have more projects to execute in the future and will be an avid supporter of Duet. I love your hardware.
-
I gave it a shot, and that didn't affect the behavior. This is what I did...
I moved all of the homing commands into homeall-init.g, and changed my homeall.g to this:
M98 P"homeall-init.g"
M291 P"Set Z Height" S2 X1 Y1 Z1
G92 Z0
M292 P0I am still unable to move any axis with this config. I also tried dumping the M291, G92, and M292 commands in homez-manual.g and only using homeall.g as follows:
M98 P"homeall-init.g"
M98 P"homez-manual.g"That also did not work. So, as a matter of testing, I changed homez-manual.g to:
;M291 P"Set Z Height" S2 X1 Y1 Z1
;G92 Z0
;M292 P0M291 P"TESTING" S2
M292 P0When I click okay in this case, the job does continue as expected. It is only when I call the jog controls in the script that it gets stuck where I cannot move the motors, or even cancel the job.
-
Thanks for trying. I've looked a little further, and I can see why that workaround doesn't work. In brief, the G28 command locks the movement system. The owner of the lock is the channel that executed G28 - which in this case is the SD card. When you try to jog the axes, the source of the jog command (usually DWC or PanelDue) needs to lock the movement system, but can't because it is already owned by the SD card channel. I need to change the firmware to release the lock when M291 is used.
The only way I can see around it until I make that change is to put the M291 and related commands in a separate macro, and call it after the G28 command instead of from within homeall.g.
-
Thank you for your excellent explanation, and for being so proactive in improving the Duet. I see why it has become such a great platform! For those who might be interested in the workaround for this until the firmware is released, I added a "useG28Post" definition to the Fusion 360 post processor in the tool change operation definition by doing this...
Under user-defined properties, added:
properties = { ... useG28Post: true, ... }
Under propertyDefinitions added:
useG28Post: {title:"G28Post Manual Z", description:"Calls M291 Manual Tool Height Calibration", type:"boolean"},
and I changed:
if(properties.homeOnToolChange){ writeBlock(gFormat.format(28)); }
to:
if(properties.homeOnToolChange){ writeBlock(gFormat.format(28)); if (properties.useG28Post){ writeBlock('M98 P"g28post.g"'); } }
Then create your g28post.g macro in the /sys/ directory.
Until dc42 is able to update the firmware, this should allow you to overcome this limitation and do a manual home any time G28 is called, as well as enable/disable in the post process options of Fusion. Hope this will help somebody.
Thanks again!
-Grant -
Well, it looks like I'll have to wait for the firmware update. I posted the last reply too soon, and should have run the test first. The changes to Fusion's post worked fine, and the beginning of the output is as follows:
;1001
;T1 D=6.35 CR=0 - ZMIN=0.501 - FLAT END MILL
G90
G21;ADAPTIVE1
M5
M291 P"Insert Tool 1, D=6.35" R"Tool Change" S2
T1
G28
M98 P"g28post.g"
M3 S10000
G54Same problem. I also changed it to put the M291 command directly in the GCode file instead of calling a macro. Same problem. Bummer!