|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#31
|
|||
|
|||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
i can tell you that it is not loosing power as there were outputs added to the code that would trigger when the GetPowerCycled() function returned true. a very early version of our code actually used both faults and power cycles as a trigger to re-init but it was taken out later, why it was taken out i don't know.
|
|
#32
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
It's possible, I suppose that the load is too great and we are somehow browning out, we did consider that and try fresh batteries. We don't seem to be consistently dragging down the batteries which would loosely indicate we aren't being overly aggressive in a general sense. I can certainly try putting a datalogger on the power supply side of the Jaguar and see what I can like that. Not sure I have a current probe I can use in that configuration on 12VDC and a shunt is not a good idea given the load impedance. The wires are clearly of sufficient gauge...I didn't wire that part of the system but it's better than 12AWG (so it's not 12AWG), and the problem doesn't seem to follow any particular wire so it's not likely the crimps. We've crimped plenty of other wires in the past with these tools and this make and brand of lug and they are firmly screwed down. I could try putting a large 25V or 50V capacitor near the Jaguar on the input side to provide additional low internal resistance power if somehow the impedance of the wires from the power distribution board was suspect. It may not be legal on the competition floor, but for troubleshooting I think the battery will handle that. Last edited by techhelpbb : 09-03-2011 at 15:06. |
|
#33
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
We are also seeing an occasional CANTimeoutException being thrown under brownout conditions.
Strangely, it is one Black Jaguar in particular that is always the one that goes first. It is connected to a CIM in our 4-motor drivetrain, and it is a "master" Jaguar, in that we have an encoder hooked up to it, and run it under speed control. Under a fresh, full battery, the exceptions don't occur, but within a 2 minute match, the voltage certainly drops enough to start throwing these exceptions. We feel it is voltage related, as when we are in low gear, the exceptions never occur, whereas in high gear, they happen very frequently. Our workaround so far has been to catch the exception, and re-initialize the Jaguars when they occur. These seems to work decently well. We've gone through the wiring several times, and can't seem to isolate why one Jaguar is more prone than the others. Less tolerant Jaguar? A CIM that likes to draw more current than the others? Your best guess is as good as mine... |
|
#34
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
We discovered it early on. I thought we disposed of it, or at very least marked it. Suddenly it 'reappeared' and made for another 2 or 3 hours of troubleshooting. I believe one of the other mentors showed it to the garbage can when I wasn't around so that it couldn't find it's way back into anything important again. I can also say that one side of our robot drive train exhibits higher inertia than the other. While messing around with encoders before we isolated them that side was by far more likely to really have serious show stopping issues than the other which for the most part is the same exact design. Once we made the isolation board it stopped misbehaving and for the most part accepted the same PID tuning parameters for a setpoint of velocity (you could at least start tweaking the values from the side with less inertia and you'd be close). It drove nice and straight once we isolated the encoders until we started getting the CAN bus issues and then, after we trapped that error, it was good again. It doesn't seem to me that this particular part of our robot is any less well built than the other. We didn't, after all, fabricate the gear boxes themselves, and cursory examination doesn't indicate any obvious mechanical issue. However, it seems just a slight variation in the mechanism and even if we take the Jaguars from the side with less inertia they seem to have issues on the side with more inertia. Now I do grant the reader that in swapping the Jaguars we are using the wiring from the side of the robot that has problems and that might be why that side keeps being slightly more prone to problems. The wiring just does not itself seem bad. As soon as I get a chance I'll rig a datalogger up on the robot while it moves. I'd really like to see what the power supply side actually looks like when this goes on. Last edited by techhelpbb : 09-03-2011 at 15:32. |
|
#35
|
|||
|
|||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
Quote:
Greetings, I was curious as to whether your testing was succesful and whether we have a fix at this point ? Would it be a fix on the FMS side or a new CRIO image ? Thanks, John |
|
#36
|
|||
|
|||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
Are you aware of any teams having trouble at any regionals using v28 this weekend? -Joe |
|
#37
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
So if WD wants to request say bus voltage on Jag1 it first checks if cRIO has performed any requests (resync tokenization, throttle set, etc..). If cRIO has then WD will hold off on transactions to Jag1 until Jag1 sends an ACK (intended to go to cRIO). cRIO Set Throttle <--------------------------User opens Web Dash, WD holds off... cRIO ACK WB Get Voltage <--------------- Jag sends an ACK, it is now available WB ACK Similarly if the WD is waiting on Jag1 for a response/ACK and cRIO request comes in, it will delay transmission until Jag1 responds, OR a one millisecond timeout occurs (to ensure cRIO gets minimal latency to bus ). Without this management code there would be problems where... cRIO Sets Throttle WB Gets Voltage <--------------------------User opens Web Dash, ACK ACK ...which confuses the Jag and sometimes causes Jag to not respond at all. |
|
#38
|
|||
|
|||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
No, I'm not aware of any other teams reporting CAN startup problems with V28 from this weekend. Perhaps the Team Update #17 suggestion to monitor for CAN errors was effective (or perhaps scared a few more teams into a PWM conversion). Maybe someone at this weekend’s competition might add their observations on this issue… |
|
#39
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
New 2CAN firmware 2.5 available
http://www.crosstheroadelectronics.com/2CAN.htm I found and fixed a few issues that could be related... Major Fixes.... -Fixed a potential situation where 2can stops sending udp frames - only happens on higher Ethernet utilizations. -There is an improvement to lagging Web dash browsing while robot is enabled. See release notes for details on all fixes. There is no FRC legal obligation to update from 2.1 to 2.5. Both function with the FRC_2CANPlugin (SVN rev66). |
|
#40
|
|||||
|
|||||
|
A different Serial CAN problem.
I’d like to throw a totally unreported problem into the CAN problem bucket.
This relates to closed-loop potentiometer-based arm control. This happened to our team after the 2’nd to last qualifying match at the Pittsburgh regional this weekend. Setup: We use 4 Jaguars running on Serial CAN. The first 2 “drive” Jags are run open loop voltage control (no encoders) but the last 2 “Arm” Jags are switched between open loop voltage control (for manual adjustment), and Potentiometer based Closed loop control (for recalling pre-learned arm positions). A single VI is used to do this switch by issuing new sets of setup commands each time the mode is changed. We also have two VI’s in “Periodic Tasks” that do a “read back” of the current arm position for diagnostic purposes and to use as inputs to LEARN arm position presets. This has been working seamlessly for the last week of build, and the first 2 ½ days of competition. Note: This read-back isn’t needed for normal operation because the Jags are normally sent “Goto” positions and left to do their own closed loop control. Just before the last match of Quals, we broke an arm chain while trying to adjust a position reset (using our tried and true “Learn” mode). The root cause for the mechanical failure turned out to be the fact that for some reason both Jags were reporting arm positions of “0.0”, instead of the actual arm position (so the learn process was recording bogus information). We hadn’t made any software or hardware changes for several matches, and we tried multiple reboots, measured pot voltages, checked wiring etc., but couldn’t get the jags to read proper values. It was odd that both Jags were reading zero position although they had little in common physically (other than the CAN bus and the software). There were no more than the usual occasional drive Jag CAN errors on the diag screen. Eventually we loaded up the code in debug mode to see exactly what was coming out of the Arm Jags. To our surprise both JAGS were reporting no errors and positions of 0.0. We did a Highlight Execution to verify that the reads were being done… they were, but returning no valid data. Through this entire operation, the Arm JAGs were still responding to voltage output commands and could drive the arms to any position. They just would not return valid “position” status on request. We were stumped as to what to try next. If I’d had my USB to Serial adapter I would have reloaded the JAG code or run the COMM program (bad me for forgetting to bring that). The very odd thing was the problem corrected itself as if by magic after an hour of debugging when we loaded some new arm presets onto the CRIO flash drive programmatically. I can’t explain this in detail as it would require a full understanding of our code, but suffice it to say that this change should not have changed the JAG operation in any tangible way…. all it would have done is sent more reasonable “value” into the Drive VI as pot setpoints. Once things started working again, we just rebooted back to the original code (that had never been unloaded) and redid the presets using the normal “learn” mode and everything seems to be back normal (except my future failure fears) Has anyone seen this reluctance of the JAGs to return pot position, especially once they have been setup correctly? Last edited by PhilBot : 13-03-2011 at 11:29. Reason: Typos |
|
#41
|
|||
|
|||
|
Re: A different Serial CAN problem.
Quote:
That can happen if a Jag reboots or have a communication problem when you are configuring the Jag Position reference. I'm guessing if you had set the position reference again, you would have seen it fixed. Maybe your jags were browning out due to a low battery? -Joe |
|
#42
|
|||||
|
|||||
|
Re: A different Serial CAN problem.
Quote:
When the problem first occured we changed batteries and re-booted several times. Changed batteries again later after matches were over. No effect. The problem is that this "0.0 postion" error persisted for many reboots, debug download etc. and then just returned to normal and hour later. As for the code... The Jags are switched between "Voltage out" and "Position mode" each time a preset recall button is pressed (and held). Before the new mode parameters are loaded, the JAGs are disabled, and then re-enabled at the end. All of the JAG parameters (control mode, position source, pot turns, PI gains etc) are re-loaded, and the code checks for any errors and re-tries the command sequence 3 times if errors persist. Note: We'd run into the occasional bad-command-write problem several days before shipping and had built in the retries. So it's pretty bullet proof. Do you think accidentally sending the JAG an invalid "position value" (eg: a negative value for target position) could lock up the controller???? Phil. |
|
#43
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Adding to my list of troubleshooting tools that I guess I'll be fabricating...hopefully I can keep enough students engaged at this point...
It's far too easy to think that you have a brown out condition on this robot. The power source is limited and the surge currents for the CIMs can exceed 120A each, with each robot having generally at least 2. Then add the fact that the platform moves...and the brownouts could be *very* short durations and I have this picture in my head of an oscilloscope being dragged behind a robot on a wheeled cart like hospital equipment. Just never let us mind how many channels you might need in a system like this!Luckily a whole digital sampling oscilloscope can be implemented in an FPGA up to 100 million samples per second at 8 bits and plug into a USB port (depending on what and how you trigger, and your samples per period required, this is at best a 50MHz logic analyzer at Nyquist rate/frequency or maybe a 5-10MHz oscilloscope...I assume there you want to reconstruct a waveform with at least 10 points-20 points of sampling per cycle at minimum which means that you need more than the Nyquist rate/frequency which just eliminates aliasing). Luckily F.I.R.S.T. is starting to let us put laptops on the robot. However, that's still at least 2 pounds, probes, and some current measuring apparatus. I have a better idea. Let's call it a brown out detector circuit. It's analog (so it's not subject to sampling issues...just integration and when in doubt there's some pretty darn fast operational amplifiers around these days). It'll not need to store all the data either, so the robot won't have to cart around something to fill up...just so you can analyze only what you see when you get it off there. Plus this way you'll get instant feedback. Too bad I don't have a source for small DVBST tubes (how an analog storage oscilloscope works). When we're done with this, I'll put the information out there for everyone as well. I hope such a thing will make the whole issue of a power brown out as simple as looking at the LED or small LED backlit LCD. I can't see people forking over a few hundred bucks for a digital sampling oscilloscope and possibly 2x-5x more than that for a good inductive current probe. This will be far more economical and mobile. Last edited by techhelpbb : 14-03-2011 at 08:53. |
|
#44
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
Quote:
Your problem does not sound like brown out to me. Having said that I can state the a Jag will go into a non-responsive state if you bridge CANH to CANL several times or at just the right time, only a power cycle will fix this problem. This suggests either a problem with the Jag firmware or an issue with the Jaguar CAN controller itself. I have also observed Jags becoming non-responsive after a brown out causing the entire CAN bus to crash. This should not happen. We try our best to make CAN a high performance option for teams that choose to use it. We test our products vigorously to ensure that they meet the expectations of FIRST teams and the CAN spec. Sometime there are changes made to the system that force us to retest and and re-validate. Unfortunately there is a lack of transparency that we are subject to that makes validation difficult. This lack of transparency causes us to spend most of our time testing when we could be adding new features. In a perfect world we would have full access to all of the things that affect CAN, this is not the case. I am confidant in saying that these issues that teams are seeing are not caused by the 2CAN. I do hope that they are resolved and want teams, FIRST, NI and TI to know that we are willing to do what ever is required to help find solutions to these issues. |
|
#45
|
||||
|
||||
|
Re: Unexplained intermittent CAN / 2CAN Jaguar problems at GSR
What about measuring the thing that actually causes the brownout?
The 3.3v power supply on the Jaguar. What voltage does the processor brown out at? 2.7v? You can use an interrupt on an analog trigger to wait until a brownout occurs. (You can get the 3.3v off of the brake/coast pins. If you're using CAN, you can override that jumper anyways) |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|