2

I understand how CAN works (I think). Good info here if you would like to see: Difference between OBDII and CAN

So very briefly, there are multiple modules and each module posts interesting data on the wires. Every module gets the data, it then decides if the data is interesting for that module, if it is save it, if not ignore it. (I realise this is very brief and doesn't go into priorities if multiple post at once etc but we don't need to worry about that here)

I have been using a bluetooth ELM327 OBD2 scanner and an Arduino/ESP32 to read data from my car.

I read that on some cars that you can't poll faster than 10Hz as this can cause internal issues. This is where I got confused.

So let's say all I want to get is the RPM from the ELM327.

From my understanding of CAN, you don't poll for data, you just save it off every time it is posted if it is interesting to you.

Surely with my understanding of CAN above the ELM327 would be a module and every time the RPM data was posted, it would save the data. Then it would just return the saved RPM data to me when I ask for it with the Arduino. Although this maybe doesn't hold up as the OBD2 devices can get fault codes that are stored on the various modules and not posted.

Or, is there an "OBD2 module" in the car that the ELM327 connects to and the ELM327 polls it? If this was the case I don't see the need for the CAN wires to be present in the OBD2 plug which they are.

I am aware OBD2 has PID's, I'm not sure how they work. When polling those what happens? Does it just search for previously stored posts in the "OBD module" using the PID as some sort of key or does it actually convert it to CAN and poll on can which goes against how I think CAN works?

Am I completely wrong on how OBD2 interfaces with CAN? Or maybe I don't understand CAN properly?

I would like to get the RPM data faster than 10Hz but I don't want to destroy anything. My car is a 2006 Renault if that helps at all.

Thanks in advance

3
  • Welcome to Motor Vehicle Maintenance & Repair! Sep 24 at 21:33
  • You have a lot of questions here, not all related. Please edit your question down to one key question. Also, have a read of similar questions - I think we have posts which answer most of your questions.
    – Rory Alsop
    Sep 24 at 21:47
  • @RoryAlsop I don't feel like I am asking multiple questions, I wanted to understand how OBD2 gets CAN data (in this case RPM data) e.g. by polling or waiting for the posts and saves them off. I put the extra info in the question so I could let everyone know my assumptions (what I think I know) incase that is what's incorrect and leading me astray. From the answer below, it doesn't actually use CAN for RPM, knowing this actually makes the answer in the link above more understandable to me
    – av4625
    Sep 29 at 21:38
1

Your question is bit broad, but I'll try to answer the most crucial point.

You said "From my understanding of CAN, you don't poll for data, you just save it off every time it is posted if it is interesting to you.", but this is not how it works.

OBD2 is based on a request/response scheme. The OBD2 adapter translates between UART and the actual vehicle protocol (in your case CAN) and sends the digits over the bus. It then waits for any responses. If it gets responses, it collects them, translates them into digits, and reports them over the UART.

If it doesn't get any responses within the waiting time (200ms default), it responds with "NO DATA" via the UART.

-3

If I'm not mistaken, OBDII and CAN are two separate communication protocols on separate wires. OBDII uses serial (older and slow) communications on two wires. Canbus uses two wires separate from OBDII and comm protocols aren't serial but broadcast on parallel wires unlike serial wiring that basically sends data in a train. Canbus was created as electronics in our cars became more sophisticated and couldn't be handled in serial communications that would effectively burden overworked serial communications. Dealers with their dedicated scantools have access to everything unlike generic readers having access only to OBDII codes. Newer readers will read abs codes for more access to data. Rpm is read off OBDII serial comm lines, not canbus. While slower, serial comms are fine and almost imperceptible to most people interested in live data. Dealers use canbus to test sensors and programming. Serial comms can't test sensors or program the various modules. I have a moderately priced reader but it cannot look at canbus data and is limited to decoding generic errors. My aftermarket clone scantool of GMs does (I think but haven't tried everything) virtually everything a dealer's scantool does but at much less cost, accessing OBDII and canbus data. My scantool was used to program replacement remotes to the body control module (BCM), turned on all the gauges and indicators for a display test to include wiring and module, and pulled miscellaneous errors like battery disconnect history or errors related to battery disconnects. My generic reader cannot delve far into every module as the scantool can. If I pay for online access to GMs website, I should be able to update or correct any previous issues if I need to, using my clone scantool.

8
  • I'm not sure its worn it to break it up into paragraphs or can't be done here. Yes, I tend to be long winded but try supplying pertinent info that may not be easier to understand if shortened so I add examples.
    – F Dryer
    Sep 25 at 0:32
  • 1
    Your basic premise is wrong. CAN is Controller Area Network, which is the backbone for the entire communications network throughout the car. It was designed to allow separate nodes to communication throughout the vehicle without the need for a central computer as well as to cut down on copper wiring. OBD2 rides on the CAN Bus. It is the vehicle's self diagnostic and reporting capability. What I'm getting at here is, your answer is completely off base and incorrect. A "little bit" of correct information with a lot of bad thrown on top. Sep 25 at 11:43
  • Well then explain why there are two pairs of wires, one for serial - pins 2 and 5, the other pair on pins 6 and 14?
    – F Dryer
    Sep 26 at 14:11
  • Canbus and serial communications to my knowledge do not use the same wires hence creating two pairs of comm lines for separate comm protocols.
    – F Dryer
    Sep 26 at 14:20
  • I'm wondering how that makes your answer any more correct? Here, maybe this will help you? Sep 26 at 14:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.