I am trying to communicate with a device from Instromet. I send the following message:
01 03 00 00 00 01 84 0a
and I get the following answer:
01 83 01 80 f0
and the specification "Modbus Exception Response from Slave Device"
Can anybody tell me what does that mean?
The "Exception Error" means the slave could not return the correct reply for your master request.
Try a request of 01 03 00 00 00 02 [checksum]. Should return: 01 03 04 HH HH HH HH [checksum], where data (HH) from 40001, 40002 registers are returned.
I can explain your messages, but I cannot tell you what is wrong.
The sending message says::
Address Modbus Device #1, Read Holding Register number 1 and Read One Holding Register. The 84 0A is a check word.
The reply says:
This is Address #1, there is an error (most significant bit is set in byte 2) and the error code is 01. The 80 F0 is the check word.
Modbus error 01 is "Illegal Function" as I recall.
You might try reading Input Registers rather than Holding Registers.
Or perhaps your device only recognizes binary data. In this case try reading using "Coils" or "Input Status" data types.
Contact me off list at firstname.lastname@example.org if you have further questions.
Miille Applied Research Co., Inc.
1730 South Richey
Pasadena, Texas 77502
This is an "Illegal Function" exception response. Apparently your Instromet device does not support function code 3 ("Read Holding Registers") - you should check with Instromet what function codes are supported.
Custom software development in Java and C/C++ for Linux
The top bit set in the second return byte (ie the 80 part of 83) indicates an error. The third byte (01) indicates the error type.
The protocol specification identifies 01 as "not an allowable action for addressed slave". I would contact Instromet as to
why they would reject the poll request.
Lorne R. Schneider
Calta Computer Systems