Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Relationship between G60 and G1 Rnn feed rates

    Scheduled Pinned Locked Moved Unsolved
    Gcode meta commands
    1
    1
    98
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • OwenDundefined
      OwenD
      last edited by

      I have been playing around with stall sensing and whilst I have the general functionality working well, there is one aspect that I can't quite nail down.
      What I was trying to do was.

      • Sense a stall
      • Store the point where the stall happened (G60 S3)
      • If a print is in progress, re-home X & Y
      • Slowly move back to a point 5mm above the saved restore point
      • Lower back to the restore point
      • Continue the print.

      What seems to happen is that after the re-home moves, the tools moves back to the restore point at whatever the feed rate was at the time of the stall and THEN moves up 5mm and back down again.

      I also note that the feed rate shown in the object model doesn't seem to reflect anything.
      state.restorePoints[3].feedRate
      In fact it stays at 50mm/sec.
      I don't know if this is a bug or if it is intended to be used for something else.

      This is my macro as it now stands

      ;0:/sys/driver-stall.g
      echo " A driver stall has occured on driver " ^ param.D
      echo "Layer shifting may have occured at X:",move.axes[0].machinePosition, "Y:", move.axes[1].machinePosition, "Z:", move.axes[2].machinePosition
      echo "Requested speed is " , move.currentMove.requestedSpeed, "mm/sec. Top speed is", move.currentMove.topSpeed, "mm/sec"
      ; check if a driver stall is already being acted on.
      echo "Driver stall macro already running - no further action taken"
      	M99 ; exit macro
      M400
      if job.file.fileName!= null ; check if we are printing
      	set global.InMacro=true	
      	G60 S3 ; save position to slot 3
      	echo "File position is ", job.filePosition, "bytes"
      	echo "Physical position is X:",move.axes[0].machinePosition, "Y:", move.axes[1].machinePosition, "Z:", move.axes[2].machinePosition
      	G4 P5
      	; if a tool is selected and the heater is up to temp we'll retract
      	if heat.heaters[tools[max(state.currentTool,0)].heaters[0]].current > heat.coldRetractTemperature
      		G10
      	G1 F1800 ; reduce speed before homing
      	G28 X Y ; home X & Y
      	G1 F1200 ; reduce speed when travelling back to saved slot
      	G1 R3 X0 Y0 Z5; travel to 5mm above stall position
      	M400
      	G1 F60 ; reduce speed
      	G1 R3 X0 Y0 Z0 ; move to stall position
      	M400
      	; if a tool is selected and the heater is up to temp, we'll un-retract if required.
      	if (heat.heaters[tools[max(state.currentTool,0)].heaters[0]].current > heat.coldExtrudeTemperature) && (tools[max(state.currentTool,0)].isRetracted)
      		G11
      	set global.InMacro = false
      
      1 Reply Last reply Reply Quote 0
      • OwenDundefined OwenD marked this topic as a question
      • First post
        Last post
      Unless otherwise noted, all forum content is licensed under CC-BY-SA