Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   C/C++ (http://www.chiefdelphi.com/forums/forumdisplay.php?f=183)
-   -   Black jaguars: not working (http://www.chiefdelphi.com/forums/showthread.php?t=80884)

ellisk 22-01-2010 19:36

Black jaguars: not working
 
I am trying to get the new black jaguars working and am getting errors when I attempt to use them. Here is the setup and the errors I am getting:

First, the jaguars have been updated (done by another member of our team). I put the file at http://firstforge.wpi.edu/sf/frs/do/...agbridgeplugin onto the cRIO via FTP according to the directions at http://firstforge.wpi.edu/sf/sfmain/...ects.canjaguar, under the heading "Getting Started."

I got the Jaguar code from http://firstforge.wpi.edu/sf/frs/do/...anjaguar_for_c and modified it so that it compiles, as shown in this thread: http://www.chiefdelphi.com/forums/sh...ad.php?t=80706

The code I am using is:
Code:

// This code has been simplified for the purposes of posting.
#include "WPILib.h"
#include "CANJaguar.h"

class Spy : public SimpleRobot
{
        Joystick* leftStick;
        CANJaguar* frontRightMotor;

public:
        Spy(void)
        {
                GetWatchdog().SetEnabled(false);

                leftStick = new Joystick(1);
                frontRightMotor = new CANJaguar(1);
        }

        void Autonomous(void)
        {

        }

        void OperatorControl(void)
        {
                while (true)
                        frontRightMotor->Set(leftStick->GetY());
        }
};

START_ROBOT_CLASS(Spy);

When I run the code, I get the following error, repeatedly, in the console (and the Jaguar, of course, does not run):
Code:

>>>>ERROR: status == -52007 (0xFFF34D9) in sendMessage() in C:/windriver/workspace/Spy/CANJaguar.cpp at line 176
I *assume* that the correct port is 1; we're daisy-chaining our CAN Jaguars, and the Jaguar of interest is the first one in the chain. I've also tried 0 as the port for the jaguar, which gives the same error.

Does anyone know what's going on? I would really appreciate any help.

Thanks,
Kevin

ellisk 22-01-2010 20:14

Re: Black jaguars: not working
 
I'm realizing that this really isn't a C++ Windriver specific question. Would a moderator mind moving my thread into the general programming forum? Thanks.

jhersh 23-01-2010 06:14

Re: Black jaguars: not working
 
Quote:

Originally Posted by ellisk (Post 904908)
I *assume* that the correct port is 1; we're daisy-chaining our CAN Jaguars, and the Jaguar of interest is the first one in the chain. I've also tried 0 as the port for the jaguar, which gives the same error.

I certainly cannot be 0, since that is the broadcast address. 1 is what all Jaguars ship as. You must assign a unique ID to each Jaguar with a tool such as the bdc-comm utility from TI. This has nothing to do with wiring order. All Jags are on a shared bus. The CAN bus is wired straight through between the 2 CAN connectors on the Jags.

TI recommends that you use addresses in the range 2 - 63.

BTW, the error code is "Operation Timed Out".

Also, have you tested your serial cable adapter with a PC serial port and bdc-comm to make sure it's functioning properly? Is your serial cable plugged into the left RJ-12 plug on the Black Jag? Does the plugin appear to be loading properly on the console (you would have to use a network console to see it since your serial port is in use!)?

-Joe

ellisk 23-01-2010 19:37

Re: Black jaguars: not working
 
Thanks for the reply. I talked to the control systems people on my team and they set the ID of the black Jaguar using the bdc-comm utility to 2. I tried the code again, however, with the ID given in the constructor of the black jaguar to 2, and I still get the exact same behavior.:confused: So, while it seems that I did have the wrong port, that isn't the reason I get these errors. Any advice?

Thanks,
Kevin

EDIT: yes, the driver loads correctly, as seen from the network console. The black jaguar utilities show that the Jaguar is functioning fine and the wiring is fine. I'm very confused...

jhersh 23-01-2010 19:42

Re: Black jaguars: not working
 
What about the other list of suggestions in my last post? Also... if you have LabVIEW installed, you could run the voltage mode example to see what enumerates on your robot.

-Joe

ellisk 23-01-2010 19:47

Re: Black jaguars: not working
 
Yes, we've tried the other suggestions. The cable is fine, it's plugged in on the left, there is a 100 ohm resistor on the left jack, and I can see the driver loading on the console when the cRIO boots.

EDIT:
Here's the startup message from the cRIO's console:
Code:

FPGA Hardware GUID: 0xAD(a bunch of hex digits)
FPGA Software GUID: 0xAD(a bunch of hex digits)
FPGA Hardware Version: 2010
FPGA Software Version: 2010
FPGA Hardware Revision: 1.3.0
FPGA Software Revision: 1.3.0
* Loading StartupDlls: FRC_BlockJagBridgePlugin
FRC_BlockJagBridgePlugin was compiled from SVN revision 10
task 0x12d9610 (t2) deleted: erno=0 (0) status=0 (0)
* Loading StartupDls: FRC_UserProgram
...FRC_UserProgram failed to load.

NI-VISA Server 4.5 started successfully.
task 0xe414e8 (t1) deleted: errno=1835009 (0x1c001) status=1 (0x1)

Welcome to LabVIEW Real-Time 8.6.1f2

(the last line is odd, considering that it's not in LabVIEW mode...)

When I run the aforementioned program, I get the following error at startup, presumably from the call to Init of the CANJaguar in the constructor of the program:
Code:

>>>>ERROR: status == -63194 (0xFFFF0926) in InitJaguar() in C:/windriver/workspace/Spy/CANJaguar.cpp at line 32

jhersh 23-01-2010 19:53

Re: Black jaguars: not working
 
If you just unplug the serial connector from the cRIO and plug it into a PC, does bdc-comm see the Jaguars?

ChristopherBuck 23-01-2010 23:15

Re: Black jaguars: not working
 
Hi, we had a seemingly similar problem with our CAN bus setup (using LabView). the driverstation would display an error regarding "CAN-Recieve.vi" and "operation not completed in time" (or something like that), so a timeout error of sorts. essentially, the cRIO was not getting a confirmation of initial setup from the black jag, or other jaguar- I forget exactly which. Anyway, we went into the code for initializing a 4motor robot drive system. and modified it such that it bypassed this error point (removing CAN-Recieve.vi). Then it worked perfectly. So my guess is that you may be able to do something similar in C++.

Dale 23-01-2010 23:33

Re: Black jaguars: not working
 
Answering for ellisk and in answer jhersh's question... yes the same cable works fine off a PC to talk to the Jaguar via the command line and GUI interface. The firmware was updated and ID set. No other changes were made to the Jaguar's settings. Also, for what it's worth, different cRIOs exhibit the same problem.

Once thing we didn't do was wire any of the the RS-232 handshake lines in the connector, things like CTS, RTS, DTR, DSR. The manual didn't say anything about that so we're assuming the cRIO doesn't care. Is that true?

imac256 24-01-2010 00:04

Re: Black jaguars: not working
 
As a side thought, is your CAN bus properly terminated? To make the CAN bus work it is my understanding that you need approximately a 100ohm resistor joining CANH and CANL on the last Jaguar. The pin outs can be found in the data sheet available here: http://www.luminarymicro.com/products/mdl-bdc24.html. I don't know if this will fix the problem but it may be something in the right direction.

-Ian
Programmer, Team 2022

jhersh 24-01-2010 00:12

Re: Black jaguars: not working
 
Quote:

Originally Posted by Dale (Post 905690)
Once thing we didn't do was wire any of the the RS-232 handshake lines in the connector, things like CTS, RTS, DTR, DSR. The manual didn't say anything about that so we're assuming the cRIO doesn't care. Is that true?

The Jaguar only has connections for RX and TX.

jhersh 24-01-2010 00:31

Re: Black jaguars: not working
 
Quote:

Originally Posted by ChristopherBuck (Post 905684)
Hi, we had a seemingly similar problem with our CAN bus setup (using LabView). the driverstation would display an error regarding "CAN-Recieve.vi" and "operation not completed in time" (or something like that), so a timeout error of sorts. essentially, the cRIO was not getting a confirmation of initial setup from the black jag, or other jaguar- I forget exactly which. Anyway, we went into the code for initializing a 4motor robot drive system. and modified it such that it bypassed this error point (removing CAN-Recieve.vi). Then it worked perfectly. So my guess is that you may be able to do something similar in C++.

That a great point... I forgot to ask if the robot was enabled when you got this error. The current image (v19) will not cause a reply if the robot is disabled. This means that, for the moment, you can't call any "Set" commands while the robot is disabled without an error. This will be addressed in the next update. It won't cause any trouble (the way the C++ library is written), but it will create some errors on the DS. As ChristopherBuck noted, in LabVIEW it is written with status chaining so one of these errors will prevent it from working from then on.

Dale 24-01-2010 01:52

Re: Black jaguars: not working
 
We do have the 100 ohm terminator in place. We know the Jaguars only have TX and RX but I wasn't clear whether the cRIO needed to have the other handshake lines jumpered at it's end. ellisk will have to answer about the robot being enabled.

They were trying a 2CAN ethernet adapter when I left the lab tonight to see if that yields better results. We'd still like to get the "official" RS-232 solution working though.

jhersh 24-01-2010 02:31

Re: Black jaguars: not working
 
Quote:

Originally Posted by Dale (Post 905739)
We know the Jaguars only have TX and RX but I wasn't clear whether the cRIO needed to have the other handshake lines jumpered at it's end.

The cRIO does support hardware flow control, but it's disabled by default and the BlakJagBridgePlugin does not enable it.

-Joe

Bryscus 25-01-2010 13:05

Re: Black jaguars: not working
 
2 Attachment(s)
Quote:

Originally Posted by ellisk (Post 905558)
Yes, we've tried the other suggestions. The cable is fine, it's plugged in on the left, there is a 100 ohm resistor on the left jack, and I can see the driver loading on the console when the cRIO boots.

I have been having an issue with intermittent signals getting to the Jags. We currently have updated the firmware on both Jags connected (One black and one gray each with its respective firmware update) through the RS232 port on the cRio. There is a 100 ohm termination resistor inside the DB9 shield between CANL and CANH (the green and red wires). There is a 6 pin cable running from the RS232 to CAN inverter to the LEFT port of the black Jag. I have then tried both a 4pin and 6pin cable from the RIGHT port of the black Jag to the LEFT port of the gray Jag (just to see if I had made a bad cable). I then created a short Termination cable that only has a 100ohm resistor between the green and red wires. This short cable is plugged into the RIGHT port of the Gray Jag. I have tried communications with and without this termination cable and get similar results.

If I just send the Jags a constant max output value, they will run and then sputter, and then run, yada yada yada. It sounds as if I have a physical layer problem - i.e., signals not propagating properly.

Also, I have obviously been able to connect with BD-COM to assign IDs and re-flash the firmware...


So my questions are:

Should the termination resistor be on the cable at the LEFT port of the Gray Jag, or is it correct the way I have it?

Has anyone else been able to get a connection, but suffers from intermittent signal loss?

- Bryce

P.S. I have attached some pictures of errors that I am receiving in the NetConsole.

P.S.S. This is somewhat of a bummer, because I have written code to make use of the Speed and Position modes, but can't test it until I at least have a reliable communication interface...


All times are GMT -5. The time now is 14:20.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi