- Jelina overview
- CommBridge
- Data acquisition
Modbus RTU Acquisition
1. Create nodes
Section titled “1. Create nodes”(1) Open Digital Twin in CommBridge, then select Device Connectivity on the left.

(2) Drag the Modbus Client [Master], Data Processing, and MQTT Upload plugins to the plugin workspace to create three nodes.

(3) Connect the three nodes in this order: Modbus Client [Master] → Data Processing → MQTT Upload.

2. Create a scheme
Section titled “2. Create a scheme”Select
Modbus-RTUas the protocol.
(1) Double-click Modbus Client [Master], then click Add Scheme.

(2) Enter the connection settings, then click Next.

(3) Click Add Group, enter the group settings, then click Confirm.

(4) Click Add Data, enter the point settings, then click Confirm.

(5) Click Finish to add the acquisition scheme.

(6) Enable the scheme, then click Save.

3. View results
Section titled “3. View results”(1) Click Deploy in Device Connectivity to deploy successfully.

The image shows the general Deploy control. The nodes and scheme on this page should use the Modbus RTU parameters configured above.
(2) Switch to Digital Twin and hover over the Modbus Client [Master] node to display its information list.

(3) Click the scheme to view real-time and historical point data for its groups.

4. Write data
Section titled “4. Write data”Use the same configuration as the write-data procedure for Modbus TCP.
5. Configuration details
Section titled “5. Configuration details”Connection settings
Section titled “Connection settings”| Parameter | Description | Format | Example |
|---|---|---|---|
| Scheme name | User-defined name for the scheme | Nonempty | Temperature acquisition |
| Protocol | Modbus protocol | Modbus TCP, Modbus RTU | Modbus RTU |
| Synchronous acquisition | Whether to use synchronous acquisition: Yes or No | Yes, No | YES |
| Acquisition interval | Polling interval for reading data: the interval between register reads for each group in the scheme | Number, range: (100,2147483647] | 2000 |
| Acquisition freshness | All points in a group must be acquired within this period, including frame delays; otherwise the group’s data is discarded | Number, range: (0, acquisition interval] | 1000 |
| Timeout | Maximum duration of each acquisition for each group in the scheme; data from a read is discarded if this time is exceeded | Number, range: (0, acquisition interval] | 1000 |
| Maximum batch register count | Maximum number of registers per batch when acquiring consecutive points | Natural number, range: [1,120] | 120 |
| Interface | Determined by the device’s actual serial ports, typically RS485; connecting a USB device adds the corresponding interface name | ttyS0, ttyS1 | ttyO4 |
| Data bits | Number of actual data bits in a data unit | 7, 8 | 8 |
| Stop bits | Used to mark the final bit of a packet | 1, 2 | 1 |
| Parity | A simple error-checking method for serial communication | Odd, Even, or None | None |
| Baud rate | Symbol transmission rate, expressed as the number of symbols transmitted per second | 115200, 57600, 38400, 19200, 9600, or 4800 | 9600 |
| Frame delay | Minimum interval between acquisitions; the default is 0. Increase it if acquisition frequently times out; otherwise leave it unchanged | Milliseconds; number, range: [0, 2147483647] | 0 |
| Write frame delay | Additional wait when writing data, required by some devices with slow write operations; 0 means no extra delay | Milliseconds; number, range: [0, 2147483647] | 0 |
| Write register function code | Function code for writing holding registers | Auto, 06, 10; see below | Auto |
| Change-based acquisition | Acquisition mode. No: no change-based filtering; SingleData: transmit only points that change; WholeGroup: transmit the entire group when any data in the group changes | No, SingleData, WholeGroup | SingleData |
| Change-based acquisition reset time | Forces a data submission when data remains unchanged for longer than this period. Set to 0 to never trigger it | Seconds; number, range: (0, 2147483647] | 0 |
| Failure backoff | Extends the time before the next acquisition according to the backoff factor after a failure, up to acquisition interval × maximum backoff factor | Yes, No; see below | Yes |
| Backoff factor | Time multiplier on failure; must be greater than 0 and not equal to 1 | Number | 2 |
| Maximum backoff factor | Maximum time multiplier; once reached, this multiplier remains unchanged | Number | 16 |
Synchronous acquisition:
- “Yes” uses a common acquisition interval, timeout, and acquisition freshness setting for all groups in the scheme. These settings apply to all point data in the scheme.
- “No” allows each group to configure its own acquisition interval, timeout, and acquisition freshness.
Write register function code: Auto uses 06 when writing one register and 10 when writing more than one register; 06 uses 06 for all register writes; 10 uses 10 for all register writes.
Failure backoff: for an acquisition interval of 1 second, a backoff factor of 2, and a maximum backoff factor of 16, successive acquisition failures produce waits of 1s, 2s, 4s, 8s, and 16s. Similarly, for an acquisition interval of 10 seconds, a backoff factor of 0.5, and a maximum backoff factor of 0.1, successive failures produce waits of 10s, 5s, 2.5s, and 1.25s. A successful acquisition restores the initial default acquisition interval.
When the backoff factor is greater than 1, the maximum backoff factor must be greater than the backoff factor. When it is less than 1, the maximum backoff factor must be less than the backoff factor.
Add a group
Section titled “Add a group”| Parameter | Description | Format | Example |
|---|---|---|---|
| Group name | User-defined name for the group | Nonempty | Temperature group 1 |
| Slave ID | Modbus device address: the slave address of the device being polled | Number, range: (0,255] | 1 |
| Acquisition interval | Data polling interval: the interval between register reads for this group | Number, range: (100,2147483647] | 1000 |
| Acquisition freshness | Validity window for acquiring all points in this group. If all point data is not read within this period, all point data in the group is discarded | Number, range: (0, acquisition interval] | 500 |
| Timeout | Maximum duration of each acquisition for this group; data from the read is discarded if this time is exceeded | Number, range: (0, acquisition interval] | 500 |
Note: When Synchronous acquisition in the connection settings is No, these settings apply to all point data in the group. Modbus limits the number of registers that can be read at once. A single read supports at most 120 consecutive Holding Register or Input Register points, or 2000 consecutive Discrete or Coils points.
Add data
Section titled “Add data”| Parameter | Prerequisite | Description | Format | Example |
|---|---|---|---|---|
| Data alias | Point name, unique within the group | Nonempty; cannot start with a digit or underscore, or contain spaces | T | |
| Address | Register address, unique within the group | Number, range: (0,2147483647) | 0 | |
| Register type | Modbus operation code | Holding Register, Input Register, Discrete, Coils; see below | Holding Register | |
| Data type | Determined by the register type | Raw data type of the register | uint16, int16, uint32, int32, float, boolean, combine, string, hex string; see below | uint16 |
| Byte order | Determined by the register type and data type | Storage order in memory for data types larger than one byte | AB, BA, ABCD, CDAB, BADC, DCBA; see below | AB |
| Register count | Determined by the register type and data type | Number of registers occupied by the data type | See below | 1 |
| Read/write mode | Determined by the register type | Supports r (read only) and rw (read/write) | r, rw | r |
| Calculation | User-defined formula based on the data alias | T/10 | ||
| Offset | Data type is bit | Bit offset from high to low after byte-order adjustment | Number, range: [0,15] |
For example, if the temperature property on your device is at address 1, set the register address to 1 when testing that property.
- For Discrete and Coils registers, the data type defaults to boolean.
- For uint16, int16, and combine, the available byte orders are AB and BA. For uint32, int32, and float, they are ABCD, CDAB, BADC, and DCBA. Other data types have no byte-order setting.
- For Discrete and Coils, the register count defaults to 1. For uint16, int16, and boolean, it defaults to 1. For uint32, int32, and float, it defaults to 2. For combine, select 1 or 2. For string and hex string, enter the register count manually.
16-bit order:
- AB: a one-word register, with the high word before the low word and the high byte before the low byte within the word (big-endian).
- BA: a one-word register, with the high word before the low word and the low byte before the high byte within the word (little-endian).
32-bit order:
- ABCD: two words, with the high word before the low word and the high byte before the low byte within each word (big-endian).
- BADC: two words, with the high word before the low word and the low byte before the high byte within each word (big-endian with byte swap).
- CDAB: two words, with the low word before the high word and the high byte before the low byte within each word (little-endian with byte swap).
- DCBA: two words, with the low word before the high word and the low byte before the high byte within each word (little-endian).
6. Modbus protocol parameter details
Section titled “6. Modbus protocol parameter details”The protocol settings for Modbus RTU are the same as those for Modbus TCP.