Consider this arrangement:
A daisy chain of Modbus/RTU slaves that will require to communicate simultaneously with 2 master devices using different protocols (Bacnet IP and Modbus/RTU).
Is it possible ?
Is there a device that can act as a gateway using two protocols ?
The MangoES can act as a Modbus RTU Master and then simultaneously expose the data as Modbus IP and BACnet IP as a slave. https://infiniteautomation.com/mango-es/
If you needed to have the same data also available to another Modbus RTU master I would use a product like the Nano 10 PLC and push the data via Modbus IP and then let the other Modbus RTU master read it from this PLC over RTU. http://www.triplc.com/nano10.htm
There is no way to have two modbus RTU masters on the same network.
This would be a pretty cost effective solution that would also be pretty flexible in other ways.
You could also use this PLC: http://www.triplc.com/fx1616ba.htm which has 2 RS-485 ports to poll on one RS-485 and be a slave on the other and also be a Modbus IP slave but it doesn't support BACnet IP so this is where the MangoES really shines.
The reason Modbus RTU is "one master only" is that there is no control over the 485 bus (other than a single master) so that messages don't collide with one another.
Assuming there's a BacnetIP/ModbusRTU gateway,
- Have the Modbus RTU master poll the Modbus RTU slaves.
- Have the Modbus RTU Master write that newly acquired data (from the slaves) to the Modbus RTU slave side of a gateway.
- Have the Bacnet IP master read the Bacnet side of the gateway.
You can have multiple Masters on Modbus but you need a "box in the middle" which
1) acts as a single Master for the Slave(s) and polls them periodically and stores the responses, and
2) provides each of the Masters with a dedicated comms port and on that port it emulates the real Slave(s).
This has been done many times but it really depends on how much money this solution is worth. We have done it many times with the PPC:
(also exists as a Eurocard) but it is always a bit of a custom software job and consequently costs the client 2k-3k. The majority of people are looking for a box for $100 or so and at that level there is no solution, except where somebody has done one for a common application.
When it is done the right way, it can work really well because for example if the real Slave takes 300ms to respond (some slaves take much longer especially for a loooong block read at 9.6k) this can be concealed from the Masters which can have their poll fulfilled at 115k and with a minimal response time. Of course the data retrieved won't be any newer :) but in many systems this isn't the main issue, which is whether the Master can work its way around the whole network in the time it has.
We have been selling a product for many years that will allow multiple Modbus Masters to communicate with a single network of Modbus Slaves. Search for Multii-Port (our trademark name) will get you straight to our web site and links for more information. As has been mentioned in previous responses to this thread, there are potential issues, particularly if you have little or no control over the master devices. Our tech support will be happy to explain and answer any questions.
If your BACnet/IP client is monitor only, meaning it does not need to write data to any of the Modbus RTU slaves, you can connect our ETH-1000 gateway onto the Modbus RTU daisy chain network and use its Modbus RTU Sniffer driver to "sniff" the data that your Modbus RTU master is reading and writing to the slaves and expose that data to your BACnet/IP client. This is a simple way to access the data via BACnet without disturbing the existing Modbus RTU communications.
More information on the ETH-1000 can be found on our website here: