03-14-2016 06:23 AM
Solved! Go to Solution.
03-14-2016 06:49 AM
MODBUS is a 'tag' based data communication standard - when you read registers/coils, you always get the latest value. There is no mechanism in the protocol for 'streaming' data - you have to poll the registers as fast as the device/bandwidth/network allows and that determines how 'dynamic' your data is.
03-14-2016 07:09 AM
I think that the 'tag' based mechanism is the reason why it has been used to read values of almost-stationary signals (i.e. the variation rate is slower than the pace of reading operations).
I wonder if now some devices use a set of registers to publish a waveform, for example.
I don't think so, but I can be wrong
03-14-2016 07:20 AM
That depends on your definition of publishing a waveform. As Sam said, Modbus has no support for streaming or transmitting arbitrary data, but it certainly is used for analog data (which can be considered a waveform of sorts). The only issue is that the details of the waveform depend on your sampling rate, because you can only sample one point at a time.
FWIW, Modbus can be used to transmit arbitrary data - you simply encode it in defined registers and then decode it on the other side. I have seen done for transmitting strings, for instance. The issue with that is that if you're going to do something of that complexity, you usually might as well implement a more suitable protocol.
03-14-2016 07:43 AM
@vix wrote:I wonder if now some devices use a set of registers to publish a waveform, for example.
I would recommend against that. It could open up to some interesting race conditions depending on how the modbus was implemented. Imagine reading a bunch of registers while the host was updating them.
In short, Modbus was never meant to be a streaming protocol. It is meant for industrial control where only the latest value matters. If you want waveforms from a device, find one that will stream the data.