I have spent all of today trying to debug this and I’m stumped. I have a CAN loop containing Victor SPXs and Talon SRXs. The problem is that not all the devices show up on the Phoenix Tuner. The CAN loop is wired correctly and all motor controllers are blinking orange indicating a CAN connection. I have been able to connect to each motor controller individually. I have updated the firmware on each to the latest 4.15 firmware. I am also using the latest version of Phoenix Tuner 1.2.0. I swapped the roboRIO and PCP and the problem still exists. Likewise I have made smaller CAN loops with different devices and no matter what motor controllers don’t appear on the list. The motor controllers that don’t appear are not at the end of the loop and I can access motor controllers further down from the ones that don’t appear. Each control has a unique ID and I have created many sub groups of motors that work but never ones with all of them together. The missing motor controllers have all been different and I can’t point to one as more likely to fail than the other. I’m inclined to think it’s a problem with Phoenix Tuner. Is there a way I can see a list of devices on the CAN bus without using Phoenix Tuner?
That sounds suspiciously like yellow/green have been reversed somewhere. Grab a multi-meter and check the following (robot not powered):
- resistance: yellow to yellow from one end of the harness to another - should be 0Ω
- resistance: green to green from one end of the harness to another- should be 0Ω
- resistance: yellow to green from one end of the harness to another- should be very high
- resistance: across yellow to green should be ~60Ω when RIO and PDP are in circuit.
- resistance: between yellow and chassis. Should be MΩs (large).
- resistance: between green and chassis. Should be MΩs (large).
- ensure PDP is at one end of the bus, and the RIO is at the other
- confirm you are not using star-topology-or-similar where stub lengths exceed ~1ft.
Report how many devices of every model on the bus, and what IDs. When posting a problem, if the root-cause isn’t obvious, report what others would need to reproduce it, assuming it is reproducible (general advice).
Confirm Server is 1.1 (bottom right corner of Tuner). If not, use the Robot Controller tab to install latest Diag Server.
This is a bit off-topic, but how important is it that the PDP is on the end of the CAN bus? Is it because of the terminal resistors? I didn’t know about this and just wired it in the middle; would this increase the noise in the bus?
It’s only necessary if making use of the internal terminal resistor. You can certainly turn that resistor off (move the jumper) and add your own terminating resistor at the end of the chain instead
(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)
Everything just worked without changing anything. It’s kind of weird since I had already tried rebooting and power cycling the control system and the laptop. Not sure why it started working all of a sudden. There were 13 motor controllers 0-4 ids were Victor SPXs 5-6 were Talon SRXs and 7-12 were Victor SPXs. The PCP id was 0. I’m pretty confident the wiring for the CAN loop was correct because all the lights were blinking orange when experiencing the problem and I had checked the loop several times for problems. All the resistances measurements were what you would expect.
Try changing the device ID’s of the ones that show up
That is not a complete check. If the devices are wired to each other, but not wired to RIO, they will blink orange - but will not show up to RIO/Tuner/API.
Would devices at the end of the chain indicate that the chain was alright? Because I could connect to devices at both the beginning and end of the chain.
Make sure the ID’s are different.
Generally yes. One possible exception is where there are multiple flips between green and yellow, where two or more devices are flipped one way, and two or more devices are flipped the other way. I’ve seen this where students flip green and yellow in the chain in multiple spots when using PWM style connectors, and mate them incorrectly.
So patches of the chain would not be seen by the RIO.
In this circumstance I would expect red “blips” on top of the orange pattern.
To ensure robustness, rattle/tug-test your chain at various spots while looking for red-blips.
Then do a ten-in-ten boot test (power boot robot, confirm everything shows up in Tuner, shutdown robot, repeat nine more times).
If both tests pass, then you are likely good-to-go, although having the root-cause found and confirmed would have been ideal.
It’s turned on and worked every time. I’m not sure what was the problem but your insight was helpful in having a deeper understanding on how CAN works. I’ll reply if I am ever able to replicate this and figure out what was going on.
one thing that helped:
there were 2 devices with id “2” and phoneix tuner only showed 1 of them.
One of the device-id-2-talons had its black connectors pulled off so the CAN wire pairs came unbundeled. we accidentally used the green wire from one of the CAN wire pairs and the yellow wire from the other can wire pair coming out of the talon, to connect to the rest of the CAN loop.