M291 "Cancel" in gcode gets DWC out of sync
-
I've added some M291 commands to my startup script in my slicer to verify the machine state with the user before starting a print. If the user presses "cancel" the program stops, however, the web interface won't allow a new print to start as it believes a print is already in progress, even though the pause and cancel buttons aren't an option.
M291 P"Clear print area and press ok to continue." S3 T0
How can I fix this? Is it a bug?
Firmware version 3.4.6
-
Can you confirm that DWC is also at version 3.4.6?
-
@Phaedrux Yes. I'm running the duet 3 in SBC mode with a raspberry pi, so I've updated the whole system with "sudo apt update" and "sudo apt dist-upgrade". However, I've had this issue with previous versions as well.
M115 FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6XD FIRMWARE_VERSION: 3.4.6 ELECTRONICS: Duet 3 MB6XD v1.0 FIRMWARE_DATE: 2023-07-21 14:11:58
config.g
; Configuration file for Duet 3 MB 6XD (firmware version 3.4.6) ; executed by the firmware on start-up ; generated by RepRapFirmware Configuration Tool v3.3.15 on Fri Dec 09 2022 12:10:26 GMT-0600 (Central Standard Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"My Printer" ; set printer name ; Declare global variables if !exists(global.T1ActuationDist) global T1ActuationDist = 17 global T2ActuationDist = {global.T1ActuationDist} global T12FeedRt = 1000 global T1ZOffset = -6.2 ; used to be 7.55 global T2ZOffset = {global.T1ZOffset} global layerSpeed = 2400 global pulsarFanSpeed = 0 global mosqFanSpeed = 0 global vacZone1Pin = "1.out2" global vacZone2Pin = "2.out0" global vacZone3Pin = "2.out1" global vacZone4Pin = "2.out2" global pressureAdvanceT0 = 0 global pressureAdvanceT1 = 0.25 global pressureAdvanceT2 = 0.25 else set global.T1ActuationDist = 17 set global.T2ActuationDist = {global.T1ActuationDist} set global.T12FeedRt = 1000 set global.T1ZOffset = -7.55 set global.T2ZOffset = {global.T1ZOffset} set global.layerSpeed = 2400 set global.pulsarFanSpeed = 0 set global.mosqFanSpeed = 0 set global.vacZone1Pin = "1.out2" set global.vacZone2Pin = "2.out0" set global.vacZone3Pin = "2.out1" set global.vacZone4Pin = "2.out2" set global.pressureAdvanceT0 = 0 set global.pressureAdvanceT1 = 0.25 set global.pressureAdvanceT2 = 0.25 ; Wait a moment for the CAN expansion boards to start G4 S2 ; Drive Setup M18 ; disable steppers to disable old axes config ; Drive setup ; TX:X:X:X Min stp pls width, stp ple interval, dir setup time, dir hold time, in microseconds M569 P121.0 S1 R1 T1:2:1:1 ; physical drive X baldy recommends T1:1:0.5:0 but we were using T1:2:1:1 for everything, 0.75:1.5:0.025:1 might make y stall M569 P0.0 S1 R1 T1:2:1:1 ; physical drive Y1 M569 P0.1 S1 R1 T1:2:1:1 ; physical drive Y2 M569 P0.2 S0 R1 T1:2:1:1 ; physical drive Z1 M569 P0.3 S0 R1 T1:2:1:1 ; physical drive Z2 M569 P0.4 S0 R1 T1:2:1:1 ; physical drive Z3 M569 P0.5 S0 R1 T1:2:1:1 ; physical drive Z4 M569 P123.0 S0 R0 ; physical drive E0 Primary Extruder M569 P3.1 S1 R1 ; physical drive E1 Mosquito 1 extruder M569 P3.2 S1 R1 ; physical drive E2 Mosquito 2 extruder M569 P4.0 S1 R1 ; physical drive actuator 1 M569 P4.1 S1 R1 ; physical drive actuator 2 G4 S1 ; wait for drive to setup ; Drive mapping M584 X121.0 ; set drive mapping for x axis M584 Y0.0:0.1 ; set drive mapping for y axis M584 Z0.2:0.3:0.4:0.5 ; set drive mapping for z axes M584 E123.0:3.1:3.2 ; set drive mapping for extruder axes M584 U4.0 ; set drive mapping for mosquito actuator 1 M584 V4.1 ; set drive mapping for mosquito actuator 2 G4 S1 ; wait for drives to be mapped to letters ; Drive config M350 E16:16:16 U1 V1 ; configure microstepping with interpolation M92 X64 Y128 Z6400 E224.6:410:410 U200 V200 ; set steps per mm M566 X600.00 Y600.00 Z60.00 E500:600:600 U600 V600 P1 ; set maximum instantaneous speed changes (mm/min) M203 X35000 Y76050 Z3000 E9000:1200:1200 U300 V300 ; set maximum speeds (mm/min), XYZ speeds based on cont. torque curve and RMS limit, currently at max values. M201 X3000 Y3000 Z1000 E2000:3000:3000 U100 V100 ; set accelerations (mm/s^2) X300 Y300 looks best for mosquitos, Y8000 is RMS risk, not tested above 13000 but could cause coupler failure M906 E2700:600:600 U500 V500 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Brakes M569.7 P0.2 C"out3" S100 ; driver 2 on board 6XD uses port out3 to control the brake M569.7 P0.3 C"out4" S100 ; driver 3 on board 6XD uses port out4 to control the brake M569.7 P0.4 C"out5" S100 ; driver 4 on board 6XD uses port out5 to control the brake M569.7 P0.5 C"out6" S100 ; driver 5 on board 6XD uses port out6 to control the brake ; Endstops M574 X1 S1 P"3.io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin 3.io0.in M574 Y1 S1 P"0.io1.in+io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in and io2.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z M574 U1 S1 P"3.!io3.in" ; configure actuator 1 endstop, high end, microswitch M574 V1 S1 P"3.!io5.in" ; configure actuator 2 endstop, high end, microswitch ; Hobby Servos M950 S0 C"3.io1.out" ; create servo 1 output on 3.io2 for mosquito acutator 1 M950 S1 C"3.io4.out" ; create servo 1 output on 3.io3 for mosquito acutator 2 ;Bed Leveling M671 X1205:1205:-285.1:-285.1 Y-207.2:1451.4:1451.4:-207.2 S1.0 P5 F1.0 ;Define Z screw X Y locations, max correction, pitch, fudge factor ; Axis Limits M208 X0 Y0 Z-10 U0 V0 W0 S1 ; set axis minima M208 X1208 Y1195 Z1200 U17 V17 W100 S0 ; set axis maxima ; Z-Probe ; servo pin defined in fan accessories section ; create servo pin for BLTouch M558 P8 C"!0.io8.in" H4 F300:40 T99999999 R0.5 A5 S0.03 ; set Z probe type and the dive height + speeds R0.5 b/c probe needs time to deploy without triggering. G31 P1000 X47.8 Y-15.2 Z4.1 ; set Z probe trigger value, offset and trigger height for 1mm nozzle M557 X47.8:1160.2 Y15.2:1179.8 P10:10 ; define mesh grid ; Heaters M308 S0 P"0.temp0" Y"PT1000" A"Bed A" ; configure bed A sensor 0 as thermistor on pin temp0 M308 S9 P"0.temp2" Y"PT1000" A"Bed B" ; configure bed B sensor 9 as thermistor on pin temp2 M950 H0 C"0.out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 R0.033 K0.020:0.000 D182.23 E1.35 S1.00 B0 ; disable bang-bang for bed and set pwm M140 P0 H0 S0 R0 ; bed heater 0 uses heater 0 M143 H0 S255 P0 T0 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S1 P"0.temp1" Y"PT1000" A"Chamber A" ; configure chamber A sensor 1 as thermistor on pin temp1 M308 S10 P"0.temp3" Y"PT1000" A"Chamber B" ; configure chamber B sensor 10 as thermistor on pin temp3 M950 H1 C"0.out1" T1 ; create chamber heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang for chamber and set pwm M141 P0 H1 S0 R0 ; chamber heater 1 uses heater 1 M143 H1 S255 P0 T1 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S2 P"3.spi.cs0" Y"rtd-max31865" A"Primary Top" ; configure Primary sensor top as PT100 on pin spi.cs0 M950 H2 C"3.out6" T2 ; create Primary heater output on out3 and map it to sensor 2 M307 H2 A940 C810 D22 S1.0 B0 ; disable bang-bang for Primary and set pwm M143 H2 S480 P0 T2 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S3 P"3.spi.cs1" Y"rtd-max31865" A"Primary Middle" ; configure Primary sensor bottom as PT100 on pin spi.cs1 M950 H3 C"3.out7" T3 ; create Primary heater output on out4 and map it to sensor 3 M307 H3 A940 C810 D22 S1.0 B0 ; disable bang-bang for Primary and set pwm M143 H3 S480 P0 T3 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S4 P"4.spi.cs0" Y"rtd-max31865" A"Primary Nozzle" ; configure Primary sensor nozzle as PT100 on pin spi.cs0 M950 H4 C"4.out8" T4 ; create Primary heater output on out0 and map it to sensor 4 M307 H4 A795 C920 D10 S1.0 B0 ; disable bang-bang for Primary and set pwm M143 H4 S480 P0 T4 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S5 P"3.temp1" Y"PT1000" A"Mosquito 1" ; configure mosquito sensor top as PT1000 on pin 3.temp0 - other thermistor is shorted M950 H5 C"3.out0+out1" T5 ; create Primary heater output on out3 and map it to sensor 2 M307 H5 R2.262 K0.361:0.160 D7.99 E1.35 S1.00 B0 V24.1 ; disable bang-bang for Primary and set pwm M143 H5 S505 P0 T5 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition M308 S6 P"4.temp0" Y"PT1000" A"Mosquito 2" ; configure mosquito sensor top as PT1000 on pin 3.temp0 M950 H6 C"4.out0+out1" T6 ; create Primary heater output on out3 and map it to sensor 2 M307 H6 R2.364 K0.493:0.022 D7.12 E1.35 S1.00 B0 V24.1 ; disable bang-bang for Primary and set pwm M143 H6 S505 P0 T6 A2 C0 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition ; Heater Faults M570 H0 P1000 T15 R10 M570 H1 P1000 T15 R10 M570 H2 P1000 T15 R10 M570 H3 P1000 T15 R10 M570 H4 P1000 T15 R10 ; Accessories M950 F0 C"0.out7" ; create chassis fan 0 on relay M106 P0 S255 H-1 C"Chassis Fan" ; set fan 0 value, thermostatic control off M950 F1 C"0.out8" ; create chamber fan 1 on relay M106 P1 S0 H1 T50 C"Chamber Fan" ; set fan 1 value, thermostatic control from sensor 1 M950 F2 C"0.out2" ; create Primary pc fan 2 M106 P2 S0 H-1 C"Primary Fan" ; set fan 2 value, thermostatic control off M950 F3 C"1.out1" ; create mosquito pc fan 3 M106 P3 S0 H-1 C"Mosquito Fan" ; set fan 3 value, thermostatic control off M950 P0 C{global.vacZone1Pin} ; create bed vac valve 1 M42 P0 S0 ; set output value to off M950 P1 C{global.vacZone2Pin} ; create bed vac valve 2 M42 P1 S0 ; set output value to off M950 P2 C{global.vacZone3Pin} ; create bed vac valve 3 M42 P2 S0 ; set output value to off M950 P3 C{global.vacZone4Pin} ; create bed vac valve 4 M42 P3 S0 ; set output value to off M950 P4 C"2.out6" ; create door locks on relay M42 P4 S0 ; set output value to off M950 F4 C"2.out4" ; create radiator on relay M106 P4 S1 H2:3:4:5:6 T50 C"Radiator" ; set fan 8 value, thermostatic control on M950 P5 C"1.out4" ; create probe on relay M42 P5 S0 ; set output value to off M950 P6 C"2.io1.out" ; create venturi valve was 1.out0 M42 P6 S0 ; set output value to off M950 F5 C"4.out6" ; create head electronics fan M106 P5 S255 H-1 C"Head Fan 1" ; set fan 12 value, thermostatic control off M950 F6 C"4.out7" ; create head electronics fan M106 P6 S255 H-1 C"Head Fan 2" ; set fan 12 value, thermostatic control off M950 P7 C"1.out8" ; create yellow stack led M42 P7 S0 ; set output value to off M950 P8 C"1.out7" ; create green stack led M42 P8 S0 ; set output value to off M950 P9 C"1.out6" ; create white stack led M42 P9 S0 ; set output value to off M950 P10 C"1.out3" ; create beep stack led M42 P10 S0 ; set output value to off M950 P11 C"2.io2.out" ; create E1 stepper override 1 M42 P11 S0 ; set output value to off M950 P12 C"2.io3.out" ; create E1 stepper override 2 M42 P12 S0 ; set output value to off M950 P13 C"2.io4.out" ; create E1 stepper enable M42 P13 S0 ; set output value to off M950 P14 C"2.io5.out" ; create E2 stepper enable M42 P14 S0 ; set output value to off ; Trigger Inputs M950 J0 C"2.io0.in" ; assign input J0 to 2.io0.in for emergency stop M581 P0 T0 S0 R0 ; configur external trigger, pin 0, trigger 0, inactive-active, any time M950 J1 C"2.io1.in" ; assign input J1 to 1.io1.in for pause button M581 P1 T1 S0 R1 ; configure external trigger, pin 1, trigger 1, inactive-active, during print ; Tools M563 P0 S"Primary" D0 H2:3:4 F2 ; define tool 0 as Primary, extruder 0, Heaters 2 3 4, Fan 2 M568 P0 R0 S0 ; set tool 0 active and standby temperatures to 0C G10 P0 X0 Y0 Z0 U0 V0 W0 ; set tool 0 axis offests M563 P1 S"Mosquito 1" D1 H5 F3 ; define tool 1 as Mosquito 1, extruder 1, Heaters 5, Fan 3 was H5:6 M568 P1 R0 S0 ; set tool 1 active and standby temperatures to 0C G10 P1 X-71.815 Y-10.976 Z{global.T1ZOffset} U0 V0 W0 ; set tool 1 axis offests M563 P2 S"Mosquito 2" D2 H6 F3 ; define tool 2 as Mosquito 2, extruder 1, Heaters 6, Fan 3 was H7:8 M568 P2 R0 S0 ; set tool 2 active and standby temperatures to 0C G10 P2 X-71.815 Y41.411 Z{global.T2ZOffset} U0 V0 W0 ; set tool 2 axis offests ; Custom settings are not defined ; Miscellaneous G4 S2
Slicer startup script
M42 P7 S0 ; turn off yellow led M42 P8 S255 ; turn on green led M42 P9 S0 ; turn off white led M98 P"0:/sys/vacuumall.g" ; Conditional vacuum M568 P0 R220:240:220 S[extruder0_temperature]:[extruder1_temperature]:[extruder2_temperature] A2 ; Turn on Primary M568 P1 R220 S[extruder3_temperature] A2 ; Turn on Mosquito 1 M568 P2 R0 S[extruder4_temperature] A2 ; Turn on Mosquito 2 M140 S[bed0_temperature] ; Turn on bed M141 S[chamber0_temperature] ; Turn on chamber M42 P6 S1 ; Enable venturi M291 P"Clear print area and press ok to continue." S3 T0 M98 P"0:/sys/condHomeAll.g" ; Conditional homing M572 D0:1:2 S0 ; Pressure Advance enabled on layer 2 in post processing G29 S1 ; Load mesh leveling and activate compensation M376 H2 ; Enable for first 2mm of layers M98 P"0:/sys/quickAccel.g" ; go fast because big nozzle G1 X10 Y10 Z50 ; Move to safe waiting zone M116 S5 ; Wait until all temps within range T0 ; select Primary tool G1 X0 Y0 Z1 F20000 ; go to purge location G1 X500 E400 F2000 ; purge
-
One for @chrishamm I think?
-
@p8blr Thanks for reporting this, I can confirm it is a bug. I've got a bug fix ready for the next firmware version(s).
-
@chrishamm Great to hear a fix is on the way. Thanks!