CANBUS disconnecting sometimes?
-
Hello again! I'm still in the process of provisioning my new Voron. From some other issues I ran into, I've updated to 3.4 Beta 3 firmware. I seem to have run into a different bug.
Tonight I was calibrating my probe, changed a couple things in the config.g and saved. When it asked to reboot I went ahead and said yes. When the board comes back up I cannot control any of the steppers on the 3hc, and no matter what I do I can't get it to reconnect (perhaps there's a trick). I then power off and turn the printer back on, and then we're good to go. This doesn't happen all of the time but is relatively easy to reproduce. I don't think the config.g change is really relevant to the issue, rather, the simple fact that I have rebooted from the interface is. In case you're wondering I just simply updated the z-offzet on the probe the last time it happened.
I can confirm that I have the right CAN port and have set the termination jumpers.
Below is the relevant info I think you'll ask for I am back to running in SBC mode, I can try it in stand-alone if you think it'd make a difference.
M122 B0 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.4.0beta3 (2021-08-24 13:57:45) running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956L2-G43S8-6J9FA-3S86N-1B36F Used output buffers: 1 of 40 (11 max) === RTOS === Static ram: 151160 Dynamic ram: 62556 of which 396 recycled Never used RAM 136488, free system stack 126 words Tasks: SBC(resourceWait:,0.8%,336) HEAT(notifyWait,0.0%,320) Move(notifyWait,0.0%,276) CanReceiv(notifyWait,0.0%,797) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,7.7%,93) MAIN(running,90.6%,922) IDLE(ready,0.8%,29), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:01:06 ago, cause: software Last software reset at 2021-09-05 19:34, reason: User, GCodes spinning, available RAM 136368, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Step timer max interval 132 MCU temperature: min 47.0, current 47.3, max 47.5 Supply voltage: min 24.6, current 24.8, max 24.8, 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 Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Driver 0: position 397600, standstill, reads 42214, writes 17 timeouts 0, SG min/max 0/307 Driver 1: position 56800, standstill, reads 42214, writes 17 timeouts 0, SG min/max 0/258 Driver 2: position 16000, standstill, reads 42214, writes 17 timeouts 0, SG min/max 0/250 Driver 3: position 0, standstill, reads 42214, writes 17 timeouts 0, SG min/max 0/296 Driver 4: position 0, standstill, reads 42220, writes 11 timeouts 0, SG min/max 0/0 Driver 5: position 0, standstill, reads 42220, writes 11 timeouts 0, SG min/max 0/0 Date/time: 2021-09-05 19:35:50 Slowest loop: 26.12ms; fastest: 0.03ms === 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, segments created 3, maxWait 9561ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 10, completed moves 10, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], 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 = -1 -1 -1 -1 Heater 1 is on, I-accum = 0.0 === 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 queued 610, received 1107, lost 0, longest wait 2ms for reply type 6024, peak Tx sync delay 234, free buffers 49 (min 48), ts 332/331/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === State: 4, failed transfers: 0, checksum errors: 0 Last transfer: 2ms ago RX/TX seq numbers: 4757/4757 SPI underruns 0, overruns 0 Disconnects: 0, timeouts: 0, IAP RAM available 0x2c460 Buffer RX/TX: 0/0-0 === Duet Control Server === Duet Control Server v3.4-b3 Code buffer space: 4096 Configured SPI speed: 8000000Hz Full transfers per second: 73.11, max wait times: 42.0ms/6.7ms Codes per second: 1.55 Maximum length of RX/TX data transfers: 3196/816
M122 B1 Diagnostics for board 1: Duet EXP3HC firmware version 3.4.0beta3 (2021-08-24 14:57:06) Bootloader ID: not available Never used RAM 158816, free system stack 4373 words Tasks: Move(notifyWait,0.0%,100) HEAT(notifyWait,0.2%,84) CanAsync(notifyWait,0.0%,69) CanRecv(notifyWait,0.0%,80) CanClock(notifyWait,0.1%,71) TMC(notifyWait,46.2%,29) MAIN(running,45.0%,333) IDLE(ready,0.0%,39) AIN(delaying,8.6%,263), total 100.0% Last reset 09:23:23 ago, cause: software Last software reset data not available Driver 0: position 0, 415.0 steps/mm, standstill, reads 14545, writes 21 timeouts 0, SG min/max 0/0, steps req 0 done 0 Driver 1: position 0, 160.0 steps/mm, standstill, reads 14550, writes 17 timeouts 0, SG min/max 0/240, steps req 897702 done 668934 Driver 2: position 339200, 160.0 steps/mm, standstill, reads 14550, writes 17 timeouts 0, SG min/max 0/248, steps req 1137708 done 851215 Moves scheduled 40, completed 40, in progress 0, hiccups 0, step errors 0, maxPrep 56, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0 Peak sync jitter 1/24, peak Rx sync delay 183, resyncs 0/1, no step interrupt scheduled VIN: 25.0V, V12: 12.2V MCU temperature: min 32.4C, current 36.9C, max 43.1C Ticks since heat task active 141, ADC conversions started 33803806, completed 33803806, timed out 0, errs 0 Last sensors broadcast 0x00000001 found 1 146 ticks ago, loop time 0 CAN messages queued 540938, send timeouts 0, received 304344, lost 0, free buffers 37, min 37, error reg 110000 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 414, adv 35613/37076
;config.g G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Voron" ; set printer name M669 K1 ; select CoreXY mode ; Drives M569 P1.1 S0 ; A M569 P1.2 S0 ; B M569 P1.0 S1 ; Extruder M569 P0.0 S1 ; Z0 M569 P0.1 S1 ; Z1 M569 P0.2 S0 ; Z2 M569 P0.3 S0 ; Z3 M584 X1.2 Y1.1 Z0.0:0.1:0.2:0.3 E1.0 ; set drive mapping M671 X-65:-65:410:410 Y0:400:400:0 S5 ; bed leveling coordinates M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z800.00 E415.00 ; set steps per mm M566 X900.00 Y900.00 Z120.00 E60.00 ; set maximum instantaneous speed changes (mm/min) M203 X60000.00 Y60000.00 Z2000.00 E180.00 ; set maximum speeds (mm/min) M201 X2800.00 Y2800.00 Z250.00 E20.00 ; set accelerations (mm/s^2) M906 X1800 Y1800 Z1800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X10 Y0 Z0 S1 ; set axis minima M208 X350 Y350 Z355 S0 ; set axis maxima ; Endstops M574 X2 S1 P"!io8.in" ; configure active-high endstop for high end on X via pin io8.in M574 Y2 S1 P"!io6.in" ; configure active-high endstop for high end on Y via pin io6.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P8 C"io3.in" H30 F1000 T20000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X0 Y25 Z4.74 ; set Z probe trigger value, offset and trigger height M557 X35:315 Y25:280 P4 ; define mesh grid ; Heaters M308 S0 P"1.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 0 as thermistor on pin temp2 M950 H0 C"1.out0" T0 ; create bed heater output on 1.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"temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp0 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 S280 ; set temperature limit for heater 1 to 280C M308 S2 P"temp1" Y"thermistor" T10000 B3940 A"Chamber Temp" ; Fans M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out8" Q500 ; create fan 1 on pin out8 and set its frequency M106 P1 S1.0 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 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 M501 ; load saved parameters from non-volatile memory T0 ; select first tool
-
Add a
G4 S2
at the very start of config.g to allow for the CAN boards to synchronize at start up. If that doesn't help, double check your wiring. -
@oliof I just tried that. Right off the bat it disconnects after a config change reboot.
One thing I did not clarify, it worked fine in version 3.3 so I assume it's something relating to the beta. I've double checked the wiring and it all seems good.
Last night I was able to print and didn't have any issues with the connection during the print. This only seems to occur when a software reset is done.
-
@th0mpy said in CANBUS disconnecting sometimes?:
@oliof I just tried that. Right off the bat it disconnects after a config change reboot.
Please explain what you mean by "it disconnects". What disconnects from what, and what is your evidence for that?
-
@dc42 Disconnect may be not be accurate, but that's how it's acting. Basically, it's not able to interact with any of the motors or outputs that I've defined on that board.
What I am seeing is after a software reboot I attempt a home, the Z axis moves up as I would expect and the X and Y axis does not move. The interface spins for a few moments and then throws an error "Error: G0/G1: insufficient axes homed"
Once in a while, following the same process, it does throw a "Error: M584: Driver 1.2 does not exist". This is not happening each time so I'm only assuming this is still the condition I explained above.
The process I followed was to modify the config.g file (basically make a minor change to a comment so it'd prompt to save). Save the file, yes to restart.
LUCKILY I did just get both errors to occur so here's what M122 says:
M122 B1 Diagnostics for board 1: Duet EXP3HC firmware version 3.4.0beta3 (2021-08-24 14:57:06) Bootloader ID: not available Never used RAM 158816, free system stack 4377 words Tasks: Move(notifyWait,0.0%,125) HEAT(notifyWait,0.0%,84) CanAsync(notifyWait,0.0%,69) CanRecv(notifyWait,0.0%,80) CanClock(notifyWait,0.0%,71) TMC(notifyWait,7.1%,63) MAIN(running,91.6%,332) IDLE(ready,0.0%,39) AIN(delaying,1.3%,263), total 100.0% Last reset 05:53:31 ago, cause: software Last software reset data not available Driver 0: position 0, 415.0 steps/mm, standstill, reads 48382, writes 5 timeouts 0, SG min/max not available, steps req 0 done 0 Driver 1: position -6720, 160.0 steps/mm, standstill, reads 48387, writes 0 timeouts 0, SG min/max not available, steps req 0 done 0 Driver 2: position 220480, 160.0 steps/mm, standstill, reads 48387, writes 0 timeouts 0, SG min/max not available, steps req 0 done 0 Moves scheduled 17, completed 17, in progress 0, hiccups 0, step errors 0, maxPrep 0, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0 Peak sync jitter 3/14, peak Rx sync delay 181, resyncs 0/1, no step interrupt scheduled VIN: 25.0V, V12: 12.2V MCU temperature: min 32.8C, current 36.1C, max 36.7C Ticks since heat task active 76, ADC conversions started 21211651, completed 21211651, timed out 0, errs 0 Last sensors broadcast 0x00000001 found 1 81 ticks ago, loop time 0 CAN messages queued 7315, send timeouts 0, received 4095, lost 0, free buffers 37, min 37, error reg 110000 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0
M122 b0 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.4.0beta3 (2021-08-24 13:57:45) running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956L2-G43S8-6J9FA-3S86N-1B36F Used output buffers: 1 of 40 (11 max) === RTOS === Static ram: 151160 Dynamic ram: 62556 of which 396 recycled Never used RAM 136488, free system stack 152 words Tasks: SBC(resourceWait:,0.6%,342) HEAT(notifyWait,0.0%,320) Move(notifyWait,0.0%,276) CanReceiv(notifyWait,0.0%,797) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,7.4%,59) MAIN(running,91.7%,922) IDLE(ready,0.3%,29), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:02:58 ago, cause: software Last software reset at 2021-09-06 20:47, reason: User, none spinning, available RAM 136368, slot 2 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Step timer max interval 133 MCU temperature: min 46.4, current 46.7, max 47.0 Supply voltage: min 24.6, current 24.8, max 24.8, 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 Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Driver 0: position 227200, standstill, reads 18538, writes 17 timeouts 0, SG min/max 0/308 Driver 1: position 0, standstill, reads 18538, writes 17 timeouts 0, SG min/max 0/262 Driver 2: position 4000, standstill, reads 18538, writes 17 timeouts 0, SG min/max 0/251 Driver 3: position 0, standstill, reads 18538, writes 17 timeouts 0, SG min/max 0/294 Driver 4: position 0, standstill, reads 18544, writes 11 timeouts 0, SG min/max 0/0 Driver 5: position 0, standstill, reads 18544, writes 11 timeouts 0, SG min/max 0/0 Date/time: 2021-09-06 20:50:20 Slowest loop: 24.85ms; fastest: 0.03ms === 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, segments created 3, maxWait 96518ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 4, completed moves 4, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], 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 = -1 -1 -1 -1 Heater 1 is on, I-accum = 0.0 === 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 queued 1612, received 2899, lost 0, longest wait 2ms for reply type 6024, peak Tx sync delay 7, free buffers 49 (min 48), ts 893/892/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === State: 4, failed transfers: 0, checksum errors: 0 Last transfer: 1ms ago RX/TX seq numbers: 7164/7164 SPI underruns 0, overruns 0 Disconnects: 0, timeouts: 0, IAP RAM available 0x2c460 Buffer RX/TX: 0/0-0 === Duet Control Server === Duet Control Server v3.4-b3 Code buffer space: 4096 Configured SPI speed: 8000000Hz Full transfers per second: 40.41, max wait times: 40.7ms/3.2ms Codes per second: 0.44 Maximum length of RX/TX data transfers: 3156/796
I am noting one thing, the "Last reset" on the 6HC vs 3HC is not the same. If the mainboard resets shouldn't the 3HC?
-
@dc42 I decided to try standalone mode again this morning. So far I do not see the same issue and I've rebooted multiple times already.
-
Last night I ran two prints of ~4 hours each. One running SBC and the other running in standalone mode. Since it's my first real prints I stopped and started a few times after adjusting parameters. No issues at all in standalone mode, I restarted via software several times and the print was mostly flawless. Each time while connected to the SBC I had to power off the printer in order to get the 3HC to recognize the motors and outputs again. During the print itself with the SBC I had no issues, just during config restarts.
Could there be something in the DWC (when using SBC) which isn't rebooting things properly?
-
@th0mpy thanks for your tests. I have located a possible situation in which the reset of CAN-connected boards may not occur when the SBC commands the Duet to reset. We are looking into whether that actually happens.
-
@dc42 I'm glad to know that I'm not crazy (in this particular instance)! Let me know if you need anything, happy to help.