Print completes but DWC status shows "BUSY" 3.3b2 SBC
-
When my print job completes, I drop the bed to Z=460, then as far as I'm concerned the job is done. However, DWC shows "BUSY" in the status panel. Whilst in this condition, if I try to deploy/retract the BLTOUCH probe, it doesn't respond. Supporting the case that the board is still busy somehow.
Can anybody suggest how to solve this. In every other way my setup is performing really well.
Out of curiosity, I can still issue G1 commands and the bed will move:
G1 H1 Z445
G1 H2 Z435etc.
-
Post your config.g and your full end gcode.
Grab the results of M122 as well if possible.
-
Thanks as always for the quick response.
CONFIG.G
; Configuration file for Duet 3 (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Oct 20 2020 23:24:45 GMT+0800 (Australian Western Standard Time); General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"RatRig" ; set printer name
M669 K1 ; select CoreXY mode; SET DIRECTION OF TRAVEL FOR STEPPER MOTORS
; X
M569 P3 S0 ; physical drive 0.3 goes forwards; Y
M569 P4 S0 ; physical drive 0.4 goes forwards; Z has three steppers
M569 P0 S0 ; physical drive 0.0 goes forwards - Front left
M569 P1 S0 ; physical drive 0.1 goes forwards - Front right
M569 P2 S0 ; physical drive 0.2 goes forwards - Rear Center; Extruder
M569 P5 S1 ; physical drive 0.5 goes backwards; Z 0 - Back Right
; Z 1 - Front Center
; Z 2 - Back LeftM584 Z0:1:2 X3 Y4 E5 ; set driver mapping for XYZ steppers
M906 X2000 Y2000 Z1900 E1200 I50 ; set motor currents (mA) and motor idle factor in per cent; SCREW LOCATIONS RELATIVE TO HOME (0,0)
; X Y
; Z 0 - Back Right 510 560
; Z 1 - Front Center 271 50
; Z 2 - Back Left 21 560
M671 X526:271:15 Y610:50:610 S50 ; Z-screw locations - front right, front left and rear centerM350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z400.00 E800.00 ; set steps per mm;M566 X4000.00 Y4000.00 Z20.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
;M203 X10000.00 Y10000.00 Z3100.00 E1200.00 ; set maximum speeds (mm/min)
;M201 X9000.00 Y9000.00 Z500.00 E250.00 ; set accelerations (mm/s^2)M203 X10000.00 Y10000.00 Z3100.00 E4000.00 ; set maximum speeds (mm/min)
M566 X4000.00 Y4000.00 Z100.00 E400.00 ; set maximum instantaneous speed changes (mm/min)
M201 X9000.00 Y9000.00 Z500.00 E400.00 ; set accelerations (mm/s^2)M84 S30 ; Set idle timeout
; Axis Limits
; NOTE X0 Y0 is purge position X>20 Y=0 Wipe
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X515 Y500 Z470 S0 ; set axis maxima; Endstops
M574 X1 S1 P"io0.in" ; configure mechanical endstop for low end on X
M574 Y1 S1 P"io1.in" ; configure mechanical endstop for low end on Y
M574 Z1 S2 ; Z uses probe for endstop; Filament sensor ; configure Z-probe endstop for low end on Z
M591 P1 D0 C"io2.in" S1 ; configure filament runout sensor; Z-Probe
M950 S0 C"io5.out"
M558 P9 C"io5.in" H7 R1 F750 T10000 A3 S0.03 B1 ; set Z probe type to bltouch and the dive height + speeds
G31 P500 X35 Y5 Z2.30 ; set Z probe trigger value, offset and trigger heightM557 X50:450 Y10:460 S50 ; define mesh grid
; Bed Heater
M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0
M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limitM140 H0 ; map heated bed to heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C; Nozzle Heater
M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1
M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H0 S285 ; set temperature limit for nozzle 0 to 285C; Part cooler fan
M950 F0 C"out8" ; create fan 0 on pin out7 and set its frequency
M106 P0 S0 H-1 C"Part Cooling" ; set fan 0 value. Thermostatic control is OFF; Heat sink fan
M950 F1 C"out9" ; create fan 1 on pin out4 and set its frequency
M106 P1 S1 H1 T45 C"Volcano" ; set fan 1 value. Thermostatic control is ON; Tools
M563 P0 S"Volcano" 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; Miscellaneous
M501 ; load saved parameters from non-volatile memoryPREPARE FOR JOB TO START MACRO (raises my bed from its parked position, heats up etc.)
M0 ; all heaters off
M140 S70 ; heat the bed
T0 ; select first tool
G10 S210 ; heat nozzleG32 ; level the bed
;M98 P"/macros/calibration/get_levels_3.g"
;G29
G28 XY
JOB COMPLETE MACRO
M0 ; all heaters off
G1 H2 Z460 F3000 ; Drop the bed
G1 H2 X1 Y1 F8000 ; Move head near home positionBED.G (just in case)
M561 ; clear any bed transform
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
G28while true
G30 P0 X460 Y460 Z-99999 F12000 ; probe front left G30 P1 X260 Y10 Z-99999 F12000 ; probe back centre G30 P2 X45 Y460 Z-99999 F12000 S3 ; probe front right if move.calibration.initial.deviation <= 0.03 echo "Leveling successful. Deviation: " ^ move.calibration.initial.deviation ^ "mm" break if iterations >= 10 break echo "Repeating leveling because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)"
-
Quick additional notes. After power on and completion of the PREPARE macro, I can execute G29 and get a height map. I can then deploy and retract probe.
I'll try some different GCODE sequences to see if I can isolate what might leave the status as busy.
-
OK this is interesting - this is a macro I wrote to do an initial purge. After I run this script, when executing GCODE to deploy probe the probe doesn't actually deploy. But the status isn't showing busy. If I send M999 I can then execute deploy probe again.
PURGE MACRO (results in probe not deploying after this is executed)
T0 ; select Tool 0
G1 X150 Y495 Z50 ; Drop the bed to allow clear space for the nozzle and move to purge bucket
G92 E0
G1 E100 F300 ; purge 10mm
G92 E0G91
G1 X-75 F3000 ; Wipe the head side to side
G1 X75 F3000
G1 X-75 F3000
G1 X75 F3000G90
G28 XY ; Home X and Y
-
Confirming that running my prepare macro is ok, and probe deploys / retracts. After running the purge script the probe becomes unresponsive. I thought it would be useful to capture M122 whilst it was in this state. Hope that helps...
M122
=== Diagnostics ===
RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (SBC mode)
Board ID: 08DJM-956BA-NA3TJ-6J9DL-3S86J-9T9AT
Used output buffers: 1 of 40 (10 max)
=== RTOS ===
Static ram: 154604
Dynamic ram: 162848 of which 44 recycled
Exception stack ram used: 552
Never used ram: 75168
Tasks: NETWORK(ready,1980) HEAT(blocked,1200) CanReceiv(suspended,3820) CanSender(suspended,1420) CanClock(blocked,1436) TMC(blocked,68) MAIN(running,4952) IDLE(ready,76)
Owned mutexes:
=== Platform ===
Last reset 00:02:27 ago, cause: software
Last software reset at 2021-03-13 05:20, reason: User, spinning module LinuxInterface, available RAM 74760 bytes (slot 3)
Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0444a000 BFAR 0x00000000 SP 0xffffffff Task MAIN
Error status: 0
MCU temperature: min 38.4, current 38.5, max 38.8
Supply voltage: min 27.9, current 29.4, max 29.4, under voltage events: 0, over voltage events: 0, power good: yes
12V rail voltage: min 12.2, current 12.2, max 12.3, under voltage events: 0
Driver 0: standstill, reads 60320, writes 17 timeouts 0, SG min/max 0/130
Driver 1: standstill, reads 60320, writes 17 timeouts 0, SG min/max 0/138
Driver 2: standstill, reads 60321, writes 17 timeouts 0, SG min/max 0/128
Driver 3: standstill, reads 60321, writes 17 timeouts 0, SG min/max 0/222
Driver 4: standstill, reads 60321, writes 17 timeouts 0, SG min/max 0/219
Driver 5: standstill, reads 60322, writes 17 timeouts 0, SG min/max 0/61
Date/time: 2021-03-13 05:22:37
Slowest loop: 4.87ms; fastest: 0.14ms
=== Storage ===
Free file entries: 10
SD card 0 not detected, interface speed: 37.5MBytes/sec
SD card longest read time 0.0ms, write time 0.0ms, max retries 0
=== Move ===
Hiccups: 0(0), FreeDm: 375, MinFreeDm: 371, MaxWait: 31970ms
Bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves: 38, completed moves: 38, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
=== AuxDDARing ===
Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
=== Heat ===
Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
Heater 1 is on, I-accum = 0.0
=== GCodes ===
Segments left: 0
Movement lock held by null
HTTP* is ready with "M122" in state(s) 0
Telnet is idle in state(s) 0
File is idle in state(s) 0
USB is idle in state(s) 0
Aux is idle in state(s) 0
Trigger* is idle in state(s) 0
Queue is idle in state(s) 0
LCD is idle in state(s) 0
SBC is idle in state(s) 0
Daemon* is idle in state(s) 0
Aux2 is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== Network ===
Slowest loop: 0.83ms; fastest: 0.01ms
Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
HTTP sessions: 0 of 8- Ethernet -
State: disabled
Error counts: 0 0 0 0 0
Socket states: 0 0 0 0 0 0 0 0
=== Filament sensors ===
Extruder 0 sensor: ok
=== CAN ===
Messages sent 553, longest wait 0ms for type 0
=== Linux interface ===
State: 0, failed transfers: 0
Last transfer: 21ms ago
RX/TX seq numbers: 4243/4245
SPI underruns 0, overruns 0
Number of disconnects: 1
Buffer RX/TX: 0/0-0
=== Duet Control Server ===
Duet Control Server v3.1.1
Trigger:
Finishing macro config.g, started by system
Next stack level
Code buffer space: 4096
Configured SPI speed: 8000000 Hz
Full transfers per second: 30.52 - Ethernet -
-
@vistalert said in Print completes but DWC status shows "BUSY":
JOB COMPLETE MACRO
M0 ; all heaters off
G1 H2 Z460 F3000 ; Drop the bed
G1 H2 X1 Y1 F8000 ; Move head near home positionDo you have a stop.g file present in the system folder? M0 would call that file if it exists.
https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M0_Stop_or_Unconditional_stop
The effect of M0 depends on the state of the machine.
The firmware finishes any moves left in its buffer.
Either: if the axes are homed and if a print is being cancelled (M25), it executes the macro file cancel.g if present.
Or: if M0 is sent at any other time, stop.g is run if present.
All motors are put into idle mode.
If no H1 parameter is present, the heaters are turned off too.For those G1 moves you have added H2 to force movement likely because you've already turned off the motors with M0. Which is kind of a weird way to do it.
I'd suggest you do the moves and then send M0.
I also notice you're using 3.1.1 and using SBC mode. Can you try updating to 3.2.2 with sudo apt update and sudo apt upgrade?
-
Great insights thank you, yes, I can certainly try the upgrade to 3.2.2 this week.
Thanks for the clarification on stop.g. The issue is repeatable outside that context though...i.e. I run the prepare, then purge scripts then the probe stops responding. I can test again after the 3.2.2 upgrade.
-
Still no luck. Long story short, I'd previously configured to join the beta program and at the time there were some sort of certificate errors. Today I didn't get those errors, so did apt-get update/upgrade and am now running v 3.3-b2.
Keeping it simple, the issue is consistent and can be described as executing G28, G32, setting nozzle temperatures, after which I can deploy and retract the probe multiple times. If I extrude, then execute M0 or M1...I can't deploy the probe until I do an emergency stop.
Why this is an issue is because after a print completes, I can't start another print, because without the prove, I can't home the bed for the next job.
So I'm happy to work around for the moment by doing a reset between jobs. Would still appreciate any insights / trouble shooting steps.
-
I'll move to the beta firmware category. There may be an issue with DSF.
It may help if you could test in standalone mode to see if the problem persists. That would help identify if it's a DSF problem or general RRF problem.
-
@Phaedrux re: standalone mode, unfortunately I can't do that.
Thanks for the category change, makes perfect sense.I'll keep trying different things as they occur to me and keep you posted.
-
SOLVED: Issuing M18 to turn off motors results in probe responding to deploy/retract.
Recap of issue:
- Heat nozzle
- Extrude
- BLTOUCH probe does not respond to deploy retract
Suspect cause of issue is incorrectly formed stop, sleep, cancel scripts.
Perhaps these scripts should contain M18.
@Phaedrux many thanks for your assistance and input.
FOLLOW-ON Note in case it helps anyone else. This is my end of job script:
G1 H2 Z460 F3000 ; Drop the bed
G1 H2 X1 Y1 F8000 ; Move head near home position
M18 ; Motors off
M0 ; STOP which turns off heatersI'm not sure why, but whilst there were instructions in stop.g the bed heater was shutdown but not the nozzle. So I emptied stop.g and in my shutdown.g the above results in the bed being parked, all heaters off and motors turned off, which finally results in the probe responding again.