3.5.0b4 losing XYZ position after print completes?
-
Hi,
I've had a few situations recently where after a print my Duet3 running 3.5.0b4 has seemed to have lost track of actual XYZ position. This is going to be a little vague, but hopefully with some help I can provide some more useful information.
After a long print print last night, which completed with no problems, I noticed that Y position was no longer accurate. Homing of course solves this. Turns out that Z position was also not accurate (I didn't notice), and so I ended up getting an air print on the following print (b/c my start code doesn't home Z).
This is the second time that this has happened (i.e., air print after successful print) since moving to 3.5.0b4 not long ago, but it isn't happening after every print. If I get a short print that does this, I will see if I can repeat. Other thoughts? Anyone else see something similar?
Thanks!
Rob
--
start.g:
T0 ; Select tool 0 M290 R0 Z0 ; Remove any babystepping M220 S100 ; Remove any speed tweaking M204 S10000 ; Remove any acceleration tweaking M106 P2 S0.50 ; Electrical box fan to 50% M106 P3 S1.0 B0.1 L0.1 X1.0 T45:60 H12 ; Chamber fan spins up at 45C ; ; NOTE: M703 needs to follow babystepping reset, as filament config uses it for filament tweaks ; M703 ; Run current filament config.g script
filament gcode:
M221 D0 S97 ; Extrusion multiplier M572 D0 S0.06 ; Pressure advance (was 0.13) M290 R1 Z0.02 ; Baby step for this filament
prusaslicer gcode:
G1 Z11 F300 M400 ; wait for Z move to complete G28 X ; home X G28 Y ; home Y G1 X0 Y40 Z 5 F5000 ; shift to front left M140 S[first_layer_bed_temperature] R0 ; set bed temp, start heating, don't wait M568 P0 S160 R160 ; set extruder temp to get started, start heating, don't wait M116 ; wait on temps (wait for bed to get up to temp) M568 P0 S[first_layer_temperature] R160 ; set extruder temp to desired print temp M116 ; wait on temps ; wipe M83 ; ensure relative extrusion G92 E0 G1 X5 Y45 Z0.9 ; position for wipe -- very close to front!! G1 Y100 E12 F500 ; purge onto plate G1 Y100 F5000 ; pull away G92 E0
stop.g:
M568 P0 R0 S0 A0 ; turn off extruder (set temps to 0 and don't wait, replaces M104) M140 S0 R0 ; turn off bed (set temp to 0 and don't wait) M144 ; set bed to standby M106 S0 ; turn part fan off M106 P2 S0 ; turn electronics fan off M106 P3 T35 S1.0 ; blast chamber fan; turn chamber fan off when chamber temp is < 30C T99 ; unselect T0 by picking a nonexistent tool M290 R0 Z0 ; Remove any babystepping M220 S100 ; Remove any speed tweaking M204 S10000 ; Remove any acceleration tweaking G91 ; relative movement G1 Z50 F5000 ; lift nozzle 50mm G90 ; absolute movement G1 X20 Y250 ; go to back left
-
Can you post your config,g as well?
What is the idle current for the motors set to?
-
@paralepsis said in 3.5.0b4 losing XYZ position after print completes?:
G91 ; relative movement
G1 Z50 F5000 ; lift nozzle 50mm
G90 ; absolute movement
G1 X20 Y250 ; go to back leftYou have quite a big Z and Y relative move at the end of the print. Could it be that this is beyond the limits of the machine, or something else stops it moving and causes Y and Z to skip at the end of the print? if you take the last few lines of the Gcode file, so you know the position of the axes at the end of the print, and run the above commands, what happens?
Also, the M204 command
M204 S10000
is incorrect. RRF does not support an S parameter. See https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m204-set-printing-and-travel-accelerationsIan
-
@Phaedrux sure.
; RailCore RRF standalone for Duet3 ; From: https://github.com/railcore/configs ; G21 ;Work in millimetres G90 ;Send absolute coordinates... M83 ;...but relative extruder moves ; Stepper configuration ; https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter ; ; M569 P0 S0 ; X motor runs forwards -- +X+Y ; M569 P1 S0 ; Y motor runs forwards -- +X-Y ; Switch S parameter 0->1 or 1->0 if carriage moves the wrong way. ; ; Filastruder kit is LDO 0.9 degree steppers for X,Y, Z and Extruder ; M569 P0 S1 D3 ;Drive 0 X / Rear M569 P1 S0 D3 ;Drive 1 Y / Front M569 P2 S1 D3 ;Drive 2 Z Front Left M569 P3 S1 D3 ;Drive 3 Z Rear Left M569 P4 S1 D3 ;Drive 4 Z Right M569 P5 S1 D3 ;Drive 5 Extruder ; Axis configuration ; M669 K1 ;corexy mode M584 X0 Y1 Z2:3:4 E5 ; Map X to drive 0 Y to drive 1, Z to drives 2, 3, 4, and E to drive 5 ;Leadscrew locations M671 X-10:-10:333 Y22.5:277.5:150 S7.5 M350 X16 Y16 Z16 E16 I1 ;set 16x microstepping for axes with interpolation M906 X1400 Y1400 Z1200 E800 I80 ;Set motor currents (mA) M201 X2500 Y2500 Z100 E1500 ;Accelerations (mm/s^2) M203 X24000 Y24000 Z900 E3600 ;Maximum speeds (mm/min) M566 X800 Y800 Z100 E1500 ;Maximum jerk speeds mm/minute M208 X295 Y303 Z290 ;set axis maxima and high homing switch positions (adjust to suit your machine) M208 X-11 Y0 Z0 S1 ;set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed) M92 X200 Y200 Z1600 E830 ;steps/mm (E830 - 415x2 b/c 0.9 degree motor!) ; Stall Detection (Testing) ; ; Note: S value controls sensitivity, lower is more sensitive. M915 X Y R2 F1 S9 H400 ; End Stops M574 X1 S1 P"io1.in" ;Map the X endstop to io1.in M574 Y1 S1 P"io2.in" ;May the Y endstop to io2.in ; Thermistors M308 S0 P"temp0" Y"thermistor" A"bed_heat" T100000 B4240 H0 L0 ;Bed thermistor - connected to temp0 M308 S1 P"temp1" Y"thermistor" A"e0_heat" T100000 B4725 C7.06e-8 H0 L0 ;duet3 e3d thermistor - connected to e0_heat M308 S3 P"temp3" Y"thermistor" A"bed_heat2" T100000 B3950 H0 L0 ; Bed thermistor - Keenevo builtin ; MCU Temp and TMC drivers -- need this before we set up the fan M308 S10 Y"mcu-temp" A"MCUTemp[C]" M308 S11 Y"drivers" A"TMC[Warning]" ; DHT22 M308 S12 P"io8.out" Y"dht22" A"Chamber Temp[C]" M308 S13 P"S12.1" Y"dhthumidity" A"Chamber Humid[%]" ;Define Heaters M950 H0 C"out0" T0 ;Bed heater is on out0 M950 H1 C"out1" T1 ;Hotend heater is on out1 ;Define Bed M140 H0 ; Tuning Heaters ; https://docs.duet3d.com/en/How_to_guides/Commissioning ; ; M307 H0 B0 R0.237 C862.8 D27.12 S1.00 V23.8 ; Keenovo, 6/26/2022, Duet Firmware 3.3 M307 H0 B0 R0.254 K0.102:0.000 D27.86 E1.35 S0.90 ; Keenovo 6/11/2023, Duet FW 3.4.5, 90% power M307 H1 B0 R2.850 C198.6:142.2 D5.59 S1.00 V23.8 ; Mosquito @ 260C, 7/16/2022, Duet Firmware 3.3 M570 S360 ;Hot end may be a little slow to heat up so allow it 180 seconds M143 H1 S285 ;Set max hotend temperature M143 H0 A2 S130 T3 C0 ; Temporarily turn off bed heater when Keenovo sensor says 130C+ ; Fans ; Note: Making part fan Fan 0 b/c slicers sort of expect it. -- RBR ; M950 F1 C"out5" ;Hotend fan on "out5" connector M106 P1 S255 H1 T50 C"HotEndFan";enable thermostatic mode for hotend fan M950 F0 C"out4" ;Layer fan on "out4" connector M106 P0 S0 ;Layer Fan M950 F2 C"out6" ;Electronics fan on "out6" connector M106 P2 S0 C"ElectFan" ;Electronics Fan M950 F3 C"out9" ;Chamber fan on "out9" connector M106 P3 S0 C"ChamberFan" ;Chamber Fan ; Tool definitions M563 P0 D0 H1 F0 ;Define tool 0 (Fan 0 is Fan 0 :)) G10 P0 S0 R0 ;Set tool 0 operating and standby temperatures ; BLTouch ; Note: This puts the nozzle about 0.05mm off the plate @ Z=0 ; M558 P9 C"io7.in" H5 R1 F120 T6000 A5 S0.02 B1 ;define the bltouch input on io7.in M950 S0 C"io7.out" ;define the bltouch servo on io7.out ; G31 X-2 Y37 Z0.8 P25 ;set the offsets for the bltouch -- E3D mount G31 X-2 Y37 Z2.05 P25 ;set the offsets for the bltouch -- direct mount ; Ethernet network M552 P192.168.1.14 S1 M550 P"Beast" ; BTT Smart Filament Sensor M591 D0 P7 C"io6.in" L7 R50:150 E22 S1 ; PanelDue on "out0" connector M575 P1 S1 B57600 T0 ;select first hot end
-
@droftarts thanks for the catch on M204; I'll have to fix that.
No, I don't think I'm exceeding the capabilities of the machine with those last commands -- the movement/acceleration/jerk settings that are in my config.g are considered conservative for this design. Also, this wasn't happening with 3.4.5 for many many prints.
I've had this happen once more since posting, have started just homing Z so I don't have to think about it (which obviously isn't treating the condition...).
-
@paralepsis The XYZ motors are LDO-42STH40-1684MAC (https://cdn.shopify.com/s/files/1/0239/9287/files/LDO-42STH38-1684MAC_TIM_RevA.pdf).
-
To follow up on this, an F5000 Z move would indeed be a problem if the speed weren't capped by the config.g settings, but it is :). I'll clean that up in the stop.g anyway, just so it isn't a distraction in the future.
Thanks again!
-
@paralepsis said in 3.5.0b4 losing XYZ position after print completes?:
No, I don't think I'm exceeding the capabilities of the machine with those last commands -- the movement/acceleration/jerk settings that are in my config.g are considered conservative for this design.
I was thinking more of the physical limits of the print bed, rather than skipping steps.
Ian
-
@droftarts maybe I misunderstand, but the X/Y move isn't relative, just moves to near the back left corner (xmin is -11 and ymax is 300ish). Notionally the Z could push to Z-max, but the prints in question have been in the ~100mm or less height, and I've got roughly 280-300mm of Z to work with.
-
@paralepsis Does your printer have more than one tool? You have T99 in your stop.g, I'm not sure what it is you are trying to do with that, but I wonder if in effect causing a tool change is part of the problem?
-
@gloomyandy I don't have more than one tool. I was using that as a way to kick the current tool out of active mode...I want to say that M568 wasn't around when I first started doing that, but it's also possible I just didn't find it.
Either way, that would be a regression -- I've been doing that "tool switch" trick on this machine and one other for years w/out issue prior to move to 3.5.0b4.
-
@paralepsis you should use
T-1
to unmount the current tool -
@jay_s_uk I feel like I got an error trying to do that (way back when), but really M568 P0 A0 is probably the right thing in a single tool printer, yes?
-
@paralepsis to turn it off, yes, thats what i use