Daemon.g not running when printer in Busy
-
Hello,
I have some processes running inside my daemon.g that need to run every second. I discovered that when doing a long extrusion (100mm @ 5mm/s) the daemon.g file was not executed. I also found the same phenomenon when doing an X movement (G1 X400 F50).
This behaviour can't be suitable for my installation, I use pneumatic elements that have to be restarted according to sensor inputs.
Do you have a solution to solve this problem? Thanks
-
@e4d you could try enabling segmentation.
M669 S1 T1
-
@e4d as @jay_s_uk said, but i would go with a higher segmentation frequency if you need deamon.g to loop every second. Maybe segment the moves to a 5x per second.
also make sure your daemon.g loop is quick to execute between the waits (have only what you really need in there if its only waiting 1 second between while loops).
-
@T3P3Tony I tried doing that with M669 S5 T1 but still no response. I put : echo "daemon" inside the daemon.g running every second and if I try to execute G1 Y0 F50 going from Y-80 the console show no sign of echo text
-
@e4d try using M118 P3 to send to the console on DWC.
please post the deamon.g here
-
@T3P3Tony here's my daemon.g :
while global.runDaemon == true echo "daemon" ; Voyant Pause if state.status = "paused" M42 P13 S1 else M42 P13 S0 ;voyant rouge if heat.heaters[0].current >= 50 || heat.heaters[3].current >= 50 M42 P17 S1 else M42 P17 S0 ;G4 S1 G4 P200
I tried using
M669 X1:0:0:0:0 Y0:1:0:0:0 Z0:0:1:0:0 A0:0:0:1:0 C0:0:0:0.5:1 S600
to update even more frequently but with no success. I also have some light on/off in my daemon so the issue is not only console related
-
@e4d i wont not have such a shot wait between loops.
Try the M118 P3 method to echo to ensure you daemon is running.
-
@T3P3Tony i tried putting G4 S1 to reduce the time between loops and put M118 P3 S"daemon" in daemon.g. When doing a long slow move the console is not showing anything.
Is it the daemon.g not running ?
-
-
@T3P3Tony it is set to true I checked with "echo global.runDaemon". The message "daemon" is showing every second until I do a "G1 X50 F50" starting from X0 then there's nothing in the console. When the movement is finished the message is back
-
-
@e4d which firmware version are you using? The daemon should run concurrently with motion as long as it doesn't try to execute motion-related commands. However, in some older firmware versions the G4 command caused it to wait for motion to stop.
-
@dc42 i'm running RRF 3.4.5 and DWC 3.4.5 on a Duet3 6HC.
I tried to do further testing. It seems that if there's something more than the M118 P3 it doesn't work anymore. I tried putting a M42 in the daemon after the M118, nothing more, and it does'nt work. -
@dc42 do you have any idea how I could solve this segmentation problem ?
-
@e4d I can see that the M42 command might get held up if you are doing a G2 or G3 move, or a long linear move and you have segmentation enabled. I think I need to change the logic so that when M42 is executed by the daemon, and the daemon hasn't commanded any movement since it last waited for movement to stop, the command is executed immediately without any attempt to sync it to the movement commands already queued.
Meanwhile, you may be able to get this working by putting one of the parameters in { } for example M41 P{13} S1. This will make the parser think that there is an expression to be evaluated, and in current firmware it will not attempt to sync the command with motion.