CAN Blog IntroductionOver the years I've learned a lot about CAN. And part of the motivation for this blog series is so I don't forget some of the things I've learned (or relearned). This series is intended for those with no CAN experience, and those that think they are experts, and everyone in between. If you feel like you know a subject well then skip it and go to the next post. Feedback on the content, as well as the code examples posted, are always welcome and I've tried to include all the references and links I used but most of what I've learned has just been through using the various CAN features. So thank you to all those reading, and all those who helped me in my journey in learning all I can about CAN.
Blog Series PartsPart 1 - Hardware
Part 2 - CAN Basics
Part 3 - XNet and NI-CAN APIs
Part 4 - Non NI APIs
Part 5 - Signal API
Part 6 - In Depth XNet
Part 7 - Logging CAN and other File I/O
Part 8 - ISO 15765, KWP2000, ODB, UDS, and ADCS
Part 9 - CRCs and Incrementing Counters (Bucket Filling Technique in XNet)
Part 10 - Running Code on XNet Hardware (continued CRC and Counter)
Part 11 - XNet Signal Drop Out and Triggering
Part 12 - XNet Signal Min Max With Reset
DownloadsThroughout the CAN blog series various downloads will be referenced and shown as examples. This post is intended to collect all of these example resources into location, and give referencing material where applicable.
All software is released as VIPM packages in a VIPC file. These all rely on LabVIEW 2015 or newer, and VIPM 2017 or newer. If you are going to be using any of the code that performs signal conversion, you will also need XNet version 15.0 or newer. The only exception to this is the XNet CRC Counter code which is its own standalone zip which requires LabVIEW 2015 or newer and XNet.
Part 10 - XNet CRC Counter ExampleDownload Link
Part 12 - XNet Signal Min Max ExampleDownload Link
All CAN Packages (other than XNet CRC Counter Example)Download Link Version 22.214.171.124
Download DetailsThis download is a VIPC installed using VIPM. This VIPC contains all software packages referenced in all of this CAN blog series, and contains all the code referenced below. If you want to follow along with all parts of the blog, just download and install this.
Download Link Version 126.96.36.199
This VIPC contains two packages, the CAN Drivers package, and the CAN XNet Tools package which it depends on. This package contains three APIs for talking to three different 3rd party drivers, Vector, Intrepid, and KVaser hardware. Each of these started out being developed by someone else and they have been updated, and cleaned up. The Vector drivers come from Troyk, over on the NI forums and has support for non-CAN Vector hardware. Intrepid drivers come from Intrepid's site as neoVI drivers. And the Kvaser drives also come directly from Kvaser. Once installed on the palette, there is an example for communicating with each hardware type. For hardware to be recognized PC drivers will need to be installed from the manufacturer.
Frame Signal Conversion
Download Link Version 188.8.131.52
This VIPC containing two packages, the CAN Frame Signal Conversion package, and the CAN XNet Tools package which it depends on. This topic was initially discussed over on this NI community page post, where I posted several versions which aren't packages, but just raw VIs. Once installed the package allows for converting from raw CAN frames to Signals, and back, but relies on NI-XNet APIs for database management.
CAN File IO
Download Link Version 184.108.40.206
This VIPC contains 3 packages, the CAN File IO package, the CAN Frame Signal Conversion package, and the XNet tools package which are dependencies. Once installed this package will have several APIs. One for reading and writing CAN frames to TDMS files, one for reading and writing CAN frames to BLF files, and one for reading HEX or S Rec. firmware files. These come from the BLF API posted on the NI community page, and two examples one from XNet, and one from the ECU Measurement and Calibration Toolkit.
CAN ISO 15765
Download Link Version 220.127.116.11
This VIPC contains three packages, the CAN ISO 15765 package, the CAN Drivers package, and the CAN XNet Tools package which are dependencies. Once installed this package replicates much of the Automotive Diagnostic Command Set, (ADCS), but allows for use with the Vector, KVaser, and Intrepid hardware using the drivers from earlier. This was started with an Idea Exchange post, which turned into me posting the first version of ISO 15765 using pure G. From there functionality was added, and the palettes were made to be similar to the ADCS allowing for KWP2000, UDS, and OBD protocols.