Is there a way to send device info over ModBus?

B

Thread Starter

BasicPoke

I am told there is a way to send some sort of device name or device info over ModBus. Does this sound right? This would be to identify the slave device. I am aware that I can send a string by packing it into registers. Is this the only way to accomplish this?

Thanks,
BasicPoke
 
F

Friedrich Haase

Moin BasicPoke,
moin all,

MODBUS Application Protocol Specification V1.1a / June 2004
http://www.Modbus-IDA.org

Function code 43 / 14 (0x2B / 0x0E) Read Device Identification
has vendor name, product code, revision number and more.

Best regards,
Friedrich Haase
 
If the slave devices support the "Report Slave ID command -17 (11H)"
then that is a convenient way to discover who they are.

Don...
 
I found the Report Slave ID (17) function, which I think will work for me, but I have a couple of questions about it:

1. What is the meaning of "Slave ID" in the response? The spec says this is "device specific" and gives no explanation. This is not the slave address, which would be sent earlier in the response.

2. What is the meaning of "Run Indicator Status"? The spec says "0x00=OFF, 0xFF=ON". What is OFF & ON referring to?

Thanks,
BasicPoke
 
You can send a device name or other string over Modbus using a block of registers. Each 16 bit register will hold 2 bytes (or two alpha characters) by storing their ASCII codes.

There is an example at http://www.simplymodbus.ca/FAQ.htm#Types

I believe this is the easiest way to do it. You can probably come up with another more difficult way to accomplish the same thing if you use your imagination.
 
1. The Report Slave ID command is basically vendor and device specific.

2. The Run Indicator Status is also vendor and device specific.
It's a field that can be used to indicate if the process is running or
for status/diagnostic information from the slave device you're talking
to.

If you can read the table or picture below, you'll see an example
"Report Slave ID" response coming from an Acromag 951EN Ethernet slave
I/O module. It echoes back the Unit ID (i.e. Modbus Slave Address),
Function Code, Byte Count, Slave ID which correlates to the model
number, Run Indicator Status which is always set to on in this case, and the firmware number string which includes manufacturer name, firmware #, model number, serial number, revision level, and six byte MAC ID.

Donald Lupo
dlupo at acromag. com
 
With respect to Function 17, the Modbus standard says: "The data contents are specific to each type of device." In other words, it is defined by the device designer, not by the standard. As the device designer you would decide what it ought to be and document it thoroughly. I would suggest finding a few devices that implement this function (I don't know of any) and seeing how they did it. You wouldnt' follow those examples exactly, but it would hopefully give you an idea of what customers are used to seeing. Failing that, do something that is simple but useful.

As for the "Run Indicator Status", if your device has run and stop modes (or enabled/disabled, etc.), then this would reflect those states. This would be one byte, where 0 means "stop" (or whatever), and 0xFF (all bits set to "1") means "run" (or whatever is appropriate). The exact meaning of this depends on your device design. If the device only has one mode ("run"), then it would simply always be "on". You have to decide what makes sense in that context.
 
Thank you to everyone who replied. The "ION 7500 / ION 7600 / ION 8000 Series Modbus Register Map" doc was helpful. In my implementation of function 17, Device ID will indicate the model #, and for the data in the, I am sending a string with co., model #, version, serial #.

BasicPoke
 
Top