Configure the Modbus RTU Connector
Connect SIA Connect to Modbus RTU devices, discover unit IDs, configure coils and registers, exchange values, and resolve common errors.
The Modbus RTU Connector reads and writes data from Modbus devices through an RS-232 or RS-485 serial connection. Use it for PLCs, meters, drives, sensors, and other devices that act as Modbus RTU servers.
This guide explains how to discover or manually configure a Modbus RTU instance, create items for coils and registers, select data formats, verify communication, and resolve common errors.
Before you begin
Prepare the following information:
- The serial interface connected to the Modbus device.
- Whether the connection uses RS-232 or RS-485.
- The device unit ID, also called the slave address.
- The baud rate, parity, data bits, and stop bits.
- The register addresses, register types, data types, and byte order used by the device.
Make sure the Modbus RTU Connector is installed and enabled, and that the serial wiring matches the device documentation.
Writing to a Modbus device can change machine operation. Verify the target register and test writes only when the connected process is in a safe state.
Choose a setup method
| Method | Use it when |
|---|---|
| Discover instances | You want SIA Connect to scan selected unit IDs on a serial interface. |
| Create an instance manually | You already know the unit ID and serial communication settings. |
Modbus RTU supports instance discovery. It does not support item discovery because Modbus does not provide a standard way to browse register definitions.
Discover Modbus RTU instances
- In the Edge Portal, open Workspace > Instances.
- Start instance discovery and select the Modbus RTU Connector.
- Select the serial mode and interface.
- Enter the baud rate, parity, data bits, and stop bits used by the bus.
- Enter the unit IDs that should be scanned.
- Set the scan duration.
- Start the scan.
- Select the required devices and import the instances.
The scan first requests Modbus device identification and Report Slave ID data. If the device does not support those functions, the Connector tests the first holding register and then the first coil. A device can therefore be discovered even when it does not provide product information.
Each imported instance uses the unit ID as its Address and retains the serial settings used during discovery. When identification data is available, the result can also include the vendor, product, model, and revision.
Instance discovery parameters
| Parameter | Default | Accepted values | Description |
|---|---|---|---|
| Scan duration (ms) | 60000 |
1000 to 300000
|
Maximum duration of the complete unit-ID scan in milliseconds. |
| Server IDs | 1-32 |
Comma-separated IDs and ranges from 0 to 255
|
Unit IDs to test. For example, 1,10 or 1-247. A maximum of 247 IDs is scanned. |
| Serial mode | RS485 | RS232 or RS485 | Electrical serial mode used by the connection. |
| Device interface | None | Available serial interfaces | Serial port connected to the Modbus bus. An interface must be selected before discovery starts. |
| Baudrate | 9600 |
1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200
|
Serial communication speed. |
| Parity | None | None, Even, or Odd | Parity used by the device. |
| Databits | 8 |
5, 6, 7, or 8
|
Number of data bits in each serial character. |
| Stopbits | 1 |
1 or 2
|
Number of stop bits. |
Discovery allows approximately 200 ms for each unit ID to respond. Scanning a large range can therefore take time. Narrow the range when you know the expected unit ID.
Create a Modbus RTU instance manually
- In the Edge Portal, open Workspace > Instances.
- Select Add instance.
- Select the Modbus RTU Connector.
- Enter a descriptive name.
- Enter the device unit ID in Address.
- Select the serial interface and enter the communication settings.
- Configure the timeout, register limits, write behavior, and data order.
- Save the instance.
Instance parameters
| Parameter | Default | Description |
|---|---|---|
| Address | None | Unit ID of the Modbus RTU device. Device addresses normally use the range 1 to 247. |
| Timeout |
5000 ms |
Maximum time to wait for a Modbus response. |
| Max Read Registers | 125 |
Maximum number of registers included in one read request. Reduce this value if the device supports smaller blocks. |
| Write Preset | Multiple registers | Selects whether writes use the single-coil and single-register functions or the multiple-coil and multiple-register functions. |
| Endianness | Big endian | Word order for multi-register numeric values. Big uses [A B] [C D]. Little swaps the words to [C D] [A B]. |
| Byte Order | First byte high | Byte order within each register. First byte high uses [A B] [C D]. First byte low swaps the bytes to [B A] [D C]. |
| String Endianness | Big endian | Register order used when reading and writing strings. |
| String Byte Order | First byte high | Character byte order within each string register. |
| Interframe Delay |
200 ms |
Delay before opening and using the serial connection. It helps separate requests when several devices share the interface. |
| Serial Mode | RS485 | Select RS232 or RS485 to match the physical connection. |
| Device Interface | None | Serial interface connected to the device. |
| Baudrate | 9600 |
Communication speed used by every device on the serial bus. |
| Parity | None | Select None, Even, or Odd to match the device. |
| Databits | 8 |
Select 5, 6, 7, or 8 data bits. |
| Stopbits | 1 |
Select one or two stop bits. |
Create Modbus items
Use the device register map to create each item manually.
- Open the Modbus RTU instance.
- Add an item.
- Enter a descriptive item name.
- Enter the register address.
- Select the register type and data type.
- Set the item access to read, write, or read and write as required.
- Set the read interval and other standard item settings.
- Save the item.
Input coils and input registers are normally read-only. Only enable writing for output coils or holding registers that the device documentation identifies as writable.
Configure register addressing
The Register Type setting determines how the value in Register is interpreted.
| Register type | Address format | Example for the first address |
|---|---|---|
| Auto | Enter the complete five-digit Modbus reference. | Output coil 00001, input coil 10001, input register 30001, or holding register 40001
|
| Holding Register | Enter the zero-based offset. |
0 represents holding register 40001
|
| Input Coil | Enter the zero-based offset. |
0 represents input coil 10001
|
| Output Coil | Enter the zero-based offset. |
0 represents output coil 00001
|
| Input Register | Enter the zero-based offset. |
0 represents input register 30001
|
To address one bit inside a 16-bit register, append a bit position from 0 to 15. For example, 40001.3 reads bit 3 of holding register 40001. Set the data type to BIT.
To read or write a string, enter an inclusive register range. For example, 40001-40010 covers ten registers and can hold up to 20 bytes.
Select a data type
| Type | Registers used | Description |
|---|---|---|
| BIT | One coil or one selected register bit | Returns or writes 0 or 1. |
| INT16 | 1 | Signed 16-bit integer. |
| UINT16 | 1 | Unsigned 16-bit integer. |
| INT32 | 2 | Signed 32-bit integer. |
| UINT32 | 2 | Unsigned 32-bit integer. |
| INT64 | 4 | Signed 64-bit integer. |
| UINT64 | 4 | Unsigned 64-bit integer. |
| FLOAT | 2 | 32-bit floating-point value. |
| DOUBLE | 4 | 64-bit floating-point value. |
| STRING | Defined by the register range | UTF-8 text using up to two bytes per register. |
Floating Point Precision controls the number of decimal places used when FLOAT and DOUBLE values are returned. The default is 4.
Configure word and byte order
Start with Big endian and First byte high. Change these settings only when a known multi-register value is decoded incorrectly.
| Observed result | Setting to check |
|---|---|
| The correct bytes appear in the wrong register order | Endianness |
| The two bytes inside each register are reversed | Byte Order |
| Numeric values are correct but text is reversed | String Endianness and String Byte Order |
Write values
Create a mapping to send a value to a writable Modbus item. The Connector formats the value using the selected data type, word order, and byte order.
- BIT values must be
0or1. - A bit inside a holding register is written using a read-modify-write operation.
- A string must fit inside the configured register range.
- The Write Preset setting determines whether single or multiple write functions are used.
Automatic identity items
The Connector attempts to read device identification once for each instance. It uses Read Device Identification and falls back to Report Slave ID.
The following read-only identity items are created when the device provides the corresponding information:
- Vendor
- Product code
- Revision
- Vendor URL
- Product name
- Model
- User application
A device that does not support either identification function can still be used for normal coil and register communication.
Verify the configuration
- Enable the instance and at least one read item.
- Confirm that the item receives a value without an instance or item error.
- Compare the value with the device display or another trusted Modbus client.
- Check the data type, word order, and byte order if the raw communication succeeds but the value is incorrect.
- Test a write only when the target register is documented as writable and the process is safe.
Troubleshoot the Connector
Select a serial interface before scanning Modbus RTU slaves.
No serial interface was selected for discovery. Select the interface connected to the Modbus bus and run the scan again.
No devices are discovered
Confirm the serial interface, mode, baud rate, parity, data bits, and stop bits. Make sure the unit-ID range includes the device. Check the RS-485 polarity, termination, biasing, common reference, and cable connection where applicable.
The discovery scan stops before every unit ID is checked
Increase Scan duration (ms) or narrow Server IDs. Each unit ID that does not respond can consume the per-ID timeout.
Could not connect
The serial port could not be opened or configured. Confirm that the selected interface exists, is connected, and is not reserved by another service or Connector instance. Check the serial mode and permissions.
Timeout
The device did not answer before the configured timeout. Confirm the unit ID and all serial settings. Check wiring and verify that only one client is transmitting on the bus. Increase the timeout only when the device is known to respond slowly.
Illegal function
The device does not support the requested Modbus function. Confirm the register type and choose a compatible Write Preset for write operations.
Illegal data address
The requested coil or register range is not available. Compare the configured address with the device register map and confirm whether it uses full Modbus references or zero-based offsets.
Wrong offset format
The register address could not be converted to an offset. Correct the address and make sure its format matches the selected Register Type.
Non-bit input type. Input or Output Coil required.
A coil read was attempted with an incompatible register type. Select Input Coil or Output Coil, or change the item to the correct register data type.
Bit value out of range
The bit position is outside 0 to 15. Correct the value after the decimal point in the register address.
Invalid bool/bit value to write
The mapped value is not 0 or 1. Convert the source value before writing it to the bit item.
Invalid address format for bit
A BIT item was configured as a normal register value. Use a coil address or append a valid bit position to a register, such as 40001.0.
Invalid address format for string or Invalid string range
The STRING item does not contain a valid register range. Enter an inclusive range such as 40001-40010.
String too long
The text contains more than two bytes per configured register. Increase the register range or shorten the value before writing it.
Values are incorrect but communication succeeds
Confirm the register type and data type first. Then compare the device documentation with the Endianness, Byte Order, String Endianness, and String Byte Order settings.
Some registers read successfully while a larger block fails
The device may support fewer registers per request. Reduce Max Read Registers until the requested blocks are accepted.