ModTest Manual v2.10 - 2.1. General settings
Thesettings page enables you to set the following items:
Slave ID. The Slave ID is what is called the "slave address" in the original Modbus specification, and is called the "unit identifier" in the Modbus/TCP specification. It should be in the range 0 to 255.
The value entered here is used only as a default in the Define Command page - you can enter a different value when you define a command.
A zero slave identifier is used in write requests as a broadcast identifier (each slave that receives the message should store the values supplied in the request, but should not normally send a response). The serial specification limits the range of slave identifiers to 0 to 247, for no apparent reason. The Modbus/TCP implementation guide suggests that Modbus/TCP slaves that can be uniquely identified by their IP address should use slave identifier 255.
Number of Retries. The Number of Retries field specifies how many times ModTest should retry a request that it has not received a response to.
Request Delay. The Request Delay field is used to insert a time delay after each command when running a test sequence. This may be used to reduce the load on the slave, and maybe also on the computer running ModTest. The delay is measured in milliseconds.
Max PDU size. This field specifies the maximum allowable number of bytes in the PDU (Protocol Data Unit) of Modbus messages. You may need to reduce the maximum PDU size when communicating over some networks to avoid fragmentation of messages.
ModTest will not send any request that exceeds the PDU limit, or whose response would exceed the limit. See the note on message size limits for more information.
Check Count Limits. The current Modbus specification specifies arbitrary limits on the counts in some Modbus requests (e.g. a maximum of 2000 coils in a Read Coils request). Select this checkbox if you want ModTest to check these limits.
Since ModTest can handle non-standard register sizes, count limits for holding and input registers are multiplied by 2 and then interpreted as byte count limits. ModTest will warn you if you send a request that exceeds a count limit or whose response would exceed a limit. See the note on message size limits for more information.
Strict Checking. Normally ModTest checks that received Modbus messages conform to the current Modbus specification, and rejects them if they do not. Some of these checks are not essential: messages that fail them can still be interpreted correctly. Deselect Strict Checking if you want ModTest to be more tolerant of non-conforming messages.
The checks enabled by the Strict Checking setting are:
The byte count in a response message must match the count in the request message (commands 1 Read Coils, 2 Read Discrete Inputs, 3 Read Holding Registers, 4 Read Input Registers, 20 Read File Record, 23 Read/Write Multiple Holding Registers).
A response message must correctly echo data that was sent in the request (commands 5 Write Single Coil, 6 Write Single Holding Register, 8 Diagnostics, 15 Write Multiple Coils, 16 Write Multiple Holding Registers, 21 Write File Record, 22 Mask Write Holding Register, 43/14 Read Device Identification).
Unused fields in messages must be correctly set (command 43/14 Read Device Identification).
A message must not contain excess data.
Allow Long Messages. Some Modbus messages contain a count of the number of data bytes in the message. This byte-count is in a one-byte field, and so has a maximum value of 255, which limits the quantity of data that can be sent in a single message. The byte-count is actually redundant: it is possible to determine the number of data bytes in a message from the overall size of the message.
If you select Allow Long Messages, ModTest will ignore the byte-count field and determine the number of data bytes from the overall message size, and will set the byte-count to 0 when sending messages containing more than 255 data bytes. If you also increase the Max PDU Size, ModTest will be able to send and receive messages containing more than 255 data bytes.
Sending messages containing more than 255 data bytes is non-standard and not widely supported. It may affect the detection of the end of messages when using the RTU packet type, and may affect the ability of the CRC/LRC check to detect errors. However, it should be reliable when using a socket (TCP or UDP) connection. Note that UDP datagrams are limited in size, so this will limit the size of Modbus messages that can be sent using UDP.