CAN periodic status

Is anyone using the periodic status feature of the jaguars? It looks like it’s in the LabVIEW library and BDC-COMM, but not in C++ or Java. I also didn’t see it in the jaguar CAN documentation (although I may have missed it).

When I use it, I get the requested status, but I also get the following error reported to the driver’s station

>> ERROR <Code> -44086 occurred at Did not receive the appropriate number of bytes from the<>Periodic>>Robot <time>18:11:34 02/18/2012 FRC: JaguarCANDriver detected insufficient buffer size.

Diving into the WPI_CANJaguar_GetStatus, it appears that it is only sometimes is receiving the status, and when it doesn’t it throws that error.

I set it up with a rate of 0.1 seconds and read it in a 100ms loop in periodic tasks (see attached pictures). Is anyone else using it?



Haven’t tried using this in team code - didn’t even realize it was available in the FRC firmware - but I just downloaded the most recent update of the RDK (8555, updated 2/1/2012) and it looks like the docs now include the periodic status CAN messages, at least for the non-FRC firmware.

  • Ron
    Team #2607 controls mentor

Interesting, I was just looking at doing exactly what you are doing last night. So I’m going to be following this thread.

A thought comes to mind, but, it be better to hear from the WPI/Labview folks on this as they should have more intimate knowledge.

My thought is you are asking for a Periodic Status every 100ms (.1) and you are checking that status every 100ms which makes perfect sense. However, I’m wondering if you’re getting “caught” between status message updates. I’d try setting it to .09 and checking every 100ms.

Thanks, I last downloaded the RDK a few days before the latest update.

I had the same thought, but haven’t had a chance to try it yet. When I probed the status, it appeared that it was missing around half of the messages, but it’s really hard to tell with a rate of 10hz.

The design was to cache previous values so that if you read more quickly than the updates are coming in, you just get the most recent values. It sounds like there is a bug. You should not be getting those errors. I’ll look into it for next year if you’ll create a tracker.


I do see the most recent values cached, however, I also get the error reported. Since reporting errors are expensive, I ended up running the error wire to a clear errors VI.

Since we use C++, I didn’t even know that there was such a feature. I’ve added checks to each of the various classes that use the CAN bus and Jaguars to query the Jaguars for reset, and faults after are update operation on the Jaguars. At least this way, I can determine if something has gone wrong…assuming the Jaguars are replying :slight_smile:

It’s a bit of traffic on the bus but I see no alternatives, other than getting rid of the Jaguars