CAN motors stopping intermittently

Hello!

Whenever we are using CAN motor controllers using Phoenix tuner on our robot, the motors stop working intermittently. I’ve included a video, and you can hear the problem. In this example, we’re not playing with any sliders or anything, just setting a power and letting it go. This problem propagates to all motors powered by a CAN motor controller, including the Talons on the Falcons. We utilize PWM controllers as well, and those do not suffer from the same fault, however we ran those in code, vs. running the CAN motors in phoenix tuner. The firmware for some motor controllers is fully up to date on the falcons, and almost up to date on our Victor SPXs

Just to provide some info on what the motor controllers are doing, they are flashing the operating colors when the motor is running, go to orange during the period of the stop, and then return back to the operating colors. This problem really stumps us, so we’d really appreciate any help any of you can offer.

Thanks!

It’s hard to tell from the video, but orange LED may indicate the controllers are disabling. Check for any loose wiring on your CAN bus and make sure both ends are terminated properly (often this is done by putting the roboRIO on one end, and the PDP on the other).

If this were happening outside of the tuner application, it would be worth looking at the driver station and log viewer for CAN errors and CAN bus utilization (CAN%):

With Phoenix tuner, it’s worth checking for faults on a couple of the devices. I don’t have a way to check right now, but I don’t think tuner displays bus utilization or errors.

A test you might try is taking some of the CAN devices off the bus and seeing if this changes the behavior. It’s usually not too hard to effectively divide and conquer by splitting the bus in two (maybe drive train vs. everything else). If the problem is there on one half and not the other or, if it goes away for both halves when you split things like this, you have a helpful clue as to what might be going on.

1 Like

Hi

Thanks for your reply! We’ve found our CAN utilization to be around 30%. Our CAN isn’t terminated in the way that you recommended above, however we haven’t had that cause us issues; we may have gotten (un)lucky this time. We’ll also definitely try the divide and conquer method when we have hands on time with the robot again, that seems like a good way to start testing and narrowing down the problem.

1 Like

How is your CAN bus set up? The standard setup is to have one pair of yellow/green (high/low) wires connected to the roboRIO, each intermediate device like a motor controller or PCM with two pairs of connections (to the previous and next device in the chain), and finally the PDP with one pair of wires going in and one pair of empty connectors, with the termination jumper set to on. If you are not terminating at the PDP, do you have the jumper set to off and your own terminating resistor added the the end of the chain? Are all your wire pairs twisted? Are there any holes or gaps, especially near motors?

Have you verified that your CAN bus setup is actually providing a good signal at each of the nodes, or is it just that haven’t had any problems with the observable functionality?

I may not have hit the tone right, but I’m not asking just to be condescending or dismissive. CAN, as we use it at least, is sorta leaving the realm of basic electricity behavior into some weirder stuff, so making sure the physical connections are as expected is important. Things like the shape of the node network, which you would never detect with a multimeter, can have an effect on the signal integrity at the actual devices on the network. I might be jumping onto a non-issue, but hearing that there is something atypical with the physical setup strikes me as something to double check on.

1 Like

It would probably be helpful if you can post some close up pictures showing your CAN bus wiring. A video showing the controller LEDs might also be helpful.

1 Like

Hi, thanks for replying!

As for your questions, I’ll answer them to the best of my ability (I’m on mechanical, however have some electrical experience) I’m not sure how our CAN chain is terminated, however what I can say is that we have 4 wires going into our PDP, with 2 going in, and 2 going to our PCM. If this isn’t the suggested method, then we’ll definitely go ahead and redo our CAN chain to terminate at the PDP, and keep that as a best practice going forwards. I don’t think we have a single resistor in our shop, so I’d surprised if we were using those to terminate the CAN chain.

We use jumpers consistent with those found pre-installed on Falcons.

I don’t think so, each and every motor controller is powered and receiving signal so I think that the chain is all together

Thank you for replying! Certainly, I’m going to be out of the shop until Monday, but once I get back in on Monday I’ll be sure to post an update in the form of a new comment

Just as a quick update, we didn’t terminate the CAN chain properly, as we didn’t enable termination on the PDP. That did not seem to fix the problem, however when we went ahead and used code to drive the robot, it worked without any problems. It seems that phoenix tuner was just being dumb, so we’ll go ahead and see how we can fix that problem, but its good to hear the problem wasn’t serious. Thanks for everyone who contributed possible solutions

1 Like