Preamble
We have a power plant with a SCADA network that communicates on ModbusTCP. There are several
counters, switches and measurement devices that acts as Modbus RTU slaves and 2 PMs that
collects info via ModbusRTU from those counters and stores them into several holding registers and
coils and by acting as ModbusTCP slave these values becomes available to Modbus master.
Problem
From the above PMs we need to read collected values (holding registers and coils) every second
using at least 7 ModbusTCP masters as in the picture below.
SW1 Measure1 Counter1 SwN MeasureN CounterN
ModbusRTU
PM1 ([Link]) PM2 ([Link])
ModbusTCP
ModbusTCP ModbusTCP ModbusTCP ModbusTCP ModbusTCP
Master1 Master2 Master3 Master4 Master5
ModbusTCP ModbusTCP
Master6 Master7
In this scenario when there are more than 3 ModbusTCP masters the 2 PMs becomes unavailable
and reading errors appears. This is because each ModbusTCP slave can respond to only one
ModbusTCP master at a time.
Requirement (Solution to the problem)
We need a device to act as a ModbusTCP to ModbusTCP gateway to be connected between the 2
PMs and ModbusTCP masters. This device should read the values from PMs (act as a master for the
2 PMs), store them in a stack and deliver them to the 7 ModbusTCP masters when requested (act as
a multiple slave, one for each master)
The schematics becomes something like below.
SW1 Measure1 Counter1 SwN MeasureN CounterN
PM1 ([Link]) PM2 ([Link])
Required device
ModbusTCP ModbusTCP ModbusTCP ModbusTCP ModbusTCP
Master1 Master2 Master3 Master4 Master5
ModbusTCP ModbusTCP
Master6 Master7