From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
10-03-2018 03:58 PM
I would like to synch CAN signals (in waveform) from the OBD II port of a passenger car with other analog signals, such as microphone signals, acquired using NI cDAQ modules. Hopefully, I can do this without using the Automotive Diagnostic Command Set.
My system consists of a NI 9189 cDAQ Chassis, a NI 9862 CAN module and a NI 9231 DSA module.
I ran "Synchronize DAQmx Analog Input with C Series CAN.vi" from XNET examples, I got incorrect "0"s for rpm even when the engine is running.
When I can the "OBD Engine Monitor.vi" example from the Automotive Diagnostic Command Set, I can get correct engine rpm readings with the same NI system.
Thanks.
Ian
10-03-2018 04:34 PM - edited 10-03-2018 04:35 PM
The ODB port does not contain raw data like a pulse train from the tachometer that you could look at a waveform of and see the pulses coming faster as RPM increases
It is all just data from the control system sent over the CAN bus https://en.wikipedia.org/wiki/On-board_diagnostics
10-03-2018 05:41 PM
Understood, but we should be able to get processed engine speed from ECU at a relatively high rate, say 1000Hz.
I can tap into the vehicle CAN network directly to get the engine operating parameters. I just want to get the same info from the OBD2 port, which is a lot easier to access.
Thanks for your help.
Ian
10-03-2018 07:49 PM
I read a bit more, and it appears OBD II is based on Diagnostic-Style Messages, which is different from the CAN messages used by all other in-vehicle system. If this is the case, the time resolution from OBD II cannot be that high and the accuracy of synchronization with acquired analog signals cannot be very accurate either.
I hope I am incorrect on this :(.
10-04-2018 01:20 AM - edited 10-04-2018 01:23 AM
Hi Tula,
we should be able to get processed engine speed from ECU at a relatively high rate, say 1000Hz.
I never had a car, passenger or truck, sending CAN messages at 1000Hz. Best I got is 100Hz…
it appears OBD II is based on Diagnostic-Style Messages, which is different from the CAN messages used by all other in-vehicle system.
OBD2 is using such Diagnostic messages, but you still can receive CAN messages on the CAN pins of the OBD2 port. In my experience each passenger car manufacturer uses its own message/signal definition, so you need to ask for that definition first. (With trucks it's a lot more easier to receive CAN messages from ECU…)
I can tap into the vehicle CAN network directly to get the engine operating parameters. I just want to get the same info from the OBD2 port, which is a lot easier to access.
(In my experience) the OBD2 port is placed behind a "message filter" (aka gateway). When you can access the ECU CAN directly then you should take that opportunity!
10-04-2018 04:31 PM
GerdW
1. I meant I could "read" the CAN signals at 1000Hz and synch them nicely with other analog signals in the same cDAQ chassis. I agree that the true CAN signal update rates are lower.
2. I read zeros from the OBD II CAN pins for the signals I am interested (such as engine RPM), but I can read these signals using the Automotive Diagnose Command Set example on exactly the same NI hardware setup. Maybe this is exactly because the OBD II port is placed behind a "message filter", I need to send messages to ask the signals to be put on the CAN network/pins. If this is true, what CAN messages I should send?
3. Yes, when I can access the ECU CAN directly then I will take that opportunity. Then there are other times, OBD II port is the only option.
Thanks.
Ian
11-14-2018 02:13 AM
Hi Ian
I m stuck in a similar situation, were you able to find a solution to this issue?
pls help
Thanks
Prashant
@TulaRen wrote:
GerdW
1. I meant I could "read" the CAN signals at 1000Hz and synch them nicely with other analog signals in the same cDAQ chassis. I agree that the true CAN signal update rates are lower.
2. I read zeros from the OBD II CAN pins for the signals I am interested (such as engine RPM), but I can read these signals using the Automotive Diagnose Command Set example on exactly the same NI hardware setup. Maybe this is exactly because the OBD II port is placed behind a "message filter", I need to send messages to ask the signals to be put on the CAN network/pins. If this is true, what CAN messages I should send?
3. Yes, when I can access the ECU CAN directly then I will take that opportunity. Then there are other times, OBD II port is the only option.
Thanks.
Ian