I
This question is about "Read Device Identification" function (0x2B / 0x0E).
Modbus client request contains a field named "Read Device ID code" that is used to define the type of access level requested by the client.
Modbus server response contains the same named field that was recopied by the server from the client request, followed by a field named "Conformity level" which specifies the type of access level that is actually supported by the server.
All of the above is clear to me. What is not entirely clear to me is the following quote from the Modbus Application Protocol V1.1b specification:
"If the server device is asked for a description level ( readDevice Code )higher that its conformity level , It must respond in accordance with its actual conformity level."
I wonder what is the expected (i.e. conforming to the specification) behavior of a Modbus server that receives a client request with "Read Device ID code" higher than its "Conformity level"?
Possible answers are:
1) Issue a Modbus Exception Response. Tell the client that the requested access level is not supported by the server. In that case, what value should the Modbus Exception Code be set to?
2) Ignore the requested Read Device ID code and respond as if the client asked for the same access level as the conformity level. This raises another questions:
2a) What to respond if a client asked for stream access to regular/extended ID, but only basic ID is supported?
2b) What to respond if a client asked for an individual access, but only a stream access is supported?
3) Something else. Please advise.
I am unable to test it myself as I do not have access to any Modbus server device that supports this function. That is why I am asking here.
Your reply would be greatly appreciated.
Best regards
Ivo
Modbus client request contains a field named "Read Device ID code" that is used to define the type of access level requested by the client.
Modbus server response contains the same named field that was recopied by the server from the client request, followed by a field named "Conformity level" which specifies the type of access level that is actually supported by the server.
All of the above is clear to me. What is not entirely clear to me is the following quote from the Modbus Application Protocol V1.1b specification:
"If the server device is asked for a description level ( readDevice Code )higher that its conformity level , It must respond in accordance with its actual conformity level."
I wonder what is the expected (i.e. conforming to the specification) behavior of a Modbus server that receives a client request with "Read Device ID code" higher than its "Conformity level"?
Possible answers are:
1) Issue a Modbus Exception Response. Tell the client that the requested access level is not supported by the server. In that case, what value should the Modbus Exception Code be set to?
2) Ignore the requested Read Device ID code and respond as if the client asked for the same access level as the conformity level. This raises another questions:
2a) What to respond if a client asked for stream access to regular/extended ID, but only basic ID is supported?
2b) What to respond if a client asked for an individual access, but only a stream access is supported?
3) Something else. Please advise.
I am unable to test it myself as I do not have access to any Modbus server device that supports this function. That is why I am asking here.
Your reply would be greatly appreciated.
Best regards
Ivo