Issue
Modbus devices such as power meters require the monitoring of values that are held in a 64-bit unsigned integer data format. I/A Series G3 Modbus proxy points cannot be configured to directly support the 64 bit register format.
Environment
I/A Series G3, Modbus, Modicon, Schneider Electric PowerLogic PM800 Series Power Meters
Cause
Modbus devices such as power meters require the monitoring of values that are held in a 64-bit unsigned integer data format. I/A Series G3 Modbus proxy points cannot be configured to directly support the 64 bit register format.
Resolution
As a workaround, the Modbus proxy points can be configured to poll the register as four integers and convert or combine the four integers to a single unsigned 64-bit value. NOTE: that all four registers will need to be polled in a single message. The following are two examples that can be used to read and convert unsigned 64-bit values. The first example converts a Modicon power value with data type UINT64. The second example converts a Schneider Electric PowerLogic P800 Series Power Meter with data type MOD10.
Example 1 (Modicon UINT64): The memory map below indicates the Total KWh+ value is presented in an unsigned 64-bit data format (four Modbus integers) starting at physical address 0500h.
Create four Modbus Client Numeric Points under the Modbus Async Device Points container. This can be done by copying four objects or by using the Modbus Client Point Manager.
Configure the points to read the integers that represent the value required. For example, the Modicon address 301280 (0500h) would be configured as follows.
NumericPoint1 > Data Address (Address Format Hex, Address 500, Reg Type Holding, Data Type Integer)
NumericPoint2 > Data Address (Address Format Hex, Address 501, Reg Type Holding, Data Type Integer)
NumericPoint3 > Data Address (Address Format Hex, Address 502, Reg Type Holding, Data Type Integer)
NumericPoint4 > Data Address (Address Format Hex, Address 503, Reg Type Holding, Data Type Integer)
The values will attempt to poll and still will most likely be in fault as the value must be read in the same message request. This is where a Device Poll Config Entry will be required to configure the data to be read in a single message. The Device Poll Config Entry can be configured using the Learn Optimum Device Poll Config or by manually adding a Device Poll Config Entry to the Device Poll Config container.
For this example, the Device Poll Config Entry would be setup with the start address of Hex 500, Data Type Holding Register, Consecutive Points To Poll 4 and Read Group Size 1. The consecutive points to poll may can be adjusted to read multiple UINT64 registers depending upon the maximum number of registers allowed by the Modbus device. Otherwise additional Device Poll Config Entry objects can be added and configured.
Converting or combining the values can be performed in a couple of ways. The first is by using standard math logic (see image below). The inputs are multiplied by the correct binary multiplier and added together. The constants to use for each object are as follows.
Multiply = 65536.0
Multiply1 = 4294967296.0
Multiply2 = 281474976710656.0
The second method is to use a program object and connect the four integers to the inputs. The same calculation as previous method is performed within the program. The ModbusIntegersToUINT64 program object can be copied into a station database.
Example 2 (PowerLogic P800 Series Power Meter MOD10): The memory map below indicates the Energy (Real Out) value is presented in an unsigned 64-bit data format (four Modbus integers) starting at physical address 1708.
Create four Modbus Client Numeric Points under the Modbus Async Device Points container. This can be done by copying four objects or by using the Modbus Client Point Manager.
Configure the points to read the integers that represent the value required. For example, the address 1708 would be configured as follows.
NumericPoint1 > Data Address (Address Format Decimal, Address 1708, Reg Type Holding, Data Type Integer)
NumericPoint2 > Data Address (Address Format Decimal, Address 1709, Reg Type Holding, Data Type Integer)
NumericPoint3 > Data Address (Address Format Decimal, Address 1710, Reg Type Holding, Data Type Integer)
NumericPoint4 > Data Address (Address Format Decimal, Address 1711, Reg Type Holding, Data Type Integer)
The values will attempt to poll and still will most likely be in fault as the value must be read in the same message request. This is where a Device Poll Config Entry will be required to configure the data to be read in a single message. The Device Poll Config Entry can be configured using the Learn Optimum Device Poll Config or by manually adding a Device Poll Config Entry to the Device Poll Config container.
For this example, the Device Poll Config Entry would be setup with the start address of Decimal 1708, Data Type Holding Register, Consecutive Points To Poll 4 and Read Group Size 1. The consecutive points to poll may can be adjusted to read multiple MOD10 registers depending upon the maximum number of registers allowed by the Modbus device. Otherwise additional Device Poll Config Entry objects can be added and configured.
Converting or combining the values can be performed in a couple of ways. The first is by using standard math logic (see image below). The inputs are multiplied by the correct binary multiplier and added together. The constants to use for each object are as follows.
Multiply = 10000.0
Multiply1 = 100000000.0
Multiply2 = 1000000000000.0
The second method is to use a program object and connect the four integers to the inputs. The same calculation as previous method is performed within the program. The ModbusIntegersToMOD10 program object can be copied into a station database.