|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
I've definitely seen this symptom before, where a Jaguar becomes unresponsive until it is power cycled, so I ran some tests tonight and I've managed to reproduce this a number of ways....
Test 1 - 1 2CAN and 1 Black Jaguar.
Take a 2CAN and connect CAN cable from it to single Jaguar. Put termination resistor on Jaguar.
Power 2CAN, 2CAN LED will be orange. [ok]
Bridge CAN High and CAN low together, hold until 2CAN LED turns red. [ok]
Let go of CAN HIgh and CAN low and 2CAN LED will return orange. [ok]
Repeat until 2CAN LED stays red even after unbridging the CAN lines. [not ok]
Power cycle JUST the Jaguar and LED returns to orange. [not ok]
What happens here is when there is no cRIO, webdash, or host of any kind, the 2CAN periodically sends an enum CAN request to see who's out there. If no one responds with a CAN frame of any kind, 2CAN LED goes red to indicate a CAN problem. If 2CAN gets CAN frames within a timeout, LED is orange to indicate no CAN problems and that it's ready for any Ethernet traffic from cRIO/WebDash.
After bridging and unbridging several times the Jaguar no longer responds to the enum request from the 2CAN, which becomes apparent when the LED stays red.
Test 2 - 2 X Black Jag, one is Serial Gateway
Connect Black Jag Serial to PC using serial connection.
Connect Black Jag #2 to Serial Black Jag using CAN.
Open BDC comm
Drive Black Jag #2, setting full throttle. No need for motors.
Begin bridging and unbridging CAN H and CAN L until Black Jag#2 no longer drives (blinks orange). [ok].
Press enum on BDC COmm to refind Jaguars
You will only see the Serial Black Jaguar ID in the drop down [not ok].
Close/open BDC comm and you still will not be able to connect to Black Jag #2 [not ok].
Power cycle Jags and you will be able to resume CAN communication.
Test 3 - CAN tool and 1 Black Jag.
Connect a USB CAN tool to a black Jag.
I used Intrepid Control System's ValueCAN 3, and Vehicle Spy 3 software.
Transmit a 29 bit ID frame with DLC set to zero and arbitration id set to 0x240. This is an enum request.
Confirm Jaguar responds with CAN frame. [ok].
Transmit frame periodically, say 20 ms.
Each frame should have a response frame after each request (few milliseconds). [ok]
Begin bridging and unbridging CAN High and CAN low.
Confirm that CAN tool's transmit error count increases then decreases back to zero each time you bridge and unbridge.
Eventually the Jaguar will no longer respond even after unbridging CAN lines [not ok].
Conclusion
Briding and unbriding the CAN lines can put the Jaguars in to a state that's unrecoverable until you power cycle them. This can happen if the legs of your termination resistor are close together.
I suspect that momentarily losing termination resistor because of bad cable can also cause this symptom. Maybe the Jaguar can't handle Error frames gracefully or gets stuck in Bus off state (see error states in CAN spec, 127 occurrences of 11 recessive bits should bring CAN nodes back into error active state). Or maybe a race condition in the isrs (mentioned earlier in the post).
|