Solved 3.5.0rc1: Input shaping causes layer shifts!?
-
@skrotz Thanks for the information! I guess your message saves me from re-testing with 3.5.0rc2 for now, at least until the Duet team asks me to do some tests.
I am aware that it works with 3.4.6. But I am afraid going back is not an option for me since I use some of the new functionality introduced in 3.5.
Thus, no input shaping for me until this issue is resolved.
-
@skrotz One more thing: it might be great to keep / post the affected print file and your config.g from when the issue happened here to give the Duet team the chance to take a look at these files as well.
-
Github issue:
https://github.com/Duet3D/RepRapFirmware/issues/945 -
@NeoDue and @skrotz please can you both try the firmware at https://www.dropbox.com/scl/fo/8mwsfwo61tacbyxsu39j9/h?rlkey=zwyd8luhpj7hnanldm4rzm5om&dl=0. If you encounter any layer shifts, then to help me track down the cause please report the following:
- A M122 report taken after layer shifts have occurred. Don't run M122 more than once unless further layer shifts occur, because each time M122 is run it clears the data it reports, and I want the data that may relate to a layer shift.
- Your config.g file
- What M593 input shaping command you were using, if it isn't in the config.g file
- What height the layer shift(s) occurred at
- A link to the GCode file you were printing.
Also please verify that you don't get layer shifts if you do the same print with input shaping disabled (i.e. M593 P"none").
-
@dc42 thanks! I might only be able to do that the coming weekend, but I definitely will as soon as I can!
-
Made test print with your rc2+ firmware. Layer shifted at 16,05mm
I didn't get M122 directly after layer shift, I did it when I disovered it.
M122 toolhead
M122 B121 Diagnostics for board 121: Duet TOOL1LC rev 1.1 or later firmware version 3.5.0-rc.2 (2023-12-14 08:58:51) Bootloader ID: SAMC21 bootloader version 2.8 (2023-07-25) All averaging filters OK Never used RAM 2672, free system stack 89 words Tasks: Move(3,nWait,1.6%,71) HEAT(2,nWait,6.4%,91) CanAsync(5,nWait,0.0%,54) CanRecv(3,nWait,0.6%,77) CanClock(5,nWait,0.4%,67) ACCEL(3,nWait,0.0%,17) TMC(2,nWait,61.9%,57) MAIN(1,running,86.2%,316) IDLE(0,ready,0.0%,27) AIN(2,delaying,92.7%,114), total 249.8% Last reset 21:44:27 ago, cause: software Last software reset time unknown, reason: OutOfMemory, available RAM 16088, slot 0 Software reset code 0x01c0 ICSR 0x00000000 SP 0x20002770 Task MAIN Freestk 784 ok Stack: 00004000 00005e8b 00004000 000041cf a5a5a5a5 00004000 a5a5a5a5 a5a5a5a5 a5a5a5a5 0001d199 a5a5a5a5 0001d1b5 a5a5a5a5 00005a4f a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 Driver 0: pos 0, 617.6 steps/mm, ok, SG min 0, read errors 2, write errors 1, ifcnt 144, reads 54569, writes 16, timeouts 140, DMA errors 0, CC errors 0, failedOp 0x71, steps req 0 done 15440450 Moves scheduled 261208, completed 261207, in progress 1, hiccups 4282, segs 40, step errors 0, maxLate 1 maxPrep 564, maxOverdue 5374, maxInc 2158, mcErrs 0, gcmErrs 0, ebfmin -1.00 max 1.00 Peak sync jitter -6/8, peak Rx sync delay 260, resyncs 0/0, no timer interrupt scheduled VIN voltage: min 24.2, current 24.4, max 29.8 MCU temperature: min 28.9C, current 75.1C, max 75.2C Last sensors broadcast 0x00001002 found 2 241 ticks ago, 0 ordering errs, loop time 0 CAN messages queued 1568794, send timeouts 6, received 969293, lost 0, errs 34187, boc 0, free buffers 18, min 17, error reg 110000 Last cancelled message type 4525 dest 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 420, adv 35575/74660 Accelerometer: LIS3DH, status: 00 Inductive sensor: not found I2C bus errors 0, naks 6, contentions 0, other errors 0
M122 Mainboard
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.0-rc.2+ (2024-01-15 11:56:10) running on Duet 3 Mini5plus Ethernet (standalone mode) Board ID: KHLQ8-GU8LU-F65J0-409N2-1313Z-H6T1G Used output buffers: 8 of 40 (32 max) === RTOS === Static ram: 103168 Dynamic ram: 116132 of which 16 recycled Never used RAM 18404, free system stack 128 words Tasks: NETWORK(1,ready,23.0%,173) ETHERNET(5,nWait 7,0.2%,569) HEAT(3,nWait 6,0.7%,326) Move(4,nWait 6,6.8%,241) CanReceiv(6,nWait 1,1.0%,774) CanSender(5,nWait 7,0.2%,327) CanClock(7,delaying,0.1%,348) TMC(4,nWait 6,15.4%,66) MAIN(1,running,35.8%,667) IDLE(0,ready,0.0%,30) AIN(4,delaying,16.6%,256), total 100.0% Owned mutexes: === Platform === Last reset 21:45:00 ago, cause: software Last software reset at 2024-01-15 21:55, reason: User, Gcodes spinning, available RAM 27976, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 78301312, completed 78301310, timed out 0, errs 0 MCU temperature: min 17.7, current 33.9, max 34.4 Supply voltage: min 23.7, current 23.8, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/3, heap memory allocated/used/recyclable 2048/1296/1220, gc cycles 0 Events: 1 queued, 1 completed Driver 0: ok, SG min 0, read errors 0, write errors 1, ifcnt 196, reads 57358, writes 25, timeouts 0, DMA errors 0, CC errors 0 Driver 1: ok, SG min 0, read errors 0, write errors 1, ifcnt 196, reads 57358, writes 25, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 0, write errors 1, ifcnt 39, reads 57352, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 1, ifcnt 38, reads 57352, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 37, reads 57353, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2024-01-16 19:51:08 Cache data hit count 4294967295 Slowest loop: 258.21ms; fastest: 0.11ms === Storage === Free file entries: 18 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 4.8ms, write time 10.9ms, max retries 0 === Move === DMs created 83, segments created 35, maxWait 68167851ms, bed compensation in use: none, height map offset 0.000, max steps late 1, ebfmin 0.00, ebfmax 0.00 next step interrupt due in 35 ticks, enabled Moves shaped first try 9805, on retry 12276, too short 53284, wrong shape 153332, maybepossible 8084 === DDARing 0 === Scheduled moves 281191, completed 281158, hiccups 0, stepErrors 0, LaErrors 211, Underruns [0, 0, 5], CDDA state 3 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters 9 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.5 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is doing "G1 X220.349 Y71.367 E.00382" 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 File2 is doing "M0" in state(s) 0, sync state 1 Queue2 is idle in state(s) 0 Q0 segments left 1, axes/extruders owned 0x0000807 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 970855, received 1569669, lost 0, errs 1, boc 0 Longest wait 5ms for reply type 4014, peak Tx sync delay 420, free buffers 26 (min 24), ts 391502/391501/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 230.49ms; fastest: 0.03ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = Interface state: active Error counts: 0 0 9158 0 0 0 Socket states: 5 2 2 2 2 2 0 0
config.g
; Configuration file for Duet 3 Mini 5+ (firmware version 3.5) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Thu Nov 23 2023 20:11:54 GMT+0200 (Eastern European Standard Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"VT1011" ; set printer name M669 K1 ; select CoreXY mode ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network M552 P192.168.90.200 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P192.168.90.1 ; set gateway M586 P0 S1 ; enable HTTP M586 P1 S1 ; enable FTP M586 P2 S0 ; disable Telnet ; --- Drive map --- ; (While looking at the printer top down) ; 0.0-----0.1 ; | 0.2 | ; |-------| ; |0.3|0.4| ; ---+--- ; Front ; Drives for X & Y M569 P0.0 S1 D2 ; physical drive 0.0 goes forwards M569 P0.1 S1 D2 ; physical drive 0.1 goes forwards ; Drives for Z M569 P0.2 S0 D3 ; physical drive 0.2 goes backwards Stealthchop | Z1 M569 P0.3 S0 D3 ; physical drive 0.3 goes backwards Stealthchop | Z0 M569 P0.4 S0 D3 ; physical drive 0.4 goes backwards Stealthchop | Z2 ; Drive for Extruder M569 P121.0 S0 D2 ; physical drive 121.0 goes backwards ; Motor mapping and steps per mm M584 X0.0 Y0.1 Z0.3:0.2:0.4 E121.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160 Y160 Z800 ; set steps per mm M92 E617.6470588 ; galileo 2 steps per mm ; Drive currents M906 X1700 Y1700 Z1000 E700 I30 ; set motor currents (mA) and motor idle factor in per cent M84 X Y Z E0 S30 ; Set idle timeout ; Axis accelerations and speeds M566 X500 Y500 Z120 E300 P1 ; set maximum instantaneous speed changes (mm/min) M203 X18000 Y18000 Z900 E7200 ; set maximum speeds (mm/min) M201 X8000 Y8000.00 Z350 E2000 ; set accelerations (mm/s^2) ; Reduced accelerations ;M201.1 X500 Y500 Z80 E500 ; Set reduced acceleration for special move types (mm/s²) ; Printing and travel accelerations M204 P5000 T7000 ; Set printing acceleration and travel accelerations (mm/s²) ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minimal M208 X300 Y305 Z240 S0 ; set axis maximal ; Endstops M574 X2 S1 P"121.io1.in" ; configure sensorless endstop for high end on X M574 Y2 S1 P"io6.in" ; configure sensorless endstop for high end on Y ; Klicky M558 P8 C"^121.io2.in" T18000 F600:180 H2 A10 S0.01 ; set Z probe type to KLICKY and the dive height + speeds G31 P500 X0 Y28 Z4.80 ; 5,4 set Z probe trigger value, offset and trigger height(Z_offset - bigger number bed closer to nozzle) ; Bed leveling M671 X-50:150:350 Y18:348:18 S5 ; front left, back, front right M557 X15:285 Y30:285 P5 ; define grid for mesh bed compensation, bed mesh distance 83mm to get 4x4 square ; Accelerometer M955 P121.0 I10 ; Configure accelerometer M593 P"mzv" F25 S0.01 L0.15 ; disabled 3.5.0rc1 has layer shift issues when IS enabled ; Heaters ; Bed heater M308 S0 P"temp0" Y"thermistor" T100000 B4725 C7.06e-8 A"Bed" ; 4138 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 limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M143 H0 A2 C0 S120 ; Make sure bed heater stays below 120C M143 H0 A1 C0 S125 ; Make sure bed heater shuts down at 125C ; Hodend heater M308 S1 P"121.temp0" Y"pt1000" A"Hotend" ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S350 ; set temperature limit for heater 1 to 350C ; Chamber heater M308 S9 P"temp1" Y"thermistor" A"Chamber" T100000 B4725 C7.06e-8 ; Chamber thermistor conf - ATC Semitec 104NT-4-R025H42G M950 H9 C"io5.in" Q1 T9 ; dummy port used M307 H9 B0 S1.00 M141 H9 ; fake chamber heater for reporting in DWC M143 H9 P0 S40 A2 M143 H9 P1 S60 ; Duet5+ mcu temp M308 S3 Y"mcu-temp" A"MCU" ; Configure sensor 2 as MCU temperature M912 P0 S-2.9 ; MCU temp calibration parameters ; toolhead temp M308 S12 Y"mcu-temp" P"121.dummy" A"1LC MCU" ; Fans ;Part cooling M950 F0 C"121.out1" ; create fan 0 on pin 121.out1 and set its frequency M106 P0 S0 H-1 C"Part Cooling" ; set fan 0 value. Thermostatic control is turned off ;Hotend fan M950 F1 C"121.out2" ; create fan 1 on pin 121.out2 and set its frequency M106 P1 S1 H1 T45 C"Hotend Fan" ; set fan 1 value. Thermostatic control is turned on ; Bed fan M950 F2 C"out3" ; create fan 2 on pin out3 and set its frequency M106 P2 C"BEDF_12V" S0 H-1 ; set fan 2 value. Thermostatic control is turned on ; Exhaust fan M950 F3 C"out6" ; create fan 3 on pin out6 and set its frequency M106 P3 C"EXHAUSTF" S0 B0.1 H9 T45 ; set fan 3 value. Thermostatic control is turned on ; Nevermore filter M950 F4 C"out5" ; create fan 4 on pin out5 and set its frequency M106 P4 C"FILTER" S0 B0.1 H0 T90 ; set fan 4 value. Thermostatic control is turned on ; Tools M563 P0 S"Mosquito Magnum" 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 ; Custom settings are not defined ; Miscellaneous M950 P0 C"out1" ; Create output Port0 attached to out1 connector for LED lights M501 ; load saved parameters from non-volatile memory T0 ; select first tool
Print file 3DBenchy-Voron-Trident-300-0.4-nozzle-1011-ABS-Orange-Polymaker.gcode
Active IS graph IS
-
@vaike_peeter do you have a spec sheet of your stepper drivers at hand?
-
Z-motors - LDO-42STH40-1684L300E
A and B(x,y) motors - LDO-42STH48-2004MAH
I already checked current if you think that.
-
@vaike_peeter with your .9 degree steppers you hit like 48kHz step rate per axis on CoreXY with 16x microstepping. You should get fine prints dropping down to 8x microstepping and giving more headroom for additional computation like IS.
There are some other considerations like maximum RPM and torque that you may be hitting with the 2004s. Check the back emf calculator and the TDS of your steppers for the physical stepper limits too. https://www.reprapfirmware.org/emf.html
-
@oliof
I will test this when I get back home -
FYI had something similar happen this night on a machine running just closed loop motors.
Just installed the RC2+ and will see if it happens again.
Already sent this to @dc42 directly as well. -
@dc42 just to make sure since I have no experience yet with the test firmware versions you provide: On my 6HC with no further addon electronics than the PanelDue (a clone, as already noted somewhere here in the forum, since the original PanelDue has too large footprint for this printer - I would have used the one I already own otherwise) and the Wifi module I just need to upload and install Duet3Firmware_MB6HC.bin - correct?
-
@NeoDue said in 3.5.0rc1: Input shaping causes layer shifts!?:
I just need to upload and install Duet3Firmware_MB6HC.bin - correct?
Correct!
Ian
-
@oliof That was really good hint. My test print came out without layer shift. Will continue testing but seems promising. Thank you.
Now X and Y motors are configured 8 microsteping with 80 steps per mm. -
@droftarts thanks! But I fear I need to report that did not work as intended at all - the last information I got from the DWC was that it was updating the board firmware... and now I am having a dead printer. I fear I need to work my way to the Duet in the printer and do a restore via USB this weekend instead of doing the test. Now where was the website explaining that process, it has been ages since I needed that...
-
@NeoDue Oh dear, sorry! Maybe your iap file was out of date?
USB firmware flashing: https://docs.duet3d.com/User_manual/RepRapFirmware/Updating_firmware
Ian
-
@droftarts The one that was in the Duet was suitable to update from 3.5.0 beta4 to rc1 and then to rc2. Do I need another one for the test version? There is none in the dropbox folder...
-
@NeoDue No, that was probably the latest. Looks like it hasn't been updated for a couple of years: https://github.com/Duet3D/DuetIAP
Sorry, not sure why your update failed. Is the DIAG light glowing? See https://docs.duet3d.com/en/User_manual/Troubleshooting/Duet_wont_respond for troubleshooting, just in case it is recoverable.
Ian
-
@droftarts Thanks for the links! I will check that. But for now there is a little mechanical work needed - the Snapmaker J1 has its electronics compartment in the base, and I need to remove the housing windows and screw up the z axis before I can unscrew and lift the metal plate covering it... quite some screws before I can see the Duet again
-
@droftarts Edit: I just managed to catch a glimpse through an unused former USB port opening. If I saw correctly from the reflection, the four voltage LEDs are active, but that's about it. But as noted above, I need to take open the compartment to get a clear look.