RRF 3.3 does not respect max accel in first moves after TC
Duet3 w/ 1LC tool boards in IDEX config. After update from 3.2.2 to 3.3 (release), I have started missing X/Y/Z steps in the initial moves following a tool change. I have been able to avoid the step loss issue by setting the Z feedrate to ~100mm/min and X/Y to ~1000mm/min for the first moves. If the feeds are left at the normal values (that worked in 3.2.2), the affected steppers bang/buzz like they are being driven at too high of an acceleration. Motors are already being driven with 2A at 32V. Have not had any issues previously with high speeds or accelerations.
After the initial movement, the system appears to operate normally, respecting all the max accel and jerk settings
Let me know what you’d like me to provide to help diagnose.
Please share your config.g and the results of M122 and M122 B# where # is the can address of your toolboard.
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; ; ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Aon-M2" ; set printer name M555 P0 ; set RRF emulation mode G4 S1 ; wait for expansion boards to start ; ; ; Network ;M551 P"aonm2" ; set password ;M552 S1 ; enable network ;M586 P0 S1 ; enable HTTP ;M586 P1 S0 ; disable FTP ;M586 P2 S1 ; enable Telnet ; ; ; Drives M569 P0 S0 D2 ; physical drive 0, X, X_L M569 P1 S0 D2 ; physical drive 1, U, X_R M569 P2 S1 D2 ; physical drive 2, Z, Z_L M569 P3 S1 D2 ; physical drive 3, Z, Z_R M569 P4 S1 D2 ; physical drive 4, Y, Y_R M569 P5 S0 D2 ; physical drive 5, Y, Y_L ;M569 P1.0 S0 D3 V135 ; physical drive 6, n/a ;M569 P1.1 S1 D3 V135 ; physical drive 7, n/a ;M569 P1.2 S1 D3 V135 ; physical drive 8, n/a M569 P20.0 S1 D2 ; physical drive 9, E0 M569 P21.0 S0 D2 ; physical drive 10, E1 M584 X0 Y4:5 Z2:3 U1 E20.0:21.0 ; set drive mapping M350 X16 Y16 Z16 U16 E16 I1 ; x16 microstepping w interpo M92 X80 Y80 Z1600 U80 E675 ; set steps per mm M203 X20000 Y20000 Z1500 U20000 E2400 ; set max speed (mm/min) M201 X1500 Y1500 Z150 U1500 E10000 ; set max accel (mm/s^2) M566 X250 Y250 Z25 U250 E200 P1 ; set max jerk (mm/min) M906 X2000 Y2000 Z1500 U2000 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S300 ; Set idle timeout M669 K0 S1.0 T0.010 ; set kinematics and segementation M204 P1000 T2000 ; set print and travel max accels ; ; ; Axis Limits M208 X-82 Y-43 Z-7.3 U5 S1 ; set axis minima M208 X445 Y450 Z620 U533 S0 ; set axis maxima M564 S1 H1 ; limit movement to homed axes within limits ; ; ; Endstops M574 X1 S1 P"^20.io2.in" ; configure x endstop M574 Y1 S1 P"^io4.in+^io5.in" ; configure dual y endstops ;M574 Y1 S1 P"^io5.in" ; configure single y endstop ;M574 V1 S1 P"^io4.in" ; configure single v endstop ;M574 Z1 S1 P"^io2.in" ; configure single z endstop M574 Z1 S1 P"^io2.in+^io3.in" ; configure dual z endstops M574 U2 S1 P"^21.io2.in" ; configure u endstop ; ; ; Z-Probes M558 K0 P8 C"20.io0.in" B1 F250 H10 T10000 ; set Z probe 0 input G31 K0 P500 X0 Y0 Z-3.025 ; set Z probe 0 params M290 R0 Z-1.45 ; set default babysteps ; ;M558 K1 P8 C"21.io0.in" B1 F250 H15 T10000 ; set Z probe 1 input ;G31 K1 P500 X0 Y0 Z-4.144 ; set Z probe 1 params ; ; ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 C0 A"Bed" ; sensor0 = bed thermistor M950 H0 C"out0" T0 ; create heater H0 M307 H0 R0.507 C310.5 D3.58 S1.00 V0.0 ; H0 params M140 H0 ; H0 = bed heater M143 H0 S200 ; set max bed temp ; M308 S1 P"20.temp0" Y"pt1000" A"E0" ; sensor 1 PT1000 M950 H1 C"20.out0" T1 ; nozzle heater output H1 M307 H1 A787 C300 D6.0 S1.0 V0.0 B0 ; H1 params M143 H1 P0 S350 A0 C0 ; H1 max temp ; M308 S2 P"21.temp0" Y"pt1000" A"E1" ; sensor 2 PT1000 M950 H2 C"21.out0" T2 ; nozzle heater H2 M307 H2 A787 C300 D6.0 S1.0 V0.0 B0 ; H2 params M143 H2 P0 S350 A0 C0 ; H2 max temp ; M308 S3 P"temp3" Y"pt1000" A"Chmbr" ; chamber thermistor M950 H3 C"out7" T3 ; chamber heater H3 M141 H3 ; H3 = chamber M307 H3 A107.6 C953.2 D45.4 S1.0 V0.0 B0 ; H3 params ; ; ; Fans M950 F0 C"20.out1" Q500 ; fan0, T0 blower M106 P0 S0.0 B0.5 H-1 C"T0 Fan" X0.66 ; ; M950 F1 C"21.out1" Q500 ; fan1, T1 blower M106 P1 S0.0 B0.5 H-1 C"T1 Fan" X0.66 ; ; ;M950 F3 C"out3" Q500 ; fan2, bed blower ;M106 P3 S0.0 B0.5 H-1 C"Bed Fan" ; ; M950 F4 C"out8" ; fan3, chmbr htr fan ;M106 P4 S0.0 H3 T35 C"Chmbr Fan" ; thermostatic chamber fan M106 P4 S0.0 H-1 C"Chmbr Fan" ; manual chamber fan ; ; ; Tools M563 P0 S"LEFT" D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; T0 offsets G10 P0 R0 S0 ; T0 temps ; M563 P1 S"RIGHT" D1 H2 F1 X3 ; define tool 1 G10 P1 X0 Y-0.35 U0.3 Z-.18 ; T1 offsets G10 P1 R0 S0 ; T1 temps ; ;M563 P2 S"DUPL" D0:1 H1:2 F0:1 X0:3 ; T0 uses both extruders and hotends, maps X to both X and U, and uses both print fans ;G10 P2 X0 Y0 U-225 ; T0 offsets ;G10 P2 S0 R0 ; T0 temps ;M567 P2 E1:1 ; T0 mix ratio 100% on both extruders ; ; ; Filament Sensors M591 D0 P3 C"20.io1.in" R25:250 A0 E10.0 L25.2 S1 ; T0 mag sensor M591 D1 P3 C"21.io1.in" R25:250 A0 E10.0 L25.2 S1 ; T1 mag sensor ; ; ; Other Settings M570 H1 P60 T15 S0 ; relaxed H1 fault detection M570 H2 P60 T15 S0 ; relaxed H2 fault detection M671 X-150:600 Y225:225 S10 ; 2-point bed leveling M557 X25:425 Y125:325 P5:3 ;M557 X25:425 Y25:425 P7:7 ; define G29 mesh grid M376 H5 ; bed comp taper M572 D0 S0.00 ; E0 pressure advance M572 D1 S0.00 ; E1 pressure advance ;M579 X1.0020 Y1.0018 ; fine scaling adjustment, 70°C PEI bed reference ;M579 X1.0100 Y1.0100 ; Scaling for J9CHB M911 S28.0 R50.0 P"M913 X0 Y0 U0 G91 M83 G1 Z3 E-5 F1000" ; enable power failure recovery ; ; ; Miscellaneous M929 P"BuildLog.txt" S3 ; enable build log M501 ; restore settings from config-override.g M144 P0 S0 ; set bed to standby T1 P0 T0 P0 ; select T0, no macros T-1 P0
M122 B0 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.3 (2021-06-15 21:45:47) running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956L2-G43S8-6JKD0-3S46L-9U2LD Used output buffers: 1 of 40 (14 max) === RTOS === Static ram: 150904 Dynamic ram: 64168 of which 0 recycled Never used RAM 136264, free system stack 116 words Tasks: SBC(ready,54.7%,314) HEAT(delaying,2.5%,325) Move(notifyWait,8.1%,250) CanReceiv(notifyWait,4.1%,774) CanSender(notifyWait,0.2%,362) CanClock(delaying,0.9%,339) TMC(notifyWait,105.5%,59) MAIN(running,41.6%,922) IDLE(ready,0.0%,29), total 217.7% Owned mutexes: HTTP(MAIN) === Platform === Last reset 209:44:14 ago, cause: power up Last software reset at 2021-07-31 06:48, reason: User, none spinning, available RAM 136448, slot 2 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0440f000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Step timer max interval 243 MCU temperature: min 41.0, current 47.7, max 51.6 Supply voltage: min 2.8, current 32.2, max 32.4, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 0.2, current 12.2, max 12.2, under voltage events: 0 Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/656/656, gc cycles 924 Driver 0: position -6559, standstill, reads 33362, writes 28 timeouts 0, SG min/max 0/892 Driver 1: position 35200, standstill, reads 33362, writes 28 timeouts 0, SG min/max 0/1023 Driver 2: position 373898, standstill, reads 33358, writes 32 timeouts 0, SG min/max 0/1023 Driver 3: position 42640, standstill, reads 33358, writes 32 timeouts 0, SG min/max 0/1023 Driver 4: position 0, standstill, reads 33363, writes 28 timeouts 0, SG min/max 0/1023 Driver 5: position 0, standstill, reads 33363, writes 28 timeouts 0, SG min/max 0/1023 Date/time: 2021-08-10 14:35:50 Slowest loop: 308.61ms; fastest: 0.02ms === 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 === DMs created 125, maxWait 393880453ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 99178, completed moves 99178, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 351, 21], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = 3 -1 -1 -1 Heater 0 is on, I-accum = 0.3 === GCodes === Segments left: 0 Movement lock held by null HTTP* is doing "M122 B0" 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. === Filament sensors === Extruder 0: no data received Extruder 1: no data received === CAN === Messages queued 8019658, received 18880625, lost 0, longest wait 4ms for reply type 6024, peak Tx sync delay 509, free buffers 49 (min 29), ts 3775271/3775270/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === State: 4, failed transfers: 1, checksum errors: 0 Last transfer: 1ms ago RX/TX seq numbers: 59944/59944 SPI underruns 0, overruns 0 Disconnects: 0, timeouts: 0, IAP RAM available 0x2c810 Buffer RX/TX: 0/0-0 === Duet Control Server === Duet Control Server v3.3.0 Code buffer space: 4096 Configured SPI speed: 8000000Hz Full transfers per second: 37.47, max wait times: 193.3ms/0.0ms Codes per second: 1.84 Maximum length of RX/TX data transfers: 3492/1736
M122 B1 Diagnostics for board 1: Duet EXP3HC firmware version 3.3 (2021-06-15 16:12:41) Bootloader ID: not available Never used RAM 159104, free system stack 4378 words Tasks: Move(notifyWait,0.1%,152) HEAT(delaying,1.3%,104) CanAsync(notifyWait,0.0%,69) CanRecv(notifyWait,2.3%,80) CanClock(notifyWait,1.2%,71) TMC(notifyWait,53.5%,63) MAIN(running,73.9%,414) IDLE(ready,0.0%,39) AIN(delaying,85.5%,263), total 217.8% Last reset 209:44:09 ago, cause: power up Last software reset data not available Driver 0: position 0, 80.0 steps/mm, standstill, reads 53017, writes 11 timeouts 0, SG min/max 0/0, steps req 0 done 0 Driver 1: position 0, 80.0 steps/mm, standstill, reads 53018, writes 11 timeouts 0, SG min/max 0/0, steps req 0 done 0 Driver 2: position 0, 80.0 steps/mm, standstill, reads 53018, writes 11 timeouts 0, SG min/max 0/0, steps req 0 done 0 Moves scheduled 0, completed 0, in progress 0, hiccups 0, step errors 0, maxPrep 0, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0 Peak sync jitter -6/17, peak Rx sync delay 184, resyncs 0/0, no step interrupt scheduled VIN: 32.3V, V12: 12.3V MCU temperature: min 37.1C, current 41.4C, max 44.8C Ticks since heat task active 87, ADC conversions started 755049269, completed 755049267, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 91 ticks ago, loop time 0 CAN messages queued 25, send timeouts 0, received 12835712, lost 0, free buffers 37, min 37, error reg 20000 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0
M122 B20 Diagnostics for board 20: Duet TOOL1LC firmware version 3.3 (2021-06-15 16:12:58) Bootloader ID: not available Never used RAM 3240, free system stack 2717 words Tasks: Move(notifyWait,9.0%,91) HEAT(delaying,26.1%,99) CanAsync(notifyWait,0.0%,55) CanRecv(notifyWait,5.1%,74) CanClock(notifyWait,2.9%,65) TMC(notifyWait,88.9%,57) MAIN(running,22.7%,350) IDLE(ready,0.0%,41) AIN(delaying,63.3%,142), total 218.1% Last reset 209:43:56 ago, cause: power up Last software reset data not available Driver 0: position 140308470, 675.0 steps/mm, standstill, SG min/max 0/156, read errors 0, write errors 0, ifcnt 16, reads 10413, writes 16, timeouts 3, DMA errors 0, failedOp 0x01, steps req 156499290 done 156499290 Moves scheduled 1108076, completed 1108076, in progress 0, hiccups 0, step errors 0, maxPrep 663, maxOverdue 222718, maxInc 222016, mcErrs 0, gcmErrs 0 Peak sync jitter -23/15, peak Rx sync delay 235, resyncs 0/0, no step interrupt scheduled VIN: 24.4V MCU temperature: min 37.5C, current 41.6C, max 72.1C Ticks since heat task active 174, ADC conversions started 754718586, completed 754718585, timed out 0, errs 0 Last sensors broadcast 0x00000002 found 1 179 ticks ago, loop time 0 CAN messages queued 9439861, send timeouts 0, received 10925124, lost 0, free buffers 37, min 35, error reg 40000 dup 0, oos 0/0/0/0, bm 93, wbm 222718, rxMotionDelay 774, adv 21747/74662 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619 === Filament sensors === Interrupt 4 to 36us, poll 8 to 4622us Driver 0: pos 166.29, errs: frame 358 parity 0 ovrun 0 pol 0 ovdue 0
M122 B21 Diagnostics for board 21: Duet TOOL1LC firmware version 3.3 (2021-06-15 16:12:58) Bootloader ID: not available Never used RAM 3272, free system stack 2717 words Tasks: Move(notifyWait,1.1%,91) HEAT(delaying,26.3%,99) CanAsync(notifyWait,0.0%,57) CanRecv(notifyWait,3.8%,74) CanClock(notifyWait,3.0%,65) TMC(notifyWait,89.5%,57) MAIN(running,34.5%,352) IDLE(ready,0.0%,41) AIN(delaying,60.7%,142), total 218.9% Last reset 209:43:25 ago, cause: power up Last software reset data not available Driver 0: position 16856633, 675.0 steps/mm, standstill, SG min/max 0/270, read errors 0, write errors 0, ifcnt 14, reads 689, writes 14, timeouts 0, DMA errors 0, steps req 20189513 done 20189513 Moves scheduled 112703, completed 112703, in progress 0, hiccups 0, step errors 0, maxPrep 660, maxOverdue 222728, maxInc 222633, mcErrs 0, gcmErrs 0 Peak sync jitter 0/15, peak Rx sync delay 228, resyncs 0/0, no step interrupt scheduled VIN: 24.0V MCU temperature: min 37.2C, current 41.4C, max 65.9C Ticks since heat task active 117, ADC conversions started 754737760, completed 754737759, timed out 0, errs 0 Last sensors broadcast 0x00000004 found 1 123 ticks ago, loop time 0 CAN messages queued 9439102, send timeouts 0, received 9928935, lost 0, free buffers 37, min 36, error reg 120000 dup 0, oos 0/0/0/0, bm 83, wbm 222728, rxMotionDelay 605, adv 22085/74658 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619 === Filament sensors === Interrupt 4 to 36us, poll 8 to 2860us Driver 0: pos 318.16, errs: frame 74 parity 0 ovrun 0 pol 0 ovdue 0
Here is a gcode snip from a recent print:
;FLAVOR:RepRap M73 P0 M73 R1144 ;TIME:68644 ;Filament used: 187.431m, 24.1528m ;Layer height: 0.25 ;MINX:15.415 ;MINY:28.434 ;MINZ:0.4 ;MAXX:324.707 ;MAXY:423.334 ;MAXZ:107.4 ;POSTPROCESSED ;Generated with Cura_SteamEngine 4.10.0 ; M140 S70 G10 P0 S230.0 R180 G10 P1 S255 R200 M98 P"slicer_start.g" T0 M83 ;relative extrusion mode G1 F1800 E-1.2 ;LAYER_COUNT:428 ;LAYER:0 M107 M104 T1 S200 G1 F100 Z0.9 ;------MODIFIED------ G0 F9000 X109.529 Y47.02 Z0.9 ;TYPE:SKIRT G1 F1500 Z0.4 G1 F1800 E1.2 G1 X109.997 Y46.023 E0.1218 G1 X110.311 Y45.384 E0.07874 G1 X110.616 Y44.782 E0.07463 G1 X110.727 Y44.577 E0.02578 G1 X111.149 Y43.852 E0.09277 G1 X111.565 Y43.162 E0.0891 G1 X111.93 Y42.573 E0.07663 G1 X112.061 Y42.376 E0.02616 G1 X112.494 Y41.76 E0.08327 G1 X113.044 Y41.002 E0.10357
I flagged the line that was causing missed Z steps. Originally it was at F1500 and would have run fine previously. The following line didn't seem to cause problems in this program, so I left it at F9000. On other programs where the distance from the parked position back to the print was further, it would cause lost steps in X as well. The distance-dependence is what makes me think it is related to acceleration. The configuration is a Dual X carriage idex w/ toolheads parked at the extents when not in use.
Similar lost X step issues would occur later in the program as the tool changes came back into play, but I didn't include any of that because its a lot of macros to digest. We can look at that later if necessary.
Any thoughts? Should I move this to a different forum? FYI, this is a SBC install.
Investigating. Possibly similar to other recent posts.
@mct82 I am currently investigating this issue https://forum.duet3d.com/topic/24660/issues-after-prime/71 which I believe is similar.
Please can you try to construct a very simple test file that reproduces this issue. You can start by copying that snippet of GCode into a new print file. Check it still has the problem. Then remove the call to slicer_start.g and see if the problem is still present; if it isn't, try putting the lines from slicer_start.g into the test file in place of the M98 call. Then see which lines you can remove without the issue going away.
If/when you have a minimal test file that demonstrated the problem, please post it here along with your tool change files and any other macros that they call out to. You have already posted your config.g file.
PS - from the other thread it looks as though a tool change is not require to provoke the problem (assuming a suitable tool is already selected) because substituting M400 for T0 still gives the problem, whereas removing that line makes it go away.
@mct82 have you tried installing firmware 3.4beta3? As you are using SBC you would need to install it using the unstable feed of the Duet3D package server.
Other users have reported that upgrading to 3.4beta3 resolved the issue.