Today is...
Saturday, September 21, 2019
Welcome to Control.com, the global online
community of automation professionals.
Featured Video...
Featured Video
EtherCAT with CTC’s master lets your multivendor network play well together...
Our Advertisers
Help keep our servers running...
Patronize our advertisers!
Visit our Post Archive
Are there headerless exception messages?
Should a Modbus TCP client expect exception messages that consist of only the PDU and have no MBAP header?

I am writing a Modbus TCP client program and use the Pymodslave simulator. Pymodslave uses unit id 01. If I send a message with a different unit id, for example FF, Pymodslave responds with an exception message that consists of the PDU only and has no MBAP header.

Raw request data:
00 00 00 00 00 06 FF 03 00 A0 00 01
Raw response data:
83 04

My question is: Should my client program handle such a PDU-only message with no MBAP header, or is this a quirk of Pymodslave? I cannot find any mentioning of transmitting only the PDU in
- Modbus_Application_Protocol_V1_1b3.pdf
- Modbus_Messaging_Implementation_Guide_V1_0b.pdf
or any other source I found so far.

Here is a little more context.

If the unit id is what Pymodslave expects then it always sends a full ADU. Here are two examples:

If I change the unit id byte in the request from FF to 01 then the messages are:
Request: 00 00 00 00 00 06 FF 03 00 A0 00 01
Response (success): 00 00 00 00 00 05 01 03 02 00 00

If I use the correct unit id and an invalid register number (FFFF) then the exception response has an MBAP header:
Request: 00 00 00 00 00 06 01 03 FF FF 00 01
Response (exception): 00 00 00 00 00 03 01 83 02