DeltaV PK controllers can communicate to a third-party control system through Modbus TCP with the controller acting as a slave device (Modbus server). The DeltaV PK controller supports both simplex and redundant Modbus communication.
The DeltaV PK controller can handle both communications (DeltaV and Modbus) simultaneously by using different IP addresses for Modbus communication and selecting different physical ports for each protocol (configured on the Properties dialog Advanced tab in DeltaV Explorer).
It is important that IP addresses assigned to any device connected either directly or through a switch to any of the ports must be unique. Since IP address verification is done at configuration, if a device is plugged into the network later with an IP address that conflicts with an existing device, it will cause problems on the network due to duplicate IP addresses.
When Modbus is enabled, the primary communications port defaults to any of the left-side physical ports (Primary Network Ports 1-3) of the DeltaV PK controller and the Modbus Server port is set to 502 (and is not configurable).
Redundant server connectivity is accomplished by selecting enabling the secondary port on the Modbus properties dialog. Secondary connection is available on the right-side physical ports (Secondary Network Port 4-6) of the DeltaV PK controller.
Configure the IP address for Modbus TCP through the Modbus Port Properties dialog. Set the number of each type of register on the Data Sets tab. Define Modbus TCP register mapping on the Map Registers or Register mapping dialogs.
Enabling the Modbus Port enables one Modbus stack that makes available (to connected clients) the data mapped into a single Modbus register table. When Modbus TCP is selected as the DeltaV PK controller's data server, the Modbus stack serves register Modbus register table on the enabled ports. The number of TCP connections is limited to 8 across the primary and secondary ports.
The DeltaV PK controller's Modbus server is a Big-Endian device and the clients must be configured accordingly.
The following table shows the register types and their data types and the number of values and register addresses that can be configured.
| Register type | Data type | Description | Number of values | Base register address (read-only and fixed) |
|---|---|---|---|---|
| coil | Boolean | For discrete output parameter read/writes | 0 to 1000 | R1 |
| input status | Boolean | For discrete input and status parameter reads | 0 to 1000 | R10001 |
| float input | floating point | Floating point for analog input parameter reads | 0 to 3000
(in increments of 2) |
R30001 |
| integer input | 8- or 16-bit unsigned | Integer for integer value input parameter reads | 0 to 3999
(restricted by the last register being 39999) |
R36001 |
| float holding | floating point | Floating point for analog input parameters read/writes | 0 to 3000
(in increments of 2) |
R40001 |
| integer holding | 8- or 16-bit unsigned | Integer for integer value input parameters read/writes | 0 to 3999
(restricted by the last register being 49999) |
R46001 |
There is only one data set for each register type and the register offset will always be 0. The data set must be sized large enough to account for all register usage required for that type. The base register address shown in the table above is a read-only field and is the start address of that type.
Writes to integer register mapped to a 32bit integer Module parameter of a value over 16bits is not supported. Use a float register for this module parameter.
You map individual parameters to Modbus port registers from the Register mapping and Map Register dialogs in DeltaV Explorer. Use Bulk Edit to easily map large numbers of parameters.