The DigiOne-IAP works the same way a network Printer Server allows multiple users to share a printer. Just as the Print Server understands the concept of a print job, the DigiOne-IAP understands the concept of a Modbus transaction - which is send request, then wait for response or timeout. This only works with the DigiOne-IAP in multi-master mode. Multiple Clients on other products (such as the DigiOne-IA or Digi TS8/16) that are not Modbus-aware and do not support multi-master WILL confuse the serial slaves.
So DigiOne-IAP allows many masters to connect and waits for COMPLETE requests from any. These requests are time-stamped and queued for the serial port. When the serial port is idle, the oldest request is converted to Modbus/RTU (or Modbus/ASCII) and sent to the slave. Meanwhile, any new requests from other masters are still received and queued waiting for the serial port to become available. Once the slave responds to the previous request or times out, then the DigiOne-IAP returns a Modbus/TCP response to the correct Master, and fetches the next oldest request queued to send to the serial slaves.
So each of many Masters does not realize it is sharing the serial slaves; except perhaps that responses come back more slowly and with higher variation due to competition for serial access with other Masters. The serial Slaves also do not understand that they have multiple Masters polling them; they see the DigiOne-IAP as the sole Master.
But do keep in mind that the serial line is still the bottleneck here. If your single Master could only average 4 large Modbus polls per second, then understand that with 2 Modbus/TCP masters polling heavily, it will now take each TWO (2) seconds to accomplish the same 4 polls! So you will need to double the timeout in your Modbus/TCP master if you expect 2 active Masters!
Earlier we mentioned the time-stamp on requests. What if the many Masters are sending more requests than the serial slaves can answer in a reasonable amount of time? Then after a "Message Timeout" set by the user within the DigiOne-IAP, any old expired messages are returned to the sending Master with a Modbus Exception Code 0x0B.
Last updated: Aug 08, 2017