Modbus Slave cry out on exception?

P

Thread Starter

Paul

I am attempting to set up several Allen-Bradley Micro1200s as Modbus RTU Slaves, being polled periodically from a Modbus RTU Master. I would, however, like to get these slaves to "cry out" when an exception is encountered, such as a discrete input or analog input exceeding a setpoint. The remotes are connected to the master via a satellite link, therefore it is imperative to minimize network traffic.
 
Paul

Modbus by design is a poll/response protocol so you will find nothing in the Modbus standard which will allow you to do this. If you want to layer some custom code on top of Modbus there are a couple of solutions. Note that either option will require code change at both ends.

Option 1.
You can use an upset reporting scheme. Define one or more holding or input registers as upset registers. Have the remote set a particular bit in this register when an analog change exceeds a limit. The host would normally poll only for the registers containing the upset data. Based on this response the host can repoll for the actual data registers based upon the results of the upset poll. Clear the upset bits in the remote after the changed data has been retrieved.

Option 2.
Define an upset response message containing an unique identifier to flag the message as an "upset". Part of the message must contain the remote address of the upset station. Modify the host to monitor for these unsolicited messages and then poll the remote specified.

Appreciate that you will no longer have a "Modbus" system but it may get you out of a bind.
 
J

Jerry Miille

You can do it using specialized protocol converters, but if you do, it is no longer Modbus! There is no support for unsolicited responses in the Modbus protocol.

There is equipment available that support this type of operation, but I want to re-emphasize, this is NOT Modbus protocol. It is a special, customized, operation that may or may not be compatible with someone else that claims support for unsolicited responses. You are on your own here.

We offer a version of this operation, but you should contact me directly to make sure that what we "do" is what you want to "do". There can be a large gap between what we can do and what you want to accomplish.

Thank you,

Jerry Miille

Miille Applied Research Co., Inc.
http://www.miille.com/
Jerry L. Miille
mailto:[email protected]
 
Hi:

I know a possible way to do this. First you must check if these PLCs have an option to have two communication ports. One port you will use like Modbus slave and the other port you can configure like ModBus Master port, in the other line end you need to have another port that works like ModBus Slaves so when you need a cry exception from a normal Slave your program on the slave must generate a Master ModBus message to inform at the unique Slave (normally the unique Master). If I can't be clear feel free to contact me at [email protected]
 
E

Eric M. Klintworth

Look at the DF1 Radio Modem protocol that Allen-Bradley is including in newer processors. It's in SLC-5/03 and -5/05 and in MicroLogix1500, and I think in the 1200, too. I believe it allows a slave to report on exception, which DF1 half-duplex polling master (and Modbus RTU Master, as far as I know) does not. It was designed to minimize radio traffic. Your master would, of course, have to speak DF1 Radio Modem also.

Eric Klintworth
 
M
Paul,

MODBUS was designed so many years ago with a hardwired physical connection in mind, where traffic cost is not a consideration, and quite a while before multiple access, contention and collision detection (as in Ethernet) terms
were coined.

Your choices are IMHO:
Choose another protocol, which is suitable for you RBE (Report By Exception) scenario
Build you own - based on MODBUS - make the RTUs behave like Masters (initiate their own communications), solve the contention problem somehow.

You may even want to consider MODBUS over GSM in SMS format or GPRS.

It all depends on response time criticality - versus fixed and variable costs.

Meir
 
Top