I've experienced weird movement behavior from both a Duet 3 Mini 5+, but also when using the Duet 3 Expansion 3HC. Whenever I let it print for a while, it will start to accelerate multiple times when moving in a straight line. This issue will resolve itself once the software is restarted (using M999), but it will come back at some point during a print.
My printer is a CoreXY (Rat Rig V-Core 3.1) that's running a Duet 3 Mini 5+ with Duet 3 Expansion 3HC, and is in SBC mode with a Raspberry Pi 4 (8GB).
Here's a link to a video showing the issue: Video Link
For context to that video, the printer was at coords: X50 Y50
And I sent it the following gcode command: G1 X250 Y250 F20000
Here's a few things I've noticed:
- This happens in SBC mode and Standalone mode
- Happens on both the latest stable build of RRF and the latest beta build
- Happens with or without Input Shaping
- Goes away after software reset (M999)
- Goes away after power cycled
Below is the diagnostics from M122
M122
=== Diagnostics ===
RepRapFirmware for Duet 3 Mini 5+ version 3.5beta2 (2023-02-08 15:27:32) running on Duet 3 Mini5plus Ethernet (SBC mode)
Board ID: 431Z4-W196U-D65J0-40KM2-1T03Z-HA24K
Used output buffers: 1 of 40 (17 max)
=== RTOS ===
Static ram: 103012
Dynamic ram: 105748 of which 0 recycled
Never used RAM 28872, free system stack 126 words
Tasks: ACCEL(notifyWait,0.0%,230) SBC(ready,30.3%,414) HEAT(notifyWait,0.9%,322) Move(notifyWait,5.7%,245) CanReceiv(notifyWait,0.6%,771) CanSender(notifyWait,0.1%,325) CanClock(delaying,0.1%,340) TMC(notifyWait,21.5%,71) MAIN(running,24.5%,531) IDLE(ready,2.1%,30) AIN(delaying,14.0%,263), total 100.0%
Owned mutexes: HTTP(MAIN)
=== Platform ===
Last reset 20:16:38 ago, cause: software
Last software reset at 2023-04-01 21:15, reason: User, Gcodes spinning, available RAM 28876, slot 2
Software reset code 0x6003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a
Error status: 0x00
MCU revision 3, ADC conversions started 72998328, completed 72998328, timed out 0, errs 0
Step timer max interval 1489
MCU temperature: min 24.7, current 36.4, max 39.5
Supply voltage: min 23.9, current 24.1, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes
Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/160/160, gc cycles 0
Events: 0 queued, 0 completed
Driver 0: standstill, SG min 0, read errors 1, write errors 1, ifcnt 91, reads 16974, writes 28, timeouts 0, DMA errors 0, CC errors 0
Driver 1: standstill, SG min 0, read errors 5, write errors 1, ifcnt 91, reads 16970, writes 28, timeouts 0, DMA errors 0, CC errors 0
Driver 2: standstill, SG min 0, read errors 2, write errors 1, ifcnt 90, reads 16972, writes 28, timeouts 0, DMA errors 0, CC errors 0
Driver 3: standstill, SG min 0, read errors 2, write errors 1, ifcnt 32, reads 16990, writes 10, timeouts 0, DMA errors 0, CC errors 0
Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 32, reads 16993, writes 10, timeouts 0, DMA errors 0, CC errors 0
Driver 5: standstill, SG min 0, read errors 0, write errors 1, ifcnt 32, reads 16992, writes 10, timeouts 1, DMA errors 0, CC errors 0, failedOp 0x72
Driver 6: standstill, SG min 0, read errors 0, write errors 1, ifcnt 71, reads 16978, writes 24, timeouts 0, DMA errors 0, CC errors 0
Date/time: 2023-04-02 17:32:38
Cache data hit count 4294967295
Slowest loop: 101.61ms; fastest: 0.09ms
=== Storage ===
Free file entries: 20
SD card 0 not detected, interface speed: 0.0MBytes/sec
SD card longest read time 0.0ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 83, segments created 51, maxWait 55084435ms, bed compensation in use: mesh, comp offset 0.000
no step interrupt scheduled
=== DDARing 0 ===
Scheduled moves 161715, completed 161715, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 10], CDDA state -1
=== 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 -1 -1 -1 -1, ordering errs 0
Heater 0 is on, I-accum = 0.1
Heater 1 is on, I-accum = 0.3
=== GCodes ===
Movement locks held by null, null
HTTP* is doing "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
File2* is idle in state(s) 0
Queue2 is idle in state(s) 0
Q0 segments left 0, axes/extruders owned 0x0000803
Code queue 0 is empty
Q1 segments left 0, axes/extruders owned 0x0000000
Code queue 1 is empty
=== CAN ===
Messages queued 888384, received 1167981, lost 0, boc 0
Longest wait 1ms for reply type 6018, peak Tx sync delay 392, free buffers 18 (min 12), ts 364991/364990/0
Tx timeouts 0,0,0,0,0,0
=== SBC interface ===
Transfer state: 5, failed transfers: 0, checksum errors: 0
RX/TX seq numbers: 30067/30067
SPI underruns 0, overruns 0
State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x0e1f0
Buffer RX/TX: 0/0-0, open files: 0
=== Duet Control Server ===
Duet Control Server version 3.5.0-beta.2 (2023-02-08 11:52:06)
Code buffer space: 4096
Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0
Full transfers per second: 40.81, max time between full transfers: 129.2ms, max pin wait times: 52.1ms/9.5ms
Codes per second: 15.39
Maximum length of RX/TX data transfers: 7500/2576
Any help with this is very appreciated.
Edit: The forum is not allowing me to reply to any topics for some reason
I'm new to this forum, but I'm guessing it due to having an issue with verifying my account.
Will get that done later.
Anyway, here is my Config.g
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.3.15 on Sat Jan 21 2023 16:20:29 GMT-0600 (Central Standard Time)
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
;M550 P"My Printer" ; set printer name
M669 K1 ; select CoreXY mode
G21 ; Set Units to Millimeters
; Network
;M551 P"81480102596" ; set password
;M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP
;M586 P0 S1 ; enable HTTP
;M586 P1 S0 ; disable FTP
;M586 P2 S0 ; disable Telnet
; Drives
M569 P0.0 S0 ; physical drive 0.0 goes backwards
M569 P0.1 S1 ; physical drive 0.1 goes backwards
M569 P0.2 S0 ; physical drive 0.2 goes forwards
M569 P1.1 S1 ; physical drive 0.3 goes backwards
M569 P1.0 S1 ; physical drive 0.4 goes backwards
M569 P6 S0 ; physical drive 0.5 goes backwards
M584 X1.0 Y1.1 Z0.0:0.1:0.2 E6 ; set drive mapping
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X160.00 Y160.00 Z1600.00 E571.25 ; set steps per mm
M566 X500.00 Y500.00 Z6.00 E120.00 P1 ; set maximum instantaneous speed changes (mm/min)
M203 X30000.00 Y30000.00 Z1000.00 E3600.00 ; set maximum speeds (mm/min)
M201 X5000.00 Y5000.00 Z100.00 E3600.00 ; set accelerations (mm/s^2)
M906 X2000 Y2000 Z1600 E800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
;M205 X5 Y5
M671 X-4.5:150:304.5 Y-4.52:305:-4.52 S5 ; define positions of Z leadscrews or bed levelling screws
;M557 X20:280 Y20:280 P5 ; define 5x5 mesh grid
; Axis Limits
M208 X0 Y0 Z-1 S1 ; set axis minima
M208 X310 Y300 Z308 S0 ; set axis maxima
; Endstops
M574 X1 S1 P"io6.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io5.in
M574 Y2 S1 P"io5.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io6.in
M574 Z1 S2 ; configure Z-probe endstop for low end on Z
; Z-Probe
M950 S0 C"io3.out" ; create servo pin 0 for BLTouch
M558 P9 C"io3.in" H5 F330 T6000 ; set Z probe type to bltouch and the dive height + speeds
G31 P500 X-29 Y-15 Z3.121 ; set Z probe trigger value, offset and trigger height
M557 X20:280 Y20:280 S20 ; define mesh grid
; Heaters
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 limit
M140 H0 ; map heated bed to heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
;M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1
M308 S1 P"spi.cs2" Y"rtd-max31865" ; create sensor number 1 as a PT100 sensor in the second position on the Duet daughterboard connector
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 H1 S400 ; set temperature limit for heater 1 to 400C
; Dummy sensor for Stepper Temp
M308 S13 Y"drivers" P"1.dummy" A"3HC Steppers"
; Fans
M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency
M106 P0 S1 H1 T45 ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"out4+out4.tach" Q500 ; create fan 2 on pin out5 and set its frequency
M106 P1 S0 H-1 ; set fan 2 value. Thermostatic control is turned off
M950 F2 C"1.out6" Q500 ; create fan 2 on pin out5 and set its frequency
M106 P2 S0 H-1 ; set fan 2 value. Thermostatic control is turned off
M950 F3 C"io_2.out" Q500 ; create fan 3 on pin out6 and set its frequency
M106 P3 S0 H-1 ; set fan 3 value. Thermostatic control is turned on
; Tools
M563 P0 D0 H1 F3 ; 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
T0 ; select first tool
; PID Settings
M307 H1 R3.007 K0.395:0.285 D5.98 E1.35 S1.00 B0 V24.0 ; Hotend
M307 H0 R0.431 K0.230:0.000 D11.08 E1.35 S1.00 B0 ; Bed
M955 P0 C"io1.out+io1.in" I54
M593 P"ei3" F40 ;Input shaping at 60Hz
Given I cannot upload files to this site due to my current account's status, I can't provide an example gcode file that causes this issue. But I can say it doesn't matter what I print, it always happens after some amount of time.