Ttelmah
Joined: 11 Mar 2010 Posts: 19499
|
|
Posted: Fri Jan 30, 2015 1:45 am |
|
|
Look at:
<http://can-bus.996267.n3.nabble.com/Unique-ID-amp-Acknowledgement-in-CAN-td3106.html>
The bus designer is meant to ensure that ID's are unique, but if it happened, this gives the error sequence that would be seen. Unless the data packet is also identical at some point one device will send a '1' while the other sends a '0', and this device will see a bit error first, and send an error, so the devices will automatically move fractionally 'out of sync' in terms of when they retry.
If you have the terrible design, that the message being sent, is also 'standard', so is identical between the two devices, they would possibly recover at some point because of clock drifting, but there is no guarantee of this. This is why the bus specifications forbid identical ID's.
The condition is listed in the spec as 'irresolvable'...
There are ways of designing to try to handle this, by adding a random element to retry times, and/or a random element to the data (stick a reading for temperature etc., into the otherwise identical messages for example). |
|