Aborting tool change possible?
-
Is it possible to abort a tool change when the pickup fails? Currently i run a tool locking macro that checks wether or not the tool is locked, if not it should put the printer into a safe state so i can manually do the things needed to manually dock the tool or sort the stuff out. But right now the duet thinks the tool is attached even if the macro detects the failure i have no idea how to abort the tool change and e.g pause the print. Is there or will there be an option for that? i think it can be very helpful.
-
What firmware version are you using? What do you have in your macros now?
-
Can you check the lock then use an M291 message and/or M01 program stop, in the tpost.g for each tool?
This is an example of checking inputs directly & stopping with a message if conditions are not correct, for the E3D toolchanger if you use tool docked switches; it shows reading hardware inputs and a conditional message:
if sensors.gpIn[0].value = 0 || sensors.gpIn[1].value = 0 || sensors.gpIn[2].value = 0 || sensors.gpIn[3].value = 0 M291 S1 T5 P"Please return tool to dock before homing coupler" R"Can't home coupler" abort
-
This post is deleted! -
I am using RRF 3.3 and the macro:
; Engage the toolchanger lock. RepRap Firmware V3.3RC3 version. G91 ; Set relative mode G1 U10 F5000 H0 ; Back off the limit switch with a small move G1 U200 F5000 H3 ; Perform up to one rotation looking for the torque limit switch Y0.5 ; H3 will modify axis limits they must be reset with M208 see below (use your axis limits) ;Pickup success detection | Aborts if no Tool picked up M400 ; Make sure moves are complete if {abs(move.axes[3].machinePosition) > 90 || abs(move.axes[3].machinePosition) < 20} ;if tool is not picked up | (Change 20 (half pickup) and 90 (no Pick up) to the value you need) echo move.axes[3].machinePosition ;debug output of the reached position M208 U0:201 ;restore axis limits (see above H3) set global.tool_change_Aborted = true ;send error condition M98 P"/macros/tool_change/tool_unlock.g" ; Unlock the tool G1 Y-20 ;back off M291 P"Werkzeug nicht richtig geladen. Ursache gefunden und behoben? Erneut versuchen!" R"Warnung Werkzeug nicht aufgenommen" S3 T-1 x1 Y1 U1 set global.tool_change_Aborted = false T{state.currentTool} if{job.duration != null} M25 ;pause job echo "Paused" else abort "Aborted" ;Behaviour after successful pick up echo "Picked up Tool",{state.currentTool} ;success message set global.tool_change_Aborted = false ;reset error condition M208 U0:201 ;restore axis limits (see above H3) G90 ; Set absolute mode
I will look into using M0 /M1 .