CAN protocol arbitration

Status
Not open for further replies.

karthikkrv85

Full Member level 3
Joined
Nov 9, 2009
Messages
172
Helped
17
Reputation
34
Reaction score
17
Trophy points
1,298
Location
bangalore
Activity points
2,356
Hai friends,

I am new to CAN protocol. As per my understanding, the bit-wise arbitration is happening in the identifier field to win the bus to a high priority message.

My doubt is, what will happen 2 or more transmitters tries to communicate/sends same ID in the identifier field. Whether the arbitration continues until the bus finds proper transmitter or all the transmission aborted to re-transmit


Thanks and regards,
karthikkr
 

you would design your high level protocol to avoid the situation, i.e. message IDs must be unique


Thanks for ur reply. Actually i thought there may be multiple transmitters, one or the other may send same message id. Of course there wont be such situations.

But just for curiosity, what will happen if 2 transmitters send the same message id?
 

if the messages were identical and the clocks accurate would probably work OK. If different messages I would expect a canbus error condition. Be diffficult to test, one would have to synchronise two canbus units to tranmit the same ID etc within a time quanta. Sort of situation where a system works Ok for years and one day crashes with an unrepeatable error comdition.
 
Thanks horace....

I have one more doubt too..

"All nodes in the network are able to decide by message filtering whether the data to be acted upon them or not" Does this mean one or more nodes can accept same message?

If so, consider 3 nodes received same message and does all 3 will acknowledge within that same ack slot? if it is in the same ack slot, then if one node fails to receive then the message will not be re-transmitted due to dominant nature. Am i right? It will create problem if that message is important to that failed node to process further.

or the failed node which transmitted recessive acknowledge will monitor the bus and finds the mismatch of data and creates error frame? (I hope this might be the situation to resolve the situation)

If all these details are in any document please suggest me, i would like to learn. If possible reply to those questions too

Thanks in advance
 

yes, for example, a vehicle may have multiple lighting control units all of which will receive and act on a message to switch a particular combination of lights on

All nodes on the bus that correctly receives a message are expected to send a dominant level in the Acknowledgement Slot in the message (the transmitter will transmit a recessive level here). If the transmitter can't detect a dominant level in the ACK slot, an Acknowledgement Error is signaled.

have a look at
http://documentation.renesas.com/eng/products/mpumcu/apn/rej05b0804_m16cap.pdf
 
Dear horace...

As per ur example, out of n no of lighting control units, any one sends recessive bit during ack slot, how the transmitter comes to know that particular node failed? Bcoz the other nodes may send successful ack, due to dominant nature, the recessive bit which is transmitted from the failed node, also represented as success to the transmitter. Am i right?

I wanted to know whether the receiver will monitor the bus during ack slot or not? bcoz the document explanations are like transmitter will monitor the bus during transmission. But nowhere they mentioned as the receiver monitors the bus during ack slot.

Anyway the document which u have given is nice to read. Thanks
 

the ACK in the message just shows that the message has been received by one or more units.
In a situation such as a message to a lighting control unit a higher level protocol would send a message back indicating sucess/failure.
 

sorry horace, i dont understand.

"In a situation such as a message to a lighting control unit a higher level protocol would send a message back indicating sucess/failure."

Do u mean the higher level protocol should be designed such that the failed node should request the transmitter to re-transmit? How the receiver will come to know the acknowledge which it sent has not reached the transmitter? Does it monitors or simply requests for the particular failed frame? I am confused now
 
Last edited:

consider a car. The driver presses a button to switch the sidelights.
1. the associated control unit sends a message 'switch on the lights'
2. all units which receive the message will send a dominant level in the Acknowledgement Slot - so the transmitter will know it has been received by something
3. the lighting control units will receive the message, attempt to switch on the lights and send messages indicating sucess/failure
4. a display unit will receive the messages and set indicators (LEDs, LCD display, ?) indicating that lights are on and reporting any errors so the driver can see what has happened

have a look at the J1939 protocol
kvaser.com - Introduction to SAE J1939
 
very nice explanation thanks... i will go through that protocol...

Thanks a lot
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…