Need to transmit custom CAN bus messages to your CAN bus?
Recording broadcasted CAN bus data is simple - but sending custom CAN messages to the CAN bus is a bit more complex.
In this brief guide we get super practical and show how you can easily transmit CAN data using the CLX000 CAN analyzer!
To illustrate the logic, we take outset in a OBD2 PID requests - but the same principles hold for e.g. J1939.
Note: If you're specifically looking for an intro to logging OBD2 data, check out our OBD2 data logger article!
TRANSMIT CAN DATA
By default, most CAN analyzers simply "listen" to the CAN network - which is often sufficient (and safest).
However, in some cases a "silent" CAN analyzer is not enough:
Specifically, many vehicle ECUs only broadcast data "on request" (e.g. within SAE J1939).
Further, some communication protocols - like OBD2 - only return data when "polled" via custom CAN message "requests".
Luckily, the CLX000 series offers the flexibility of switching off silent mode - to enable the transmission of custom CAN messages to the CAN bus:
- Easily specify custom CAN messages via CANvas
- Up to 20 transmit messages can be specified per logger
- Messages can be set up as either single-shot or periodic
- You can customize cycle time and delay in ms
- You can toggle whether to log/ignore request CAN IDs
- CANvas offers built-in support for all Mode 01 OBD2 PIDs
The graph graph above illustrates a very simple use case:
Here, the OBD2-based Vehicle Speed and Engine RPM of an Opel are plotted over time.
To log this data, the CLX000 has been set up to query the specific OBD2 PIDs by sending "request CAN messages" to the bus. The vehicle responds with the OBD2 data, which is then logged, converted and plotted.
Below we show how to log OBD2 PIDs with a CLX000 (similar principles apply to e.g. J1939).
Note: If you're unfamiliar with OBD2 PIDs, check our OBD2 intro for the basics on OBD2 PIDs!
Example Application: OBD2 PID Requests
To illustrate the CLX000 transmit feature, let's do an example on how to log OBD-II parameter data "the manual way" (without CANvas).
Below, we've added a few OBD-II PID request messages in the CLX000 CONFIG.ini file.
A few comments:
- Each message is offset by 10 ms to avoid overlap in the message queries
- The msgID field is 7DF, which for OBD-II reflects a "request" message (while e.g. 7E8 is a "response" message)
- The msgData field reflects the unique HEX ID for a given parameter (cf. Wikipedia for a full list of PIDs)
Example: If you wish to query Engine RPM data in an OBD2 context, you'll need to set the msgData field to 02 01 0C 55 55 55 55 55.
- Here, the first byte is 02 and corresponds to the number of additional bytes (in this case 2)
- The second byte is 01 and corresponds to the OBD2 "mode", cf. Wikipedia for details
- The third byte is 0C, which under Mode 01 reflects the parameter ID of RPM
- Finally, the remaining bytes of the data field are set to 55 ('dummy loads') and ignored
How To Configure Transmit Messages in CANvas
Below image shows an example of the CANvas 'Transmit List', which is set to log three OBD-II messages (Speed, RPM, MAF).
Note that in the specific case of OBD2 Mode 01 PIDs, CANvas has a built-in database list.
OBD2 Data Output Example
So what does the OBD2 request/response dynamic look like?
Below is a log file example from an Opel (using a CL2000).
The logger has been configured to query OBD2 data on Vehicle Speed and Engine RPM.
Note how this example data includes both the request messages (Type 8) and response messages (Type 0).
Again, the above is simply a case example using OBD2. The transmit feature is fully flexible.
Where can I learn more?
Check out our GUIDES section for more intros, guides & use cases - incl. our J1939 telematics intro below.
Want to log OBD2 data from your car?
Then learn more about our CLX000 CAN logger below!
Liked this article? Please share!
RECOMMENDED FOR YOU