Sharon_ Posted June 19, 2014 Report Share Posted June 19, 2014 Hi friends, After a long time. I am developing a CAN read/write module for CAN diagnostics testing. There is no problem with ncWriteObj.vi- works fine. I can also see the data on CANoe Trace window. But I also need to read the response of the ECU module from a different CAN ID. I just connected the Message handle to the VI and read back the values. Say for example If the diagnostic command is 02 10 C0 FF FF FF FF FF The positive response should be 02 50 C0 FF FF FF FF FF (actually only the first 3 bytes matter) If I use ncReadObj VI the output is 0 0 0 0 80 59 4C A *** update: the above data is not correct. I get the same output even if I change the command. what is happening here? Even if the formatting is not correct, I expected bytes 1-4 to be the same value.(assuming the data array to be reversed) Where am I making mistake? Sync problem? Please help. It is driving me crazy. -Sharon P.S Unfortunately I cant attach my code. It is on a different PC and using pendrive is prohibited. Sorry Quote Link to comment
hooovahh Posted June 19, 2014 Report Share Posted June 19, 2014 Why are you using the old Series 2 CAN drivers? Is this a legacy program? Does your device support XNET? If so I highly recommend using the XNET drivers. They are superior in almost every way. That being said it is your choice and if you are more comfortable with one driver set versus another then use what you like. Back to the question. Start with the basics. You said that you can see the CAN write works fine using another tool, can you see the CAN message come back from the ECU using this other tool? What do you see there? What I'm trying to get at is, is the problem that the ECU doesn't actually send what it should? Assuming it is sending the data it should try opening the example in the example finder. I think it is called something like "Read write same port" where you can setup a write a frame, then read the frames back. Does this work as expected? Maybe also look at MAX. There is a bus monitor that can look at raw frames coming in. I can't remember if there is a way to write frames there, but maybe your other tool can send the request and see if the bus monitor sees the request, and the reply from the ECU. 1 Quote Link to comment
justingruenberg Posted June 21, 2014 Report Share Posted June 21, 2014 That frame data looks like an error frame. What's the value of IsRemote in the return data from ncReadObj? "IsRemote" is deceptively named and can indicate an error (look into the docs for the function). Remember that when you send your request, the next frame may not be the response. It might be an error or unrelated frame (or a previous diagnostic response that wasn't cleared out of the RX buffer). If you're reading ncReadObj that will only read the first frame on the RX queue. I suggest using the function to read multiple frames (ncReadNetMult, but don't quote me on that... I don't have LabVIEW on this computer). Look into the examples to see how to use it to grab everything on the RX buffer. 1 Quote Link to comment
Sharon_ Posted June 27, 2014 Author Report Share Posted June 27, 2014 Thank you Justin. I will definitely try that. Sharon Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.