When getting car datasets constructed by logging CAN traffic via the OBD-II port from a real vehicle for the intrusion detection, I've got the some CAN frame with 11-bit CAN identifier, for example, 0x00a0.


We all know that CAN identifier represents the message priority and meaning, but what's the relationship between CAN identifier and ECU? Is every ECU has exclusive CAN identifier, or different ECUs(such as ECU that controls airbag and another) can send CAN frame with the same CAN identifier under some circumstances?

  • 1
    Welcome to Motor Vehicle Maintenance & Repair! A little bit of a quibble with you so people are not confused. An ECU = Engine Control Unit, which is the computer which controls the engine. It resides on the CANbus and spits out codes meeting OBDII spec when something happens it should report on. The other control units are going to be their own thing, like the SRS and ABS computers (in most cars these are separate from the ECU, anyway). It seems in what you are stating in your Q paragraph either you don't understand this or don't realize ECU isn't a generic term for component computer. Commented Oct 12, 2018 at 16:33

1 Answer 1


There is not a strong coupling between CAN address and module on the bus. The lower the ID value, the higher the priority on the bus. From memory this works in hardware since a lower number pulls the bus low and tramples on an ID with a higher ID.

Various messages can be passed around the CAN bus using their unique ID and the 8 bytes that follow to carry the signal data.

For example the ABS module would probably have a low ID to send a message to all listening nodes that the vehicle's anti skid mode is active. A low priority message (larger CAN ID) from say the fuel tank module would report the tank fill level to the instrument cluster.

The OBD protocol acts in a similar way, the scan tool joins the bus as a node using an address like 0x7DF and makes a request for data, using the 8 bytes of data that follow the ID. Any node on the bus (the ECU for example) can respond with the appropriate data that the scan tool requests, it does this using an address in the range 0x7E8->0x7EF (the range allows for multiple nodes to respond, 0x7E8 is fairly typical- wiki page explains the protocol here https://en.wikipedia.org/wiki/OBD-II_PIDs

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .