Best way to configure Modbus RTU protocol for multiple (non-ABB) slaves
I am using an ABB CP610 on a pumpstation and have configured 2 protocols.
a. Protocol 1 : Modbus RTU via RS485 to 6 devices (3 x Delta PLC :( , and 3 x WEG CFW-11 VSD). There are 3 pumps each with a PLC and VSD.
b. Protocol 2 : Modbus TCP (server). This is to read information to a Unitronics PLC/HMI.
As can be seen there are multiple different devices and fortunately it all works.
However, when there is a device out of service on the RS485 link, there are significant delays until the algorithm starts to ignore the U/S device.
Would it be better to create a separate protocol for each device (or device pair) or is this not possible ?
a. Protocol 1 : Modbus RTU via RS485 to 6 devices (3 x Delta PLC :( , and 3 x WEG CFW-11 VSD). There are 3 pumps each with a PLC and VSD.
b. Protocol 2 : Modbus TCP (server). This is to read information to a Unitronics PLC/HMI.
As can be seen there are multiple different devices and fortunately it all works.
However, when there is a device out of service on the RS485 link, there are significant delays until the algorithm starts to ignore the U/S device.
Would it be better to create a separate protocol for each device (or device pair) or is this not possible ?
Answers
This problem is common to any serial link that only allows one node to talk on the bus. The more nodes on the bus, the more chance of failure. However - NODES SHOULD NOT FAIL. Start by identifying why the nodes are failing and rectify those problems first.
Minimise the number of messages. It is almost always more effective to transmit several hundred bytes of empty data than make two separate requests for registers that are not adjacent.
To make most effective use of the Modbus if a node does fail, you need to minimise the timeout value and number of retries.
Figure out the longest time required to get a complete response from the slaves. This should be quite short even on a slow link like modbus serial.Hopefully it is less than 500ms. Set the timeout to approx double this value. Set the retries to 1.
Minimise the number of messages. It is almost always more effective to transmit several hundred bytes of empty data than make two separate requests for registers that are not adjacent.
To make most effective use of the Modbus if a node does fail, you need to minimise the timeout value and number of retries.
Figure out the longest time required to get a complete response from the slaves. This should be quite short even on a slow link like modbus serial.Hopefully it is less than 500ms. Set the timeout to approx double this value. Set the retries to 1.
Add new comment