07-23-2024 05:54 PM
It depends on which hardware you have. If you need to use Vector hardware, then you can use these vxlapi wrappers as a starting point, but as Hooovahh said, you will also need to understand and implement the transport layer below UDS, ISO 15765.
It is possible to do but not simple. (I've had a LabVIEW>UDS>vxlapi>Vector implementation working for about 10 years, but the IP belongs to my employer, so I'm not at liberty to share.)
If you're using NI CAN hardware, then it would be easiest to use the Automotive Diagnostic Command Set Toolkit.
07-24-2024 07:57 AM
@TroyK wrote:
It is possible to do but not simple. (I've had a LabVIEW>UDS>vxlapi>Vector implementation working for about 10 years, but the IP belongs to my employer, so I'm not at liberty to share.)
The blog post I linked to does this. I reimplemented the NI ADCS library in pure G, then wrapped the Vector, Intrepid, and KVaser drivers into it. With my package those three hardware types have a UDS, KWP2000, and other ISO 15765 palettes for doing all the things you'd want. The unposted version makes these classes and adds the NI-CAN and NI-XNet options but I have similar posting limitations.
Unofficial Forum Rules and Guidelines
Get going with G! - LabVIEW Wiki.
17 Part Blog on Automotive CAN bus. - Hooovahh - LabVIEW Overlord
07-24-2024 08:23 AM
@Hooovahh wrote:
I believe a good resource for understanding ISO 15765, and UDS is my blog post. CAN Blog Part 8. It could use some updated examples, and could have the drivers rewritten into class abstraction. But as far as understanding the UDS messages I think it is very useful. There is a core that does all the state machine stuff for sending and receiving long messages.
Extremely good read. Thank you!
10-03-2024 05:38 AM
From your ISO CAN library, the mutiframe part seems to be not working at a specific part when writing blocks say for example
Expected:
TxID: 21 xx xx xx xx xx xx xx
TxID: 22 xx xx xx xx xx xx xx
...
TxID: 2A xx xx xx xx xx xx xx
RxID: 30 0A 05 xx xx xx xx xx
TxID: 2B xx xx xx xx xx xx xx
Actual:
TxID: 21 xx xx xx xx xx xx xx
TxID: 22 xx xx xx xx xx xx xx
...
TxID: 2A xx xx xx xx xx xx xx
RxID: 30 0A 05 xx xx xx xx xx
TxID: 21 xx xx xx xx xx xx xx
RxID: 03 7F 36 24 xx xx xx xx
Not sure on what I'm missing out..?
This hasppens when I'm trying to flash an ECU at Transfer Data block...