Understanding the CAN protocol.

Ladies and gentlemen, hello!

I am struggling with understanding the CAN protocol. It seems to differ from what I am used to.

When we just use the .xml I found somewhere…

How am I supposed to send the message with PCAN?

is it message ID 0x360? Because that didn’t work. And what does


Because 3200 will not fit an 11-bit ID…

I work kind of a lot with CAN at work, but we use a different communication layes, obviously… I don’t know.

Could anybody clarify, please ?

3200 is a decimal value.
If it is represented in a hexadecimal system, it looks like this: 0xC80
So more familiar?
You can use both recording methods …

I understand, but 0xC80 is already higher than 0x7FF, which is the highest 11-Bit identifier.

So then it should be 29-bit ID ?

You can specify any of your own instead of 3200))

Hmm… But, I thought, that 3200 is “commented out”? :blush:

I can show, what kind of CAN-protocols I am used to.

For example: https://www.lem.com/sites/default/files/products_datasheets/cab_300-c_sp3.pdf

This is a current sensor with CAN-output. I know how to deal with that…

Well! 11bit header. And in my opinion 2 bytes of information?

Hello, guys…
Sorry, but I still do not understand anything in this protocol …
you can write with a simple example what XML should look like for a standard Engine-RPM request

  • CAN 11 bits.
  • engine ECU x7E0 - x7E8
  • Pid of RPM - standard - 01 0C

I need make request (id, Len, Data1, Data2): x7E0 02 01 0C
I need get answer (id, Len, Data1, Data2): x7E8 02 01 02

What wiil be XML?

<?xml version="1.0" encoding="utf-8"?>
<RealDashCAN version="2">
    <frame id="0xxxxxx">
    <value targetId="37" units="RPM" offset="0" length="2"></value>

Help me pls. Tnx.

You need to branch OBD II, what you wrote is not RealDashCAN

But, the OBD-protocol suggests using AT-commands … but I need exactly the CAN-frames, as my example…

Yes, the RealDash CAN and OBD2 use different format of XML files and are not compatible with each other.

To customize the ELM327 OBD2 connection see this manual page:

My connection NOT ELM327… But MCP2515+Arduino !!!

and yes, I watched your example with arduino, where the ecu is emulated to 3200, 3201, 3202… .
therefore, I ask how to change your example from an ECU-emulator to a real ECU.
that’s what I don’t understand.

the fact that in the can monitor you can see frames that are part of the OBDII protocol does not mean that it is possible to implement this using the CAN protocol., More precisely, it is just possible to implement it. But for this, you still need a symbiosis from the sender and the listener. This is not implemented using the CAN.XML file.
It’s easier to use OBDII, in your case you turn to the engine ECU 7E0, and expect a response from it 7E8

Hi guys, excuse me again, but I didn’t understand anything.
Does this mean that the RealDash does not know how to accept the most ordinary RawCAN?
there are so many different connection methods, but there are no RawCAN?!!!
or am I misunderstood something?
Just, How RealDash can work with RawCAN data? What SourceConnection I must select?

The feeling is mutual, I don’t understand what you are saying.

If you are reading the CAN frames on your custom hardware, use the ‘RealDash CAN’ protocol to transfer the ‘raw’ CAN frames over serial to RealDash. Arduino examples are here:

I read your example a week ago. and I wrote to you in the first post that I did NOT understand ANYTHING in it …
I am not a professional programmer.
I just ask for specific help. I wrote the CANID of my engine block (7e0-7e8) and the desired pid (010C) and please give an example of RealDash-CAN XML for it. this is just three lines from you.
my HW just must recieve from RD
7e0 02 01 0C
and send answer
7e8 02 xx xx
but you send me to read something that I can’t figure out …
great advice !!!

Again all your example addesses are ELM327 OBD2, not CAN. There is no concept of ‘PID’ in CAN bus. I believe that we have tried to explain this to you and you have basic concepts of OBD2 and CAN mixed up and that makes it very difficult to give you any advice.

7e0 and 7e8 from the first plst is OBDII, it is not RAW-CAN.
Study the documentation on Wikipedia on protocols, it is very difficult to explain everything from the very beginning.
RealDash can do absolutely anything.))) But this requires knowledge and practice.

Ladies and gentlemen,

I once started this topic because I thought, that I don’t understand the protocol.

Well, apparently, my problems started with some hardware mistakes, and now when I improved that, I can receive messages, and I don’t have difficulties with matching addresses and factors/offsets etc.

Allright, happy to hear that you are making progress :thumbs:

Hi i have the same problem, i have arduino with mcp2515 and in the can monitor i see only: time out, how you have fixed your hardware?