Tool distribution board problem?
-
@dc42 I've tested with two printheads connected to the distribution board. It seems to work if the order of the board is followed: 0 and 1 populated works but not detect second printhead if it's fitted in 0 and 2 positions without any printhead in the 1 position. I guess it's because the detected 1LC's terminates the bus at first position.
How can I diag the canbus packets and efficiency apart from M122 B#? How interprete the data given?
Is there any way to show all current CAN detected in the all the Canbus-FD and their status? -
@marcossf you must have the two bypass jumpers installed on the tool distribution board next to any of the 4 small CAN connectors that do not have a tool board attached.
You may find that a connected tool works even if the bypass jumpers for its connector are in place. But we can't guarantee that.
-
@dc42 This way is how we did:
And it seems to works.
The customer will not have access to this board (or any other) so it isn't possible to remove or put jumpers depending on the head installed. Thinking in doing it by switches ruins the user experience.
Is there a problem it can stay like this?
It would be better to leave the jumpers 0 removed and the rest set in, due to the possibility that the heads are present or not in 1 and 2 positions? Obviously in 0 connector there will always be one, and position 3 never will have one. -
@marcossf said in Tool distribution board problem?:
The customer will not have access to this board (or any other) so it isn't possible to remove or put jumpers depending on the head installed. Thinking in doing it by switches ruins the user experience.
Does the customer have the ability to add or remove tool heads? If so, what process does the customer go through to do that?
-
The user can choose a tool, connect it (power and canbus connectors) and lock it in any printhead craddle. The 1LC is inside each printhead. The distribution board is in the back of ZUV carriage. Could be one, two or three prinheads at any given time.
Would it be better to leave the jumpers closed? If it detects any header connected to the distribution board anyway it would be a good solution.
As you may know as we asked in other post, we installed two microswitches on each toolhead to know where the printhead is and which type is. Still not implemented any software to do this, just fitted the hw at this moment.
-
Diag B20 to B21 with distribution board with all bypass jumpers fitted:
Last software reset time unknown, reason: AssertionFailed, available RAM 4320, slot 0 Software reset code 0x0120 ICSR 0x00000000 SP 0x20003dbc Task Freestk 130 bad marker Stack: 00000544 000230c4 00019c25 20003154 00016da3 20003154 00016475 20000ed0 00000000 00000001 0000828d 200071c8 200071c8 200071e0 00000000 20000f50 0001165f 0002247c 00022538 00021b8c 00019bc5 200071c8 200071c8 20000f50 00008405 200071d8 000009c6 Driver 0: position 0, 80.0 steps/mm, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 9, reads 35805, writes 0, timeouts 0, DMA errors 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 0/9, peak Rx sync delay 197, resyncs 0/0, no step interrupt scheduled VIN: 23.8V MCU temperature: min 24.3C, current 34.9C, max 35.1C Ticks since heat task active 247, ADC conversions started 423990, completed 423989, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 2 ticks ago, loop time 0 CAN messages queued 33, send timeouts 0, received 1022, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619 25/6/2021 19:24:19: 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 4044, free system stack 2789 words Tasks: Move(notifyWait<null>,0.0%,153) HEAT(delaying<null>,0.0%,117) CanAsync(notifyWait<null>,0.0%,65) CanRecv(notifyWait<null>,0.0%,76) CanClock(notifyWait<null>,0.0%,65) TMC(notifyWait<null>,2.9%,57) MAIN(running<null>,92.2%,436) IDLE(ready<null>,0.0%,41) AIN(delaying<null>,4.9%,142), total 100.0% Last reset 00:07:06 ago, cause: power up Last software reset data not available Driver 0: position 0, 80.0 steps/mm, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 9, reads 36041, writes 0, timeouts 0, DMA errors 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 0/9, peak Rx sync delay 210, resyncs 0/0, no step interrupt scheduled VIN: 24.1V MCU temperature: min 20.5C, current 31.3C, max 31.3C Ticks since heat task active 117, ADC conversions started 426110, completed 426109, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 122 ticks ago, loop time 0 CAN messages queued 27, send timeouts 0, received 1024, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619 25/6/2021 19:24:20: m122 b22: Diagnostics for board 22: Duet TOOL1LC firmware version 3.3 (2021-06-15 16:12:58) Bootloader ID: not available Never used RAM 4044, free system stack 2789 words Tasks: Move(notifyWait<null>,0.0%,153) HEAT(delaying<null>,0.0%,117) CanAsync(notifyWait<null>,0.0%,65) CanRecv(notifyWait<null>,0.0%,76) CanClock(notifyWait<null>,0.0%,65) TMC(delaying<null>,2.9%,57) MAIN(running<null>,92.2%,436) IDLE(ready<null>,0.0%,41) AIN(delaying<null>,4.9%,142), total 100.0% Last reset 00:07:08 ago, cause: power up Last software reset data not available Driver 0: position 0, 80.0 steps/mm, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 9, reads 35817, writes 0, timeouts 0, DMA errors 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 0/8, peak Rx sync delay 209, resyncs 0/0, no step interrupt scheduled VIN: 24.2V MCU temperature: min 23.5C, current 33.7C, max 33.8C Ticks since heat task active 87, ADC conversions started 428080, completed 428080, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 92 ticks ago, loop time 0 CAN messages queued 27, send timeouts 0, received 1022, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619
Same diag but with the 0, 1 and 2 bypass jumpers removed, 3 fitted.
25/6/2021 19:27:10: 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 4044, free system stack 2789 words Tasks: Move(notifyWait<null>,0.0%,153) HEAT(delaying<null>,0.0%,117) CanAsync(notifyWait<null>,0.0%,65) CanRecv(notifyWait<null>,0.0%,76) CanClock(notifyWait<null>,0.0%,65) TMC(delaying<null>,2.9%,63) MAIN(running<null>,92.2%,436) IDLE(ready<null>,0.0%,41) AIN(delaying<null>,4.9%,142), total 100.0% Last reset 00:00:29 ago, cause: power up Last software reset time unknown, reason: AssertionFailed, available RAM 4320, slot 0 Software reset code 0x0120 ICSR 0x00000000 SP 0x20003dbc Task Freestk 130 bad marker Stack: 00000544 000230c4 00019c25 20003154 00016da3 20003154 00016475 20000ed0 00000000 00000001 0000828d 200071c8 200071c8 200071e0 00000000 20000f50 0001165f 0002247c 00022538 00021b8c 00019bc5 200071c8 200071c8 20000f50 00008405 200071d8 000009c6 Driver 0: position 0, 80.0 steps/mm, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 9, reads 14501, writes 9, timeouts 0, DMA errors 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 0/8, peak Rx sync delay 193, resyncs 0/0, no step interrupt scheduled VIN: 23.8V MCU temperature: min 30.4C, current 32.2C, max 32.2C Ticks since heat task active 49, ADC conversions started 29042, completed 29041, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 54 ticks ago, loop time 0 CAN messages queued 33, send timeouts 0, received 166, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619 25/6/2021 19:27:13: 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 4044, free system stack 2789 words Tasks: Move(notifyWait<null>,0.0%,153) HEAT(delaying<null>,0.0%,117) CanAsync(notifyWait<null>,0.0%,65) CanRecv(notifyWait<null>,0.0%,76) CanClock(notifyWait<null>,0.0%,65) TMC(delaying<null>,2.9%,57) MAIN(running<null>,92.2%,436) IDLE(ready<null>,0.0%,41) AIN(delaying<null>,4.9%,144), total 100.0% Last reset 00:00:32 ago, cause: power up Last software reset data not available Driver 0: position 0, 80.0 steps/mm, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 9, reads 16024, writes 9, timeouts 0, DMA errors 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 0/8, peak Rx sync delay 195, resyncs 0/0, no step interrupt scheduled VIN: 24.1V MCU temperature: min 26.8C, current 28.8C, max 28.8C Ticks since heat task active 93, ADC conversions started 32086, completed 32086, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 98 ticks ago, loop time 0 CAN messages queued 27, send timeouts 0, received 175, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619 25/6/2021 19:27:15: m122 b22: Diagnostics for board 22: Duet TOOL1LC firmware version 3.3 (2021-06-15 16:12:58) Bootloader ID: not available Never used RAM 4044, free system stack 2789 words Tasks: Move(notifyWait<null>,0.0%,153) HEAT(delaying<null>,0.0%,117) CanAsync(notifyWait<null>,0.0%,65) CanRecv(notifyWait<null>,0.0%,76) CanClock(notifyWait<null>,0.0%,65) TMC(delaying<null>,2.9%,63) MAIN(running<null>,92.2%,436) IDLE(ready<null>,0.0%,41) AIN(delaying<null>,4.9%,144), total 100.0% Last reset 00:00:34 ago, cause: power up Last software reset data not available Driver 0: position 0, 80.0 steps/mm, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 9, reads 17189, writes 9, timeouts 0, DMA errors 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 0/8, peak Rx sync delay 195, resyncs 0/0, no step interrupt scheduled VIN: 24.2V MCU temperature: min 29.5C, current 31.7C, max 31.7C Ticks since heat task active 174, ADC conversions started 34418, completed 34417, timed out 0, errs 0 Last sensors broadcast 0x00000000 found 0 179 ticks ago, loop time 0 CAN messages queued 28, send timeouts 0, received 193, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0 Accelerometer detected: no I2C bus errors 4619, naks 4619, other errors 4619
I don't see relevant differences, and I don't know how to interpret most of the values. It's in the wiki?
Removing a printhead (powered off, of course) while respect the order (0,1,none) gives same results except for the missing printhead.
So, would left jumpers out on 0,1,2 and 3 IN? Could be damage?
-
At this moment we have it like this:
-
@marcossf said in Tool distribution board problem?:
So, would left jumpers out on 0,1,2 and 3 IN? Could be damage?
No, that will not cause damage.
A better way than leaving the jumpers fitted on the tool board would be to connect the two CANL pins together on your user-accessible connector, and also connect the two CANH pins together. In other words, move the bypass links closer to the tools. That will make the CAN 'stubs' shorter by the length of the cable from the tool board to the user-accessible connector.
An even better way would be to provide dummy tool plugs that connect the two CANL pins together and the two CANH pins together, and instruct the user to fit a dummy plug in any position that does not have a tool connected.
-
@dc42 It's a good idea!
We can easily do a dummy connector for plug it in the can bus cable as a terminator, in case weren´t present the printhead.
-
@marcossf just to be clear, a dummy plug isn't a terminator, it's a bypass for a missing tool.
A bus terminator is a 120 ohm resistor (or two 60 ohm resistors if using split termination) at the very end of the bus. Its purpose is to prevent the signal from being reflected back along the bus when it reaches the end.
The Duet 3 main board has a permanent terminator fitted. All CAN expansion boards except tool boards have two jumpers that can be fitted to enable the termination resistors. The tool distribution board has a single jumper that can be fitted to enable the termination resistor.
The tool distribution board also has a pair of bypass jumpers for each tool board connection.
-
@dc42 OK, understood. If we do a connector reachable for the user when no tool is present in the distribution board, in our case acts as bypass for this tool, not as the resistance terminator.
The distribution board will be leaved with the jumpers fitted as we showed in the last photo and cannot be reachable for the user.
The user will be instructed to put the "blank" connector when weren't tool in the 1 and 2 printhead cables, and follow the cable order if empty printhead from last one to the first one.
But in all the test we did without "terminating", all the times could be able to locate the board of the printheads present. Still testing a lot of things.
May I could not to explain properly. I'm sorry.