How to prevent polling using RS485
How can I reduce the polling?


Considering the advantages of CAN bus i.e. the peer-to-peer protocol and, considering how it works - devices with a lower address naturally override devices with higher addresses, I can see a way something like this might work on RS485 but with limited devices.

It is assumed that all 7 devices can recognize the end of a previous valid message. When this happens, each device counts a period of time proportional with its address (1 to 7 time-slots) but dutifully checks to see if the bus has become active by a device with a lower count. If that happens then that device gives up and waits until the message ends and tries again.

If the device in question reaches "its count" and the bus has not become active then it takes control.

This protocol is only really useful when the number of devices is low because hundreds of devices would waste a lot of time BUT, 7 devices will likely be quicker than sending a typical address byte.

To complete the cycle, if there are no devices wishing to communicate, one device (probably the last one) must issue a short message that resyncs the cycle back to the beginning again.

You have to decide on the length of the time slot carefully - it cannot be so short that a distant device thinks it can take bus control but in fact it just hasn't seen another device take bus control but CAN has the same problem potentially.