M25 doesn't pause the print ?



  • I'm using M25 to pause print in a trigger file when a sensor detects that the tool change wasn't executed correctly . The trigger is executed , printer executes the moves that I have in pause.g file , then it just continues the print.The pause button dissapears from the panel due, if I try to send m25 from console it returns " Error: M25: Printing is already paused!!" I tried to send M226 from console but nothing happened.

    The expected behaviour shoud be :check the sensor-execute pause.g - pause the print.


  • administrators

    Firmware version?



  • 3.0 rc1 on a duet wifi+ duex. I know it may not make a lot of sense my first post so these are the relevant files :
    config.g

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.3 on Fri Nov 29 2019 18:20:35 GMT+0000 (Greenwich Mean Time)
    
    ; General preferences
    G90                                                                       ; send absolute coordinates...
    M83                                                                      ; ...but relative extruder moves
    M550 P"Duet MMU"                                          ; set printer name
    
    ; Network
    M552 S1                                                             ; enable network
    M586 P0 S1                                                       ; enable HTTP
    M586 P1 S0                                                        ; disable FTP
    M586 P2 S0                                                       ; disable Telnet
    
    ; Drives
    
    M569 P0 Y3:3:1 F12 S1                               ; physical drive 0 goes forwards Selector (U)
    M569 P1 S0		                                       ; physical drive 1 goes backwards Tumbler (W)  
    M569 P2 R-1                                                 ; Z drive disabled (I burnt the driver) 
    M569 P3 Y3:3:1 F12 S1                               ; physical drive 3 goes forwards Extruder (E)
    M569 P4 Y3:3:1 F12 S1                               ; physical drive 4 goes forwards X axis (X)
    M569 P5 Y3:3:1 F2 S1                                 ; physical drive 5 goes forwards Z axis (Z1)
    M569 P6 Y3:3:1 F2 S1                                 ; physical drive 6 goes forwards Z axis (Z2)	
    M569 P7 Y3:3:1 F12 S0                               ; physical drive 7 goes backwards Y axis (Y)
    M569 P8 Y3:3:1 F12 S0                               ; physical drive 8 goes backwards Filament drive axis mmu (V)
    
    M584 U0 W1 E3 X4 Z5:6 Y7 V8 A3 P7        	                                ; set drive mapping
    M350 X16 Y16 Z16 E16 A16 U16 V16 W16 I1  	          	          	; Configure microstepping with interpolation
    M92 X200 Y200 Z400 E473 A473 U400 V140 W26			   		; Set steps per mm
    M566 X800 Y800 Z60 E3000 A3000 U400 V2000 W2000 P1                       	; Set maximum instantaneous speed changes (mm/min)
    M203 X12000 Y12000 Z900 E6000 A7200 U5000 V10000 W20000                     	; Set maximum speeds (mm/min)
    M201 X6000 Y6000 Z200 E5000 A2500 U500 V2000 W2000                      	; Set accelerations (mm/s^2)
    M204 P600 T3000									; Set accelerations (mm/s^2) for print and travel moves
    M906 X1500 Y1500 Z600 E600 A600 U1200 V1300 W1300 I30                     	; Set motor currents (mA) and motor idle factor in per cent
    M84 S30                                          				; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 U0 V-1000 A-1000 W0 S1 					       	; Set axis minima
    M208 X247 Y210 Z246.60 U75 V1000 A1000 W78 S0     			        ; Set axis maxima
    
    ; Endstops
    M574 U1 W1 S3				        ; configure mmu2 sensorless endstops for selector (u) and tumbler (W)
    M574 V2 S1 p"zstop"				   ; configure mmu2 filament feeder endstops at max end active-high
    M574 A2 S1 P"!e0stop"		    ; configure false extruder axis endstop at max end active-low, also split to xstop
    M574 X1 S1 P"e1stop"                            ; configure active-high endstop for low end on X via pin e1stop
    M574 Y1 S1 P"ystop"                              ; configure active-high endstop for low end on Y via pin ystop
    M574 Z1 S2                                                          ; configure Z-probe endstop for low end on Z
    
    
    ; Z-Probe
    M950 S0 C"duex.pwm5"                                        	                ; create servo pin 0 for BLTouch
    M558 P9 C"^zprobe.in" H5 F600 T9000            ; set Z probe type to bltouch 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
    G31 P25 X29 Y0 Z1.02                            	     ; set Z probe trigger value, offset and trigger height
    M557 X29:242 Y0:210 P7:7							; define mesh grid
    M671 X-48:285 Y105:105 S2			     ; leadscrews at rear left middle and right middle
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138             ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                                    ; create bed heater output on bedheat and map it to sensor 0
    M143 H0 S120                                                         ; set temperature limit for heater 0 to 120C
    M307 H0 B0 S1.00                                     ; disable bang-bang mode for the nozzle heater and set PWM limit
    M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8                ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1              ; create nozzle heater output on e0heat and map it to sensor 1
    M143 H1 S280                                                    ; set temperature limit for heater 1 to 280C
    M307 H1 B0 S1.00                ; disable bang-bang mode for the nozzle heater and set PWM limit
    
    ; Fans
    M950 F0 C"fan0" Q500                                    ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                       set fan 0 value. Thermostatic control is turned off
    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
    
    ; Tools
    M563 P0 D0 H1 F0                                                                ; 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
    M563 P1 D0 H1 F0                                                                ; define tool 1
    G10 P1 X0 Y0 Z0                                                                 ; set tool 1 axis offsets
    G10 P1 R0 S0                                          ; set initial tool 1 active and standby temperatures to 0C
    M563 P2 D0 H1 F0                                                                ; define tool 2
    G10 P2 X0 Y0 Z0                                                                 ; set tool 2 axis offsets
    G10 P2 R0 S0                                         ; set initial tool 2 active and standby temperatures to 0C
    M563 P3 D0 H1 F0                                                                ; define tool 3
    G10 P3 X0 Y0 Z0                                                                 ; set tool 3 axis offsets
    G10 P3 R0 S0                                    ; set initial tool 3 active and standby temperatures to 0C
    M563 P4 D0 H1 F0                                                                ; define tool 4
    G10 P4 X0 Y0 Z0                                                                 ; set tool 4 axis offsets
    G10 P4 R0 S0                                       ; set initial tool 4 active and standby temperatures to 0C
    
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M18 G92 G1 H2 Z0.002 G90					; energise z motors
    M501                                               		; load saved parameters from non-volatile memory
    M911 S21 R23 P"M913 X0 Y0 G91 M83 G1 Z2 E-5 F1000"  ; set voltage thresholds and actions to run on power loss
    
    M581 P"zstop" T7 C0								; activate trigger 6 on rising edge 
    M582 T7			 				; check filament sensor to confirm extruder is unloaded
    M581 P"nil" T7 C0		 						; deactivate trigger 6
    
    M581 P"!e0stop" T6 C0		 						; activate trigger 6 on rising edge 
    M582 T6			 	 		; check filament sensor to confirm extruder is unloaded
    M581 P"nil" T6 C0		 						; deactivate trigger 6
    


  • tpre0.g

    ; called before tool 0 is selected
    
    M574 V2 S1 P"zstop"		; set V axis max endstop to switched high 
    M581 P"zstop" T7 C0		; activate trigger 7 on raising edge
    M582 T7			 	; check finda sensor to confirm no filament is loaded
    M581 P"nil" T7 C0	 	; deactivate trigger 7
    G1 U1 F2000           		     ; move selector to T0 position
    G1 W4 F10000	      		; move idler to T0 position
    M400		     	                 ; wait for moves to stop
    M98 P"loadselector.g"
    M98 P"loadextruder.g"
    

    loadselector.g

    G91				; relative moves
    G1 V300 H1 F1440                ; feed filament to finda sensor
    G92 V0				; force V to 0mm
    G1 V100 H1  F1440		; feed a bit more to reliably switch sensor 
    G92 V0				; force V to 0mm
    G1 V30 H0 F2000			; feed filament to reach ptfe tube
    G92 V0				; force V to 0mm
    M400				; wait for moves to finish
    M581 P"!zstop" T2 C0		; activate trigger 2 on falling edge
    M582 T2			 	; check finda sensor to confirm loading successful
    M581 P"nil" T2 C0	 	; deactivate trigger 2
    M400				; wait for moves to finish
    G90
    

    loadextruder.g

    G91
    M574 V2 S1 P"!xstop" 		; set V axis max endstop to switched low
    M574 A2 S1 P"!e0stop"		; set A(extruder) axis max endstop to switched low
    G1 H1 V390 F6000		; fast feed filament into the tube (set this 30-40mm shorter than the actual length of ptfe tube)
    G1 H1 V600 A600 F3000	        ; fast feed filament into extruder (feed filament with both mmu and extruder until filament sensor triggers)
    G92 V0 A0			; force V and A to 0mm
    M400				; wait for moves to finish
    M581 P"e0stop" T3 C0		; activate trigger 2 on falling edge
    M582 T3				; check filament sensor to confirm loading successful
    M581 P"nil" T3 C0	 	; deactivate trigger 	
    M400				; wait for moves to finish
    G1 H2 V5 A5 F720		; feed 5mm filament into extruder gears
    G90				; absolute moves
    

    tpost0.g

    M116 P0				; wait for nozzle heat up
    G1 W78 F10000			; move W to safe position
    

    tfree0.g

    G1 W4 F10000				 ; select T0 with idler
    M98 P"unloadextruder.g"
    M98 P"unloadselector.g"
    

    trigger2.g

    M25
    M291 P"MMU loading failure detected" S3
    

    trigger3.g

    M25
    M291 P"Extruder loading failure detected" S2
    

    trigger4.g

    M25
    M291 P"Extruder unloading failure detected" S2
    

    trigger5.g

    M25
    M291 P"MMU unloading failure detected" S2
    

    trigger6.g

    M584 P3
    M291 P"Extruder loaded. MMU homing not allowed.Please unload extruder manually." S2
    M25
    

    trigger7.g

    M584 P3
    M291 P"MMU loaded. MMU operations not allowed.Please unload MMU manually." S2
    M25
    

    Fun fact, I also have a trigger10.g, just to test if the limit of 9 triggers still applies , and it works :
    trigger10.g

    M584 P7 
    G28 UVWA
    

    Trigger10 is used by homemmu.g :

    ;M291 P"(Re)home MMU?" S3
    
    M574 V2 S1 p"zstop"			; configure mmu2 filament feeder endstops at max end active-high
    M574 A2 S1 P"!e0stop"				; configure false extruder axis endstop at max end active-low
    
    M581 P"zstop" T7 C0							; activate trigger 6 on rising edge 
    M582 T7			 			; check filament sensor to confirm selector is unloaded
    M581 P"nil" T7 C0		 						; deactivate trigger 6
    
    M581 P"!e0stop" T6 C0		 						; activate trigger 6 on rising edge 
    M582 T6			 	 		; check filament sensor to confirm extruder is unloaded
    M581 P"nil" T6 C0		 						; deactivate trigger 6
    
    M581 P"!zstop+e0stop" T10 C0
    M582 T10
    M581 P"nil" T10 C0	
    

    pause.g

    ; pause.g
    ; called when a print from SD card is paused
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.2 on Thu Nov 21 2019 10:36:05 GMT+0000 (Greenwich Mean Time)
    M83            ; relative extruder moves
    G1 E-10 F3600  ; retract 10mm of filament
    G91            ; relative positioning
    G1 Z5 F360     ; lift Z by 5mm
    G90            ; absolute positioning
    G1 X0 Y220 F6000 ; go to X=0 Y=0
    
    

  • administrators

    Thanks, this is on my list to investigate.

    MaxTriggers is set to 16 in RRF3 for Duet 2.


  • administrators

    There was a problem with using M25 while the machine was doing a tool change. Please try the Duet2CombinedFirmware.bin file at https://www.dropbox.com/sh/3azy1njy3ayjsbp/AACquxr2m00eV568RZg5QG5wa?dl=0.



  • M25 during tool change works now, thank you.


Log in to reply