Arduino Nano with MAX485 for RS485 communication

I have built a network of rs485 communcation using Arduino-NANO with TLL to RS485 MAX485 modules. P.S. I have connected these devices in daisy chain topology. It works fine, as the master requests the slave responds back to the master, with it's sensor satus but the issue I am facing is, there is a visible delay of 2 seconds in between polling of the devices. I tried reducing the delay it goes to 1 second but then the serial doesn't respond to the exact slave sometimes, there is some glitch. But below a second the network is fragile and doesn't respond to anything. I cannot upload my code due to work place privacy policy. It will be of great help if anyone knew anything about how can I reduce the delay in my system would be of a great help.
Question: Is it due to daisy chaining? The network works fine with one on one devices connected, it is faster.

I have built a Profibus dp library for Arduino (johi on youtube), so i can assure you that much higher performance is possible.
first question: how did you terminate your bus, what did you use for pullup resistors?
second question: max 485 can go into low impedance (send mode) or high impedance (receive mode), how do you control these signals? is it by protocol, start bytes, stop bytes etc, or how do you do this.
How do you address our daisy chained devices (protocol adress bytes ?).
Have you the possibility to look with an oscilloscope to your bus, do you have some kind of recorder that can display the signals (pc with RS485 card, data scope or the like?.
Best Regards,

This can be a network specific problem. Typically 120 ohm network termination resistors placed at the ends of an RS-485 twisted-pair communications line help to eliminate data pulse signal reflections that can and will corrupt the data on the line. However on the whole the termination resistors will help network performance more often than they will hurt it. You can also use active termination. Your response time is partially based on the bit rate you are using which you did not specify nor the length of the network. When a sensor is polled, how long does it take to respond this also could be part of your problem. Another possible problem will be arbitration, can I assume it is being used. Are messages resent. There are several good on tutorials on RS485 and communication protocols in general.

Daisy chaining decreases the throughput. A common solution is a common bus system, where the master (Arduino) sends an address whereupon the addressed slave sends back its data. This way at most one node is sending, and each client knows when it's allowed to send without any further select signal and cable. An additional bit or bus line may be reserved for separation of address (command) transmission from slave response, so that no slave will try to interpret the transmission from another slave as a command.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.