CANTimeoutException disabling motors

We are using 4 black Jags and 4 grey Jags this year connected to a 2Can and programmed in Java. All the Jags have been updated to firmware 92 and the 2Can to firmware 2.1. The black Jags control our drive motors and each one has a 1024 count quadrature encoder connected to it. The wheels spin at a maximum of 5 rps for a total count of 1024 * 5 * 2 = 10240 transitions per second, well within the rated 1,000,000 transitions per second of the Jaguars.

However, when we turn on speed control we keep getting intermittent CANTimeoutException errors (%VBus works fine). Whenever this happens, the affected Jaguar stops responding to crio commands but gives no other indication there is a problem. The status lights are all normal and the 2Can website continues to get environmental updates from the Jaguar. In addition, all the other Jaguars continue to work fine until they too get the random exception.

Any idea what might be causing this? There appears to be a new motor safety class that is supposed to kill motors that stop responding, but there doesn’t seem to be anyway to reset the status and I’m not certain this is the problem. We even tried putting the robot on blocks and limiting our commands to only the drive Jags, but still ran into the same issue. An interesting note is that while we get the exception at random times on random Jags, once we are down to a single Jag receiving commands we do not get any further exceptions. We have verified all our connections and are only using a few feet of wiring.

Thanks in advance for your help!


We had a few CANTimeoutExceptions caused by a termination problem:

Our RJ-12 with the 100 ohm resistor crimped directly into it had its leads very close together. We suspect they were occasionally touching.

We crimped another with the leads actually a bit LONGER, so that each lead would go perfectly AROUND the plastic block that normally holds the insulation in the crimp connector.

I would expect that the 2CAN has termination built-in to it, so likely you are fine there. I’ve never used one personally, but the RS-232 CAN adapters that you make sometimes don’t have the DB-9 pins pushed all the way into the housing, and this has caused CANTimeoutExceptions in the past for us as well.


We are using speed control with 256 ppr encoders that rotate at close to 600 RPM. So we are not too far off from each other pps-wise.

Thanks for the thoughts and information! We have verified our termination resistor has plenty of space and isn’t touching, so we don’t think that is an issue.

It does appear to be only related to the black Jaguars. We tried moving a few of our wheels over to the greys and while we still get the occasional exception, they don’t freeze. However, we would rather use the blacks as they have better operating parameters and a higher source current for the encoders.


You might try switching to the serial port to talk to your first black Jaguar.

We often switch back and forth between the serial port and 2CAN to help expose various issues.

There was a recent update to the 2CAN. Be sure it is installed.

When you make your CAN cables you should only connect the CanH and CanL signals. Don’t connect the ground…it makes a ground loop.

The rest of the world uses 120 ohms for termination. I have never seen a reason that TI said to use 100 ohms, so we have switched to 120 ohms.