According to the document of CAN(Robert Bosch) two CAN messages with same ID sending at a same time is not possible.
My question is why they will not send...If it may occurs what conditions should be arises ?
If the bus is idle which is represented by recessive level (Logical 1), any node may begin to transmit. If two or more nodes begin sending messages at the same time, the message with the more dominant ID (which has more dominant bits, i.e., zeroes) will overwrite other nodes' less dominant IDs, so that eventually (after this arbitration on the ID.) only the dominant message remains and is received by all nodes. This mechanism is referred to as priority based bus arbitration.
Two nodes on the network are not allowed to send messages with the same id. If two nodes try to send a message with the same id at the same time arbitration will not work. Instead, one of the transmitting nodes will detect that his message is distorted outside of the arbitration field. The nodes will then use the error handling of CAN, which in this case ultimately will lead to one of the transmitting node being switched off (bus-off mode).
it may be
but i have one question. how transmitter node get to know that the message is destroyed outside and why? if both has sane id why one get accepted?
it may be
but i have one question. how transmitter node get to know that the message is destroyed outside and why? if both has sane id why one get accepted?
The conflict will not be noticed during the ID portion. But it will be noticed during the message portion, assuming the two transmitters are sending different messages. But by then it is too late to recover gracefully. The damage has already been done. When a conflict is detected during the ID portion, the less dominant transmitter can stop transmitting without corrupting the message. In principle, it would be possible for this to happen during the message too. The more "dominant message" would get through. But the CAN bus is not designed to implement this sort of error recovery. I think the reason is timing. The ID field is short enough that two independent transmitters that start at the same time will stay in sync close enough during the ID so that arbitration works. But if you add in the message portion, now the small difference in transmission rates could make the two transmitters drift far enough out of synchronization that it becomes impossible to reliably detect bus conflict in time to prevent damage to the data. So they don't even both trying, but as Emb4U said, this becomes a more serious error and causes one of the transmitters to be switched off semi-permanently.
I have a another answar which was strike in my mind ,when the two node having same identifier,and when the identifiers will go for the arbitration the bus will think there is a one identifier because the the identifiers are look like same.And then, when the arbitration will be complete, one will be discarded automatically after the arbitration.
If two master trying to access a slave with same identifier then one node will win the arbitration but what is the condition of that node which is lost in the arbitration. and i am little bit confused that in that time what is the condition of the bus.
I have a another answar which was strike in my mind ,when the two node having same identifier,and when the identifiers will go for the arbitration the bus will think there is a one identifier because the the identifiers are look like same.And then, when the arbitration will be complete, one will be discarded automatically after the arbitration.
sir i get confused . if one node will discard from communication for what reason it will do so, and what error it will get?
please explain briefly.
Thank you for your answer...
When two nodes sends same identifier in a same time to access to the another node then one node will go to the busoff condition.
Then my question is in between two nodes which node will go to busoff ?
Dear members please help me because i am totally confused.
If two stations are sending a message with same ID and differences in the succeeding message part exactly at the same bit time, a transmitter error will be generated.
Only after 32 consecutive transmitter errors without receiving valid messages inbetween, a transmitter will go to bus-off state.
Furthermore, this is a purely theoretical problem. What's the likelihood to achieve the said condition repeatedly? Why should two stations send data frames with same ID? Makes no sense in terms of CAN application layer.
I know that two nodes will never send same ID in same time. It is illegal but may be possible.(mention in document)
But as per the document they have seen as identical. then which condition should be arises here.