3.2b3: XY stalls when bed compensation activated



  • Running on RPi4+Duet3 6HC(1.0)+3HC with tools on 3HC.
    No errors given and no debugging errors logged.

    You can hear when it looses steps and how it stutters when moving with bed compensation active.
    Video of it loosing steps when running at normal (fast) speed with compensation enabled.
    Video of it not loosing steps when running at normal (fast) speed with compensation disabled
    Video of it loosing steps when running at slow speed with compensation enabled.

    Debugging enabled with:

    Debugging enabled for modules: Platform(0) GCodes(3) Move(4)
    Debugging disabled for modules: Network(1) Webserver(2) Heat(5) DDA(6) Roland(7) Scanner(8) PrintMonitor(9) Storage(10) PortControl(11) DuetExpansion(12) FilamentSensors(13) WiFi(14) Display(15) LinuxInterface(16) CAN(17)
    

    Speeds:

    Max speeds (mm/sec): X: 565.0, Y: 565.0, Z: 12.0, U: 150.0, E: 60.0:60.0:60.0, min. speed 0.50
    Accelerations (mm/sec^2): X: 6000.0, Y: 6000.0, Z: 100.0, U: 800.0, E: 3000.0:3000.0:3000.0
    Maximum jerk rates (mm/min): X: 300.0, Y: 300.0, Z: 24.0, U: 50.0, E: 1200.0:1200.0:1200.0, jerk policy: 1
    

    My config.g:

    ; General preferences
    G90                                             ; send absolute coordinates...
    M83                                             ; ...but relative extruder moves
    M550 P"qTC"                                  	; set printer name
    
    ; General Preferences
    M111 S0                                 		; Debug off
    M929 P"eventlog.txt" S3							; start logging to file eventlog.txt Debug level
    G21			                                    ; Set dimensions to millimetres
    G90                                     		; Send absolute coordinates...
    M83                                     		; ...but relative extruder moves
    
    M669 K1                                         ; select CoreXY mode
    
    ; Drives
    M569 P0.0 S0 F4                                 ; physical drive 0.0 goes forwards  X
    M569 P0.1 S1 F4                                 ; physical drive 0.1 goes forwards  Y
    M569 P0.2 S1	                                ; physical drive 0.2 goes forwards  Toolchanger Actuator
    M569 P0.3 S1                                    ; physical drive 0.3 goes forwards	Z Back
    M569 P0.4 S1                                    ; physical drive 0.4 goes forwards	Z Left
    M569 P0.5 S1                                    ; physical drive 0.5 goes forwards	Z Front
    M569 P1.0 S1                                    ; physical drive 0.3 goes forwards	E0
    M569 P1.1 S0                                    ; physical drive 0.4 goes backwards E1
    M569 P1.2 S1                                    ; physical drive 0.5 goes forwards	E2
    M584 X0.0 Y0.1 Z0.4:0.3:0.5 E1.0:1.1:1.2 U0.2 	; set drive mapping ( Z in the order of bed leveling )
    M350 X16 Y16 E16 I1                    			; configure 16x for XY and E microstepping with interpolation
    M350 U4 I1                    					; configure 4x microstepping with interpolation for U, better torque
    M350 Z16 I1                    					; configure microstepping with interpolation. Full steps on Z means 200 steps per mm and a resolution of 0,005mm per step.
    
    
    ; Motor currents
    M906 X1100 Y1100 								; set motor currents (mA) 1200 is Good up to 400mm/s without back EMF at 31,1V on one stepper
    M906 Z1000 E600
    M906 U900 I60                           		; StepperOnline Toolchanger Elastic Lock Motor current and idle motor percentage, must be 60% idle and 90% current. Goes up to 120% when locking
    M84 S30                                         ; Set idle timeout
    
    ; Steps per mm
    M92 X159.87 Y160.38 Z3200.00 E830:415 S16 		; set steps per mm as defined for 16 microsteps
    M92 U11.515                            			; Stepper-Online Toolchanger Elastic Lock Motor Steps/deg for U from (200 * 4 * 5.18181)/360
    
    ; Motor speeds
    M203 Z720 E3600 U9000 							; set maximum speeds (mm/min) (Z:12; E:60)
    M566 Z24 E1200 U50      							; set maximum instantaneous speed changes (mm/min)
    M201 Z100 E3000 U800     						; set accelerations (mm/s^2)
    
    ;M203 X18000 Y18000 							; set maximum speeds (mm/min) (XY:300) as maximum without slippage acording to EMF calculator.
    M203 X33900 Y33900 								; set maximum speeds (mm/min) (XY:565) 70,8% of this is 400. Only one stepper wworking with max 400mm/s in diagonal
    
    M201 X6000 Y6000		 						; set accelerations (mm/s^2) Tested upp till 9000
    M566 X300 Y300 P1 								; set maximum instantaneous speed changes (mm/min) (5mm/s) Tested upp till 2500
    M204 P1500 T5000
    
    
    ; Set axis software limits and min/max switch-triggering positions.
    ; Adjusted such that (0,0) lies at the lower left corner.
    M208 X-49:500 Y-6:500 Z-0.2:600					; Set the Xmin
    M208 U0:200										; Set Elastic Lock (U axis) max rotation angle
    
    ; Kinematic bed ball locations.
    M671 X-49.5:523.5:523.5 Y262.5:553:-37 S10
    
    ; Emergency Button
    M950 J1 C"0.io0.in"								; Use the input pin on io0 on the main board
    M581 P1 T3 S0									; Use above to trigger Emergency Reset. PowerCycle afterwards.
    
    ; XYZ EndStops as emergency reset.
    M950 J2 C"!0.io1.in"								; Use the input pin on io1 on the main board X
    M950 J3 C"0.io2.in"								; Use the input pin on io2 on the main board Y
    M950 J4 C"0.io3.in"								; Use the input pin on io3 on the main board Z
    M950 J5 C"0.io7.in"								; Use the input pin on io3 on the main board EStop for Z-Plate
    M581 P2 T0 S1									; Use X to trigger Emergency Reset. PowerCycle afterwards.
    M581 P3 T0 S1									; Use Y to trigger Emergency Reset. PowerCycle afterwards.
    M581 P4 T3 S1									; Use Z to trigger Emergency Reset. PowerCycle afterwards.
    M581 P5 T0 S1									; Use EStop for Z-Plate to trigger Emergency Reset. PowerCycle afterwards.
    
    
    ; Endstops
    M574 X1 P"nil"									; Xmin without a pin asigned.
    M574 Y1 P"nil"									; Ymin without a pin asigned.
    M574 Z0											; No Z endstop
    M574 U1	S1 P"0.io4.in"							; U uses two microswitches in series
    
    ; Z probing settings
    M557 X10:470 Y10:480 P10                        ; define mesh grid with 10 points in each direction
    M558 P8 C"nil" A1 T24000 ; A1=Probe once S0.02=Max deviation  H5=Height default 5 P5 = Filtered
    
    ; Bed Heater
    M308 S0 P"0.temp0" Y"thermistor" T10000 B3435 A"Bed Heater"	; configure sensor 0 as thermistor on pin 1.temp0 for the thermistor on buildplate
    M950 H0 C"0.out0" T0                            ; create bed heater output on 1.out0 and map it to sensor 0
    M143 H0 S120                                    ; set temperature limit for heater 0 to 120C
    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
    
    ; Bed Heater builtin thermistor as backup
    M308 S20 P"0.temp1" Y"thermistor" T100000 B4138 A"Bed Failsafe" ; configure sensor 20 as thermistor on pin 1.temp1 for the builtin thermistor
    M143 H0 S150 T20 A0								; set temperature limit for heater 0 to 150C, Sensor 20 and generate heater fault.
    
    ; Tool definitions
    M98 P"/sys/custom/tool_0.g"						; Macro to load the tool definitions for Tool0
    M98 P"/sys/custom/tool_1.g"						; Macro to load the tool definitions for Tool1
    
    ; Miscellaneous
    M501                                            ; load saved parameters from non-volatile memory
    
    ; ---------- Init heaters ----------
    G10 P0 S0 R0			; Set tool 0 operating and standby temperatures(-273 = "off")
    G10 P0 S0 R0			; Set tool 0 operating and standby temperatures(-273 = "off")
    T0 P0
    T1 P0
    T-1 P0
    

    Diagnostics for mainboard:

    m122 b0
    === Diagnostics ===
    RepRapFirmware for Duet 3 MB6HC version 3.2-beta3 running on Duet 3 MB6HC v0.6 or 1.0 (SBC mode)
    Board ID: 08DJM-956L2-G43S4-6JKDD-3SJ6L-TB62G
    Used output buffers: 1 of 40 (23 max)
    === RTOS ===
    Static ram: 122124
    Dynamic ram: 139940 of which 60 recycled
    Never used RAM 130068, free system stack 122 words
    Tasks: Linux(ready,79) HEAT(blocked,296) CanReceiv(blocked,869) CanSender(blocked,352) CanClock(blocked,352) TMC(blocked,20) MAIN(running,720) IDLE(ready,19)
    Owned mutexes: HTTP(MAIN)
    === Platform ===
    Last reset 00:06:40 ago, cause: software
    Last software reset at 2020-11-11 08:20, reason: User, GCodes spinning, available RAM 130108, slot 0
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0xffffffff Task Linu
    Error status: 0x00
    MCU temperature: min 40.2, current 40.3, max 40.4
    Supply voltage: min 31.9, current 31.9, max 32.0, under voltage events: 0, over voltage events: 0, power good: yes
    12V rail voltage: min 12.0, current 12.0, max 12.1, under voltage events: 0
    Driver 0: position 320, standstill, reads 19249, writes 0 timeouts 0, SG min/max not available
    Driver 1: position 0, standstill, reads 19249, writes 0 timeouts 0, SG min/max not available
    Driver 2: position 28035, standstill, reads 19248, writes 0 timeouts 0, SG min/max not available
    Driver 3: position 0, standstill, reads 19249, writes 0 timeouts 0, SG min/max not available
    Driver 4: position 0, standstill, reads 19249, writes 0 timeouts 0, SG min/max not available
    Driver 5: position 0, standstill, reads 19249, writes 0 timeouts 0, SG min/max not available
    Date/time: 2020-11-11 08:27:30
    Slowest loop: 116.62ms; fastest: 0.29ms
    === 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: 375, MaxWait: 0ms
    Bed compensation in use: mesh, comp offset 0.000
    === MainDDARing ===
    Scheduled moves 172, completed moves 172, StepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
    === AuxDDARing ===
    Scheduled moves 0, completed moves 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 = -1 -1 -1 -1
    === 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.
    === CAN ===
    Messages sent 16, send timeouts 16, longest wait 0ms for type 0, free CAN buffers 47
    === SBC interface ===
    State: 0, failed transfers: 0
    Last transfer: 19ms ago
    RX/TX seq numbers: 12837/12839
    SPI underruns 0, overruns 0
    Number of disconnects: 0, IAP RAM available 0x20a78
    Buffer RX/TX: 0/0-0
    === Duet Control Server ===
    Duet Control Server v3.2.0-beta3
    Code buffer space: 4096
    Configured SPI speed: 8000000 Hz
    Full transfers per second: 32.85
    

    Diagnostics for expansion board:

    m122 b1
    Diagnostics for board 1:
    Duet EXP3HC firmware version 3.2beta3.1 (2020-11-08)
    Bootloader ID: not available
    Never used RAM 154112, free system stack 198 words
    HEAT 27 CanAsync 93 CanRecv 83 TMC 64 MAIN 286 AIN 257
    Last reset 00:07:00 ago, cause: software
    Last software reset at 2020-11-10 18:16, reason: StackOverflow, available RAM 154112, slot 0
    Software reset code 0x0100 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0000080e BFAR 0xe000ed38 SP 0x2002ffb4 Task �
    Stack: 2000137c 200013b0 0002525d 00000000 0003e418 20001598 20003b28 00000000 00024885 200014b4 20003ab0 00000000 00f00000 e000ef34 c0000000 20003b30 000249c5 0002472c 61000000 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
    Driver 0: position 0, 830.0 steps/mm,  standstill, reads 43741, writes 16 timeouts 0, SG min/max 0/0
    Driver 1: position 0, 415.0 steps/mm,  standstill, reads 43744, writes 16 timeouts 0, SG min/max 0/0
    Driver 2: position 0, 420.0 steps/mm,  standstill, reads 43748, writes 15 timeouts 0, SG min/max 0/0
    Moves scheduled 0, completed 0, in progress 0, hiccups 0
    No step interrupt scheduled
    VIN: 24.1V, V12: 12.2V
    MCU temperature: min 39.8C, current 40.0C, max 40.0C
    Ticks since heat task active 50, ADC conversions started 420292, completed 420292, timed out 0
    Last sensors broadcast 0x00000006 found 2 54 ticks ago, loop time 0
    Free CAN buffers: 36, messages lost 3664, duplicates 0, oos 0, busOff 0
    

    Eventlog is empty:

    2020-11-11 08:20:59 Event logging started
    

    Running a macro for testing moves:

    G1 F30000
    G1 X001 Y001 
    G1 X001 Y499
    G1 X500 Y499
    G1 X500 Y001
    G1 X001 Y001
    G1 X500 Y001
    G1 X500 Y499
    G1 X001 Y499
    G1 X001 Y001
    G1 X500 Y499
    G1 X001 Y001
    G1 X500 Y001
    G1 X001 Y499
    G1 X500 Y001
    G1 X001 Y001
    

    In the slow moving video I added in top of macro:

    M203 X12000 Y12000	; Max speed 200mm/s
    M201 X100 Y100	        ; Acceleration. Max 6000 på förra
    M566 X1000 Y1000	; Instant speed change, Max 2000 på förra.
    

    Edit: My heightmap:

    RepRapFirmware height map file v2 generated at 2020-10-03 13:46
    xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum
    5.00,495.00,5.00,495.00,-1.00,54.40,54.40,10,10
     -0.241, -0.216, -0.208, -0.210, -0.200, -0.179, -0.147, -0.115, -0.054, -0.002
     -0.136, -0.140, -0.139, -0.138, -0.123, -0.106, -0.082, -0.047, -0.002,  0.048
     -0.078, -0.074, -0.086, -0.072, -0.070, -0.059, -0.033, -0.005,  0.025,  0.079
     -0.033, -0.036, -0.033, -0.045, -0.039, -0.028,  0.002,  0.031,  0.075,  0.110
      0.013,  0.015,  0.007,  0.002,  0.009,  0.026,  0.043,  0.077,  0.106,  0.142
     -0.010, -0.021, -0.025, -0.026, -0.018, -0.001,  0.012,  0.048,  0.075,  0.108
     -0.048, -0.054, -0.063, -0.062, -0.064, -0.045, -0.014,  0.014,  0.055,  0.088
     -0.080, -0.097, -0.100, -0.105, -0.097, -0.084, -0.067, -0.029,  0.007,  0.054
     -0.119, -0.138, -0.151, -0.147, -0.141, -0.126, -0.101, -0.069, -0.022,  0.023
     -0.194, -0.204, -0.218, -0.211, -0.196, -0.183, -0.161, -0.124, -0.086, -0.010
    


  • Just to add another data point, I have also experienced this same behavior. However, I am running a duet 2, also on corexy.
    Edit: I have observed this since RRF 3.1.1.



  • I did run M122 while printing with bed compensation enabled and the "comp offset" is allways 0.000. Is that normal?


  • Moderator

    It's common to experience this when a low Z jerk is set, to the point there is an entry for it in the mesh compensation documentation.

    https://duet3d.dozuki.com/Wiki/Using_mesh_bed_compensation#Section_Troubleshooting

    Try increasing your Z jerk. M566 Z100



  • @Phaedrux tried even M566 Z500 and was no diffrence.
    I reasoned that if it would be from xy moving to fast for z, then why would it be worse at a slower xy speed?



  • Feels like I've tried everything now.
    XY loses steps regardless what I do to the acc, jerk and speed.
    Even raising the currents by 30%.

    M203 X18000 Y18000	; Max speed 300mm/s
    
    M203 Z24
    M201 Z1000
    M566 Z1000
    
    M201 X500 Y500
    M566 X300 Y300
    G1 F12000
    

    I've tried this too with my finger on emergency reset..:

    M203 Z100
    M201 Z1000
    M566 Z1000
    

  • Moderator

    Two things I would check.

    First see if there is any other Z jerk M566 command in another macro that is getting called. homeall or the like.

    You can also send M566 during the test to get a read back of the current value, just to double check it's not actually getting changed.

    The other thing would be to copy your config and macro files over to a new SD card and get it setup for standalone operation without the SBC. If the problem goes away then we've narrowed it down to DSF.

    https://duet3d.dozuki.com/Wiki/Getting_Started_With_Duet_3#Section_Running_in_standalone_mode


  • administrators

    @Phaedrux There will be a fix for jerky movements in SBC mode in the next 3.2-b3+1 release. It won't take much longer before we release it.

    @TypQxQ please check out this post.



  • @chrishamm Upgraded to ” RepRapFirmware for Duet 3 MB6HC version 3.2-beta3+3-ch running on Duet 3 MB6HC v0.6 or 1.0 (SBC mode)” and looks like it fixed both the missed stepps and the stuttering.

    Ran the macro above and runs well even at 500mm/s.

    Doing a multitool testprint now.



  • Thanky @chrishamm!
    It works great now!!!
    16C3393D-4E95-4164-9F9F-5B7650783FC2.jpeg



  • @chrishamm Do you know if the new changes from ”3.2-beta3+3-ch” are included in the new ”3.2beta3.2” beta?
    Didn’t see it in the changelog.


  • administrators

    @TypQxQ Yes, those changes have been merged into the new beta as well.


Log in to reply