Overview of Modbus RTU protocol for MindConnect IoT2050¶
The Modbus protocol is supported for the MindConnect IoT2050 plugin. You can select the protocol type Modbus RTU while adding a new data source in Asset Manager.
Modbus configuration
The Modbus configuration view is only visible after a successful onboarding of the MindConnect IoT2050. The MindConnect IoT2050 Version must be higher than V3.3.0.2.
The following picture shows the protocol selection in Asset Manager:
For more information about how to create a new data source see chapter Adding a data source for MindConnect IoT2050.
Modbus RTU data source parameter¶
In order to connect a Modbus RTU device, you need to select the Modbus RTU protocol and enter the following data source parameters:
Parameter | Description |
---|---|
Serial Port | Available serial ports: - COM1 |
Serial Type | Supported serial communication standards: - RS232 (default) - RS422 - RS485 |
Baud rate | Baud rate for serial communication: - 9600 (default) - 2400 - 4800 - 19200 - 38400 - 57600 - 115200 |
Data bits | Data bits for serial communication: - 5 - 6 - 7 - 8 (default) |
Stop bits | You can select the number of stop bits for serial communication: - 1 (default) - 2 |
Parity | Parity for serial communication: - Odd - None - Even |
Termination | Onboard termination: - On (default) - Off |
The following parameters are optional and can be adjusted for collecting data from slow Modbus devices:
Parameter | Description |
---|---|
byteTimeout | You can set the timeout interval between two consecutive bytes of the same message received from the Modbus device. If the delay between is longer than the given timeout, an error will be generated. Range: 500ms (default) … 2000ms |
responseTimeout | You can set the timeout interval used to wait for a response from the Modbus device. If the waiting before receiving the response is longer than the given timeout, an error will be generated. Range: 500ms (default) … 60000ms |
responseSuspensionTime | If a byte timout or a response timeout was detected, then this waiting time is added before the next request is started. During this time any response from the Modbus device will be flushed Range: 0ms … 45000ms. (default: 1000ms). For Modbus RTU it is recommended to set the value to 10000 ms. If the default value 0 ms is set, any incoming incorrect responses will not be destroyed. |
requestDelay | You can set the time between the response from the Modbus device and the next request to this Modbus device. Range: 0ms (default) … 10000ms |
Pin assignment of Modbus protocols¶
The following table shows the pin assignment for the Modbus RTU protocol:
Pin | RS 485 | RS 422 | RS 232 |
---|---|---|---|
1 | Data- Transmit / receive data - (I/O) for half-duplex mode | TX- Transmitted data - (O) for full-duplex mode | Not supported |
2 | Data+ Transmit / receive data+ (I/O) for half-duplex mode | TX+ Transmitted data + (O) for full-duplex mode | RxD Received data (I) |
3 | - | RX+ Receive data + (I) for full-duplex mode | TxD Transmitted data (O) |
4 | - | RX- Receive data - (I) for full-duplex mode | Not supported |
5 | M Signal ground | M Signal ground | M Ground |
6 | - | - | Not supported |
7 | - | - | Not supported |
8 | - | - | Not supported |
9 | - | - | Not supported |
Modbus RTU data point parameter¶
In order to collect the data of your Modbus RTU device, you must add new data points.
The following picture shows the data point parameter window:
The following table shows the parameter of the Modbus RTU data point window:
Parameter | Description |
---|---|
Data Type | Data type supported by backend (e.g. INT). |
Slave Number | Address/Slave number of the Modbus device. |
Start Address | Start address (offset) of the data. |
Quantity | Quantity of data to be read. |
VariableType | You can choose the following variable types of the Modbus data to be read: 1: char 2: unsigned char 3: short 4: unsigned short 5: long 6: unsigned long 7: float 8: double 9: ASCII-Text |
Real Type | Real type - determines, if the registers of real values have to be processed in reversed order 0: Normal order 1: Reversed order 2: Byte swap order 3: Word swap order Real types 2 and 3 are available from V03.04.02.01. |
Integer Byte Order | It determines in which byte order format the read value will be processed (default: 0) 0: Normal order (big-endian) 1: Reversed order (little-endian byte swap) 2: Byte swap order (big-endian byte swap) 3: Word swap order (little-endian) Note: - Integer byte order is available for 16 bits and 32 bits variable types and it is supported for the version starting from MindConnect IoT2050 V03.07.01.00 b003. - Integer byte order is also available for 64 bits variable types since MindConnect IoT2050 V03.07.01.00 b003 |
Response Address Offset | Offset of the data to return in register units. |
Response Quantity | Quantity of the returned data. Only for string data a value greater than 1 is supported. |
The following table shows the parameter of the Modbus RTU datapoint window for Function Type and Acquisition Type:
Function Type | Acquisition Type |
---|---|
The function type depends on the type of the data (see manual of the Modbus device). | The acquisition type depends on the selected function type. |
1: Read Coils | Read |
2: Read Inputs | Read |
3: Read Holding Registers | Read |
4: Read Input Registers | Read |
5: Write Single Coil1) | Write |
6: Write Single Register1),2) | Write |
15: Write Multiple Coils1) | Write |
16. Write Multiple Registers1),3) | Write |
22: Mask Write Register1) | Write |
23: Read/Write Multiple Registers1) | Write |
- Currently function codes 1..4 are supported.
- 1) Supported since MindConnect IoT2050 V03.07.01.00 b003.
- 2) Used to write values to data points with variable types using a single register (example: short).
- 3) Used to write values to data points with variable types using one or more registers (example: long or double).
Addressing:
The information is stored in the Modbus Slave device in 4 different tables. 2 tables store on/off discrete values (coils) and two store numerical values (registers). Each coil is 1 bit long and assigned a data address between 0 and 65535. Each register has the size of 1 word(16 bits/ 2 bytes) and has a data address between 0 and 65535.
Coil/ Register numbers | Data addresses | Function type | Table name |
---|---|---|---|
1-9999 | 0 to 65535 | 1 | Read Coils |
10001-19999 | 0 to 65535 | 2 | Read Inputs |
30001-39999 | 0 to 65535 | 4 | Read Input Registers |
40001-49999 | 0 to 65535 | 3 | Read Holding Registers |
Coil / register numbers can be considered as location names since they do not appear in the configuration. The Data Addresses (Start Address) are used in the configuration.
Data Types:
Data type | Length | Data range |
---|---|---|
BOOLEAN | 1 bit | True |
INT | 4 bytes | −2147483648 |
LONG | 8 bytes | −9223372036854775808 |
DOUBLE | 8 bytes | -9.9999999999999999999999999999999999999E+125 |
STRING | 1 - 255 bytes |
Modbus data types:
Data type | Length | Data type number |
---|---|---|
char | 8 bits | 1 |
unsigned char | 8 bits | 2 |
short | 16 bits | 3 |
unsigned short | 16 bits | 4 |
long | 32 bits | 5 |
unsigned long | 32 bits | 6 |
float | 32 bits | 7 |
double | 64 bits | 8 |
ascii-text | 8 bits / char | 9 |
reserved for future use | - | 10 |
long long | 64 bits | 111) |
unsigned long long | 64 bits | 12 1) |
1) Supported since MindConnect IoT2050 V03.07.01.00 b003. Examples:
Example | Data type | Function type | Start address | Variable type | Response Address Offset | Response Quantity |
---|---|---|---|---|---|---|
Reading the first Holding Register, number 40001, has the Data Address 0. | int | Read Holding Registers | 0 | unsigned short or short | 0 | 1 |
VariableType: 4 or 3 (unsigned short or short)Reading the second Input Register, number 30002, has the Data Address 1. | int | Read Input Registers 1 | unsigned short or short | 0 | 1 | |
Reading a float (32 bits) from Input Register 30108 / 30109, has the Data Address 107. | double | Read Input Registers | 107 | float (reads two registers) | 0 | 1 |
Reading a string. This example describes to read four letters from register 400006 and 400007. Each register contains two characters. | string | Read Holding Registers | 5 | unsigned short | 0 | 2 (registers) |
Using Modbus register addresses directly¶
Usually, it is necessary to enter Modbus registered address decremented by 1 as "start address", but it may lead to confusion when comparing the data point's "start address" with the registered address from Modbus device's manual. Therefore, enter a negative value in the "response address offset" field to directly use the registered address from the Modbus device's manual as "start address". In case a negative value has been entered as "response address offset", this value will internally be subtracted from the given "start address" number to read the data from Modbus device. Positive "response address offset" values will be handled to address specific data within the read data if several registers need to be read to acquire the data from Modbus device as data block and the necessary data itself is only a part of that data block.
Samples:
Using decremented start address | Using address from manual | Getting data from a read data block | |
---|---|---|---|
Registered address from Modbus device manual | 303 | 303 | 64001 |
Start address | 302 | 303 | 640011) |
Quantity | 1 | 1 | 27 |
Response address offset | 0 | -1 | 11 |
Response quantity | 1 | 1 | 16 |
1) Sample start offset as documented in SENTRON PAC manual - can be used without decrementing it by 1.
Technical specification¶
Protocol | Description | Value | Data rate |
---|---|---|---|
Modbus RTU - RS485 | Data provider Max cable length | 32 1200 m | max. 115,2 kBd |
Modbus RTU - RS422 | Data provider Max cable length | 10 1200 m | max. 115,2 kBd |
Modbus RTU - RS232 | Data provider Maximum cable length | 1 2.5 m 5.0 m 7.5 m 15 m 30 m 60 m 120 m | 115,2 kBd 57,6 kBd 38,4 kBd 19,2 kBd 9,6 kBd 4,8 kBd 2,4 kBd |
Note
Maximum cable length depends on the cable type used and maximum length can be increased by using repeaters.