2
\$\begingroup\$

There are some electrical specifications specifically designed for multi-master protocols such as CAN, I2C, 1-Wire, etc. which are classified under CSMA/CD networks.

However, RS485 has a push pull output (with a current limit guard) so when two masters are started sending data at the same time, both frames will be corrupted and the re-transmission should be handled by the protocol stack. RS485 can be classified under CSMA/CA networks.

Question

Is only protocols implemented on top of CSMA/CD networks considered as "multi master protocols" or can any protocol on CSMA/CA network that somehow implements handshake (ACK) and re-transmission features be considered as a "multi master protocol"?

Specifically, is implementing a multi-master protocol on top of RS-485 possible, or is it considered only a workaround because of the inability of collision detection nature of the bus?

\$\endgroup\$
11
  • 3
    \$\begingroup\$ The bus arbitration you describe for CAN is based on message identifiers, not by some "master priority" - CAN doesn't have masters or node id on the data link layer. Neither does RS-485. What you describe is simply CSMA/CA versus CSMA/CD. Master and slave are concepts of higher layers in the OSI model. Typically RS-485 based protocols use handshaking over hardware or software to prevent collisions. But also star topologies with a master in the middle, where all traffic has to pass the master. \$\endgroup\$
    – Lundin
    Commented Sep 4, 2019 at 6:39
  • 4
    \$\begingroup\$ RS485 is just an electrical specification. To transmit any data over RS485 you have to define your own protocol. Although it is not possible (or at least not easy) to implement collision detection you can have a multi-master protocol by other means, such as token passing. This is perfectly legal and normal. \$\endgroup\$
    – Steve G
    Commented Sep 4, 2019 at 8:09
  • 2
    \$\begingroup\$ @ceremcem "CAN is based on message identifiers, which can be interpreted as node ID" No. Node id is a higher layer concept. Application layer standards like CANopen use node id as an offset to some CAN identifiers, but nothing in the CAN physical/data link layers mentions this. You keep mixing up all layers. \$\endgroup\$
    – Lundin
    Commented Sep 4, 2019 at 8:20
  • 1
    \$\begingroup\$ @ceremcem you asked if a multi-master protocol was possible, not if its superior in your application. \$\endgroup\$
    – Steve G
    Commented Sep 6, 2019 at 7:45
  • 1
    \$\begingroup\$ Technically CAN should be called CSMA/CR (collision resolution), because unlike in CD, the highest priority of the colliding messages gets through unscathed. In CD, all are lost. \$\endgroup\$
    – Milind R
    Commented Aug 8, 2023 at 19:24

1 Answer 1

3
\$\begingroup\$

RS485 is purely a physical layer specification. You need your own protocol for anything you run over it eg home made, or something like MODBUS. Normally I would have just one master that requests information from connected devices. For anything multimaster or more complex the use a different bus eg CAN or Ethernet

\$\endgroup\$
1
  • \$\begingroup\$ Please see my update in the question. \$\endgroup\$
    – ceremcem
    Commented Sep 5, 2019 at 22:30

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