report by exception using modbus



A master initiates a message exchange read or write, and the slave responds. A slave does not originate the exchange.

You could have the master reading the same data from the slave looking for a change in the data as an "exception".

Good luck,

Clint Sexton

It may be in your best interest to allow full population of you modbus tables as required. Master to from slave.

Place the report by exception logic between two tables ie: due min max change and or rate of change to move the table into the scada or HMI table so the raw tables be they integers or floats only get moved when the variable changes within your constraints. It can be done in the slaves and or masters. If a new project where you spec Opto22

If existing you can place one controller in series with the master as a sniffer/qualifier.

This can be easily done with opto22 controls with modbus inside the PAC controllers or with the Modbus modules. This can easily be integrated to include profibus, abdh, ascii, rtu, data as a concentrator. Since modbus has various commands like get a value or table between specific indexes this becomes seamless. you can even calculate analogues and make boolean decisions. Also set up triggers and or alarms with scrollable buffers.

No matter TCP, 485 serial, 232, etc.

OPC is easily launched.

Lynn August Linse

> how can I implement report by exception using modbus protocols in an RTU

Actually, this is done on many small remote RTU used in for example waste-water systems (despite people claiming it's impossible). It does require a 'peer-to-peer' link, with the peer understanding the multiplexing done.

I won't rehash the details, but they are documented here:

Digi Modbus/TCP-to-RTU bridges support this, so it can determine when an RTU message received is a response to a previous Master request, or is a new request (the RTu acting as Master), which the bridge can redirect to a remote slave.

MODBUSRBX is not the traditional report by exception definition, reporting back to the master station, because the MODBUS protocol does not support report by exception. DNP3 for example has RBX.

A device that is a slave, switch to acting act as a master and sending a message to another slave, not the master on the network is not RBX and violates the specification of only one master.

From the specification:

Controllers communicate using a master–slave technique, in which ONLY ONE device (the master) can initiate transactions (called ‘queries’). The other devices (the slaves) respond by supplying the requested data to the master, or by taking the action requested in the query.

MODBUSRBX might be called RBX but, it is mudding the definition of RBX.

If all you have is a master and a slave and the master will not act as a slave then MODBUSRBX is not possible.

The referenced link states “Either a Master which understands unsolicited Modbus/RTU requests”, there is no such thing as “unsolicited Modbus/RTU requests” to a master in the MODBUS protocol specification.

Either, use status register values as RBX or select a protocol that support RBX. Or if each device has two serial ports and can be configured as master on one and slave on the other then either device could implement RBX.


Good luck,