09-07-2022 05:23 AM
Hello,
I would like to use the Automotive Diagnostic Command Set (Version 18.5) to flash an ECU based on an UDS-Session. We are using LabWindows/CVI 2015.
To open an UDS-Session with ndOpenDiagnosticOnCANFD(), there are the parameters transmitID and receiveID necessary.
What is the reason that the Automotive Diagnostic Command Set does not support 29-Bit Message-Ids as transmitID and receiveID for the function ndOpenDiagnosticOnCANFD()?
It comes back with Error:
Error -8003 occurred at NIDiagCS.dll
Possible reason(s): Automotive Diagnostic Command Set: The arbitration ID passed to the function is not valid.
The transmitID and receiveID I have to use: 0x18DA10F1 and 0x18DAF110. These Ids are coming from the Software-Developer of the ECU.
Solved! Go to Solution.
09-07-2022 06:53 AM
Hi,
I am not sure why it is not mentioned in the documentation for C API. Can you try to OR the ID with the flag?
From Open Diagnostic on CAN FD.vi:
"To specify an extended (29-bit) ID, OR the value with 0x20000000."
DISCLAIMER: The attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system, or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense
09-07-2022 08:01 AM
I thank you very much. Now it works. Great.
09-07-2022 08:54 AM
The reason that this is needed, is because you can have the ID 0x100 be extended, or non extended. So there needs to be a way to designate if the ID is extended, or not. However if the ID is past the size of the standard, I could see the argument that it should just know that it is extended, instead of generating an error.
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord