Invalid exception response? inepro PRO1-Mod

I'm currently trying to use the inepro PRO1-Mod.

When sending a Read Device Identification, I supposedly receive no response according to the custom library I'm using. When examining the data received on the RX line of the master a response is can be captured using an oscilloscope. This response consists of only two bytes [0xAB, 0x01], the bytes in this response look exactly like a exception response for the data I'm sending.

I expect any response from a Modbus device to be at least 4 bytes, which are [address, function, crc_high, crc_low].

Is the response I get a valid Modbus response? Or is the device sending an invalid response?
 
An exception response for a Modbus RTU slave should be 4 bytes in length.

Regardless, exception code 01 is Illegal Function, meaning the device doesn't support the Read Device Identification command.

Are you able to read registers using Function Code 03? Note that the register addresses in the PRO1 user manual are hexadecimal and most likely 0-based. For example, the serial number is at register address 0x4000, which corresponds to Holding Register 16,385 (which may also be expressed as 416,385 using 6-digit reference notation with a 400,000 offset indicating it is a Holding Register).

Does the device respond with a valid exception response if non-existing register is read? What about if you try reading using Function Code 04?
 
An exception response for a Modbus RTU slave should be 4 bytes in length.

Regardless, exception code 01 is Illegal Function, meaning the device doesn't support the Read Device Identification command.

Are you able to read registers using Function Code 03? Note that the register addresses in the PRO1 user manual are hexadecimal and most likely 0-based. For example, the serial number is at register address 0x4000, which corresponds to Holding Register 16,385 (which may also be expressed as 416,385 using 6-digit reference notation with a 400,000 offset indicating it is a Holding Register).

Does the device respond with a valid exception response if non-existing register is read? What about if you try reading using Function Code 04?
Reading existing registers returns the data I expect. Reading an invalid holding register (0xFFFF) results in a similair exception response of 2 bytes, except the response now contains [0x83, 0x02]. Which is the exception response one would expect.

I attached a screenschot from the oscilloscope. The blue line is TX and yellow is RX seen from the masters side.
 

Attachments

Interesting, it does seem like this device is not formulating its exception responses properly, as they are missing the CRC. Of course, this is an invalid packet, so it depends on how each master would handle invalid responses. It seems the library you're using simply discards the invalid response and treats it as if no response was received.

I suggest that you contact the manufacturer to report this incorrect behavior.
 
Top