1
\$\begingroup\$

I'm aware that messages on the CAN network are assigned priorities. I'm working on a 2oo3 voting system, and if each of the messages by the three masters are given three unique id's, I'll be making masters among the three masters for the messages i.e. I'll be prioritising among the masters.

I have considered the approach where the slaves keep transmitting the data (either periodically or when they detect a change in the inputs), so that by this way all the three masters can receive the data at the same time and act on the same data. Or, another approach wherein the three masters decide among themselves who will request the slave and when the slave replies, all three masters will process the data at the same time.

I want to know if there is a way, by using a CAN network, I can ensure that the three masters are given the same priority without going with the slave sending approach as mentioned above, and making sure that the masters initiate all actions and not the slaves.

Note: I'm aware of how useful ID's are in arbitration. I just want to know if there a way by which this method is possible.

\$\endgroup\$
2
  • \$\begingroup\$ What does "priority" mean in your context? Do you mean message identifier for messages sent by one of the "master" nodes? Because having to nodes sending messages with the same message IDs sounds like a bad idea. Also: Is having the 3 master nodes send their message and have the slave decide an option? In the worst case you would have to wait for 3 messages, IDK if you have that much time. \$\endgroup\$
    – 0x6d64
    Commented Mar 29, 2016 at 6:45
  • \$\begingroup\$ Priority=All 3 masters have no discrimination.All 3 are equal.Yes i was thinking about ID's(definately not goin to use same ID's.Just wanna know if its possible.).Slave just responds to the masters requests.The slave while acting on something requires 2oo3 masters decisions.Slave while giving a status acts Master req->Slave Respond back. \$\endgroup\$
    – AlphaGoku
    Commented Mar 29, 2016 at 6:49

1 Answer 1

3
\$\begingroup\$

In the CAN context, there are no masters. You can only speak about transmitters and receivers. The priority is set only between frames ID during the arbitration phase.

Therefore if you transmit the same ID message, the first transmitter emitting is going to transmit its frame. If they transmit at the same time, the frame is going to be corrupted (as soon as a bit differs). The ECU are going to send the error frame and therefore the message is not going to be taken into account by the CAN controllers.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.