Suddenly Skipping Steps
-
I am doing a pretty simple print and am suddenly skipping steps (loud bang, shift in print) in a pretty repeatable range of the print.
This time I paused it immediately after it lost steps and ran an M122. I'm trying to figure out if there is a machine based issue, or something weird in the gcode.
The only thing I am suspicious of in the gcode is that just before I lost steps there is a travel sequence that uses "avoid crossing perimeters" and has a series of tiny moves (~ 170 mm/s). Maybe that sets the controller up for a failure?
m122 === Diagnostics === RepRapFirmware for Duet 2 Maestro version 3.3 (2021-06-15 21:47:01) running on Duet Maestro 1.0 Board ID: 08DJM-956DU-LLMS4-7J9F6-3SN6Q-KBM2Q Used output buffers: 3 of 24 (23 max) === RTOS === Static ram: 23556 Dynamic ram: 67272 of which 320 recycled Never used RAM 21492, free system stack 154 words Tasks: NETWORK(ready,28.8%,266) HEAT(delaying,0.1%,345) Move(notifyWait,1.6%,337) TMC(notifyWait,1.4%,117) MAIN(running,68.1%,459) IDLE(ready,0.0%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:23:24 ago, cause: software Last software reset at 2021-06-20 16:53, reason: User, GCodes spinning, available RAM 21492, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Step timer max interval 1637 MCU temperature: min 42.0, current 44.7, max 45.1 Supply voltage: min 24.0, current 24.3, max 24.4, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/68/38, gc cycles 0 Driver 0: position 0, standstill, read errors 0, write errors 0, ifcnt 44, reads 17474, writes 2, timeouts 0, DMA errors 0 Driver 1: position 0, standstill, read errors 0, write errors 0, ifcnt 46, reads 17474, writes 2, timeouts 0, DMA errors 0 Driver 2: position 3632, standstill, read errors 0, write errors 0, ifcnt 50, reads 17474, writes 2, timeouts 0, DMA errors 0 Driver 3: position 0, standstill, read errors 0, write errors 0, ifcnt 26, reads 17474, writes 2, timeouts 0, DMA errors 0 Driver 4: position 0, standstill, read errors 0, write errors 0, ifcnt 48, reads 17476, writes 0, timeouts 0, DMA errors 0 Driver 5: position 0, assumed not present Driver 6: position 0, assumed not present Date/time: 2021-06-20 17:17:16 Slowest loop: 358.11ms; fastest: 0.09ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 9 SD card 0 detected, interface speed: 10.0MBytes/sec SD card longest read time 1.3ms, write time 150.3ms, max retries 0 === Move === DMs created 83, maxWait 352486ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 15909, completed moves 15909, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 1, 1], 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, chamberHeaters = -1 -1 Heater 0 is on, I-accum = 0.1 Heater 1 is on, I-accum = 0.4 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle 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 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 165.46ms; fastest: 0.05ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 Interface state active, link 100Mbps full duplex 6/20/2021, 5:16:39 PM
Printing paused at X49.3 Y77.7 Z4.1
; File "0:/gcodes/NegSpace3.gcode" resume print after print paused at 2021-06-20 17:16 G21 M140 P0 S45.0 G29 S1 T-1 P0 G92 X49.311 Y77.677 Z4.120 G60 S1 G10 P0 S210 R210 T0 P0 M98 P"resurrect-prologue.g" M116 M290 X0.000 Y0.000 Z-0.020 R0 T-1 P0 T0 P6 ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00 G54 M106 S0.89 M106 P0 S0.89 M116 G92 E0.18030 M82 M486 S0 A"Neg Spacer3.stl id:0 copy 0" M486 S0G17 M23 "0:/gcodes/NegSpace3.gcode" M26 S491918 G0 F6000 Z6.100 G0 F6000 X49.311 Y77.677 G0 F6000 Z4.100 G1 F2400.0 G21 M24
; Configuration file for Duet Maestro (firmware version 3) ; General preferences G90 ; absolute coordinates M83 ; relative extruder M550 P"Maestro86" ; set printer name ; Network 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 S0 ; physical drive 0 goes backwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S0 ; physical drive 2 goes backwards M569 P3 S0 ; physical drive 3 goes backwards M569 P0 D2 ;D3 V468 ; X Spreadcyle M569 P1 D2 ;D3 V468 ; Y Spreadcyle M569 P2 D3 V40 ; Z Stealthchop2 till about 46.9 mm/sec M569 P3 D2 ; Extruder in Spreadcyle M584 X1 Y0 Z2 E3 ; set drive mapping M92 X159.93 Y159.75 Z400.00 E510 ; set steps per mm M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M201 X5000.00 Y5000.00 Z230.00 E10000.00 ; Max accelerations (mm/s^2) M203 X10200.00 Y10200.00 Z2100.00 E2400.00 ; Max speeds (mm/min) M204 P2660 T4000 ; Accelerations (mm/s^2) ;M205 X6 Y6 Z3 E4.5 ; Maximum jerk rates (mm/s) M566 X360 Y360 Z180.0 E270 P1 ; Maximum jerk rates (mm/min) M593 F0 ;F57.6 ; dynamic accel cancel 0 hz M572 D0 S0 ; Pressure Advance M906 X1350 Y1350 Z1400 E1200 I50 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X195 Y193 Z220 S0 ; set axis maxima ; Endstops M574 X1 S1 P"!xstop" ; configure active-high endstop for low end on X via pin !xstop M574 Y1 S1 P"!ystop" ; configure active-high endstop for low end on Y via pin !ystop ; Z-Probe M574 Z1 S2 ; Set endstops controlled by probe ;M558 P9 C"^zprobe.in" H5 F300 T6000 ; set Z probe type to bltouch and the dive height + speeds M558 P5 C"^zprobe.in" H5 F500 T6000 A1 M950 S0 C"zprobe.mod" ; create servo pin 0 for BLTouch G31 P25 X20 Y-7.33 Z2.17 ; set Z probe trigger value, offset and trigger height M557 X12:200 Y0:169.2 S18.8 ; define mesh grid M376 H1.5 ; mesh taper ; Heaters M308 S0 P"spi.cs1" Y"rtd-max31865" ; configure sensor 0 as a PT100 sensor in the first position on the Duet 2 daughter board connector M950 H0 C"bedheat" T0 ; create bed heater output on bedheat 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"e0temp" Y"pt1000" ;T100000 B4725 C7.06e-8 ; configure sensor 1 as PT1000 on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S240 ; set temperature limit for heater 1 to 250C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M308 S2 Y"drivers" A"DRIVERS" ; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet M308 S3 Y"mcu-temp" A"MCU" ; configure sensor 3 as thermistor on pin e1temp for left stepper ; Heater model parameters M307 H0 R0.194 C896.8 D2.07 S1.00 V24.3 M307 H1 R2.523 C231.0:134.5 D5.90 S1.00 V24.3 ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T40 B1.5 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"fan2" ;Q800 ; create fan 2 on pin fan2 and set its frequency M106 P2 H1:2:3 L1 X1 T53 ; set fan 2 value ; Tools M563 P0 S"E0" 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 T0 ; select first tool
-
I seem to have confirmed my theory. I disabled the "avoid crossing perimeter" setting, forcing all straight line travel moves, and reprinted. Everything worked perfectly.
So, it seems that travel move sequences like this were causing the issue. But, not during the the travel move itself, but on a subsequent print move.:
;LAYER_CHANGE ;Z:4.4 ;HEIGHT:0.15 ; Automesh: begin layer 28 ; stop printing object Neg Spacer3.stl id:0 copy 0 G1 Z4.400000 F10200.000 ; INIT printing object Neg Spacer3.stl id:0 copy 0 G92 E0 G1 E-2.500000 F2100.000 ; printing object Neg Spacer3.stl id:0 copy 0 G1 X48.969 Y78.709 F10200.000 G1 X48.926 Y78.606 G1 X48.879 Y78.505 G1 X48.828 Y78.406 G1 X48.774 Y78.308 G1 X48.716 Y78.212 G1 X48.656 Y78.119 G1 X48.592 Y78.027 G1 X48.524 Y77.938 G1 X48.454 Y77.852 G1 X48.381 Y77.767 G1 X48.305 Y77.686 G1 X48.226 Y77.607 G1 X48.144 Y77.531 G1 X48.060 Y77.458 G1 X47.973 Y77.387 G1 X47.884 Y77.320 G1 X47.793 Y77.256 G1 X47.699 Y77.195 G1 X47.604 Y77.138 G1 X47.506 Y77.084 G1 X47.407 Y77.033 G1 X47.305 Y76.986 G1 X47.203 Y76.942 G1 X47.099 Y76.902 G1 X46.993 Y76.866 G1 X46.886 Y76.833 G1 X46.779 Y76.805 G1 X46.670 Y76.779 G1 X46.560 Y76.758 G1 X46.450 Y76.741 G1 X46.339 Y76.727 G1 X44.011 Y76.453 G1 E0.000000 F2100.000 ;TYPE:Internal perimeter ;WIDTH:0.4258 G1 F2400.000 G1 X43.892 Y76.525 E0.001288 G1 X43.661 Y76.681 E0.003864
-
I wonder if it was the low jerk high accel?
-
@ccs86
I've visualized the moves you suspect and they look like a smooth curve (ignore the straight diagonal line, it's the connection from 0,0 to the first point in the code)
To me it looks 'doable' except you've set travel accel too high?
Also wondering where the bang came from as there is no Z-move involved that could lead to a nozzle/part collision -
@phaedrux said in Suddenly Skipping Steps:
I wonder if it was the low jerk high accel?
By what mechanism? 6mm/s jerk is enough to get me around arcs without stutter, and 4000mm/s/s doesn't seem very high for travel moves in this era.
-
4000 mm/s/s travel accel is "too high"? The speed boat race guys are running 100,000+
I believe the bang is just a sound made by the steppers and resonated through the frame. Have you ever tried switching from stealthchop to spreadcycle at too high of a speed? It's like that.
-
@ccs86 said in Suddenly Skipping Steps:
Have you ever tried switching from stealthchop to spreadcycle at too high of a speed? It's like that.
And it wasn't in stealthchop for sure?
-
For sure. I could never get that transition to work well for me, so I force spreadcycle on X and Y now.
-
@ccs86 said in Suddenly Skipping Steps:
4000mm/s/s doesn't seem very high for travel moves in this era.
@ccs86 said in Suddenly Skipping Steps:
4000 mm/s/s travel accel is "too high"? The speed boat race guys are running 100,000+
For a Maestro though? I'm not sure. Will have to see what DC42 thinks.
What are the motor specs by the way?
-
@phaedrux said in Suddenly Skipping Steps:
What are the motor specs by the way?
https://www.omc-stepperonline.com/download/17HM19-2004S.pdf
https://www.omc-stepperonline.com/download/17HM19-2004S_Torque_Curve.pdf
-
Any thoughts @dc42?
-
I think he's away today, but he did have the same thought as I had about low jerk, perhaps specifically Z jerk if mesh compensation was enabled.
-
The low Z jerk + mesh comp is a good thought. It makes sense...
But, I have my mesh taper at 1.5mm and the first layer shift is at Z=3.5mm
-
back to the drawing board then.
Other than my previous thoughts on low jerk high accel I'm not sure what else to think.
-
@phaedrux said in Suddenly Skipping Steps:
back to the drawing board then.
Other than my previous thoughts on low jerk high accel I'm not sure what else to think.
What would be the mechanism that low jerk / high accel could cause this behavior?
-
Back EMF limiting the available acceleration?
-
@phaedrux said in Suddenly Skipping Steps:
Back EMF limiting the available acceleration?
Could that still be the cause when the issue only arises just after a sequence on tiny travel moves? I can run even higher acceleration, with the same low jerk, using longer straight line travels, and never have this issue.
It really feels like the motion planner/controller is confused by this sequence.
Maybe someone else could dry run this gcode with a cold extruder and large Z offset to see if the behavior is the same.
-
I'll see if I can get to my printer this afternoon, though I don't have a Maestro running at the moment.
Would you be able to try it with higher jerk and/or lower acceleration?
-
When I get time, I'll try to isolate the actual section of code and create a new file with just that. Will be much faster to experiment with how settings affect the behavior.
-
@ccs86 said in Suddenly Skipping Steps:
It really feels like the motion planner/controller is confused by this sequence.
I remember there was a bug report about "not being able to print small circles". That sounds similar to your issue I think.
But it was solved soon....so it shouldn't happen again in a newer FW?