Modbus Register Properties

The following register properties can be configured:

Name

The Modbus register name is an identifier for the register. It is used internally, but not displayed in the measurement selector user interfaces. The ION register label, to which the Modbus register is mapped, is used for display. If no ION register label is defined, then the ION register name is used for display.

For multi-circuit devices, such as the BCPM, the Modbus register name is used to identify the different circuits, with a special naming convention (example: Real Energy@!!DeviceName!!_1PH_Ch1). These special register names are then used for the creation of managed circuits, if that feature is configured for the device type in the Management Console.

NOTE: The register name has a maximum character limit of 50, including spaces. This is important to consider when creating names for multi-circuit devices.

Constant Value vs. Mapped Value

To have an ION register linked to a measured value from a device, map this register to the appropriate Modbus register. To assign a constant value to an ION register, enter this value into the Value box for the ION register in the String Register Details pane. You must unmap a mapped register first before you can edit the value of an ION register. To unmap a register, delete the ION Handle number for the mapped Modbus register, or delete the entire Modbus register row for the mapped Modbus register in the Register Map.

Disable Not Available Check

Use this field to skip the Not Available check for a register.

Enumeration

Enumeration is used to convert ordinals (position numbers) read from the device into the values these ordinals represent.

For example, a device may represent the Baud rate with a number from 0 to 3, where 0 = 19200 Baud and 3 = 115200 Baud. Using enumeration, the value 0 is converted to the string "19200 Baud", and the value 3 is converted to "115200 Baud". There are many applications for using enumerations when reading Modbus register data.

To create an enumeration:

  1. In Device Type Editor, open the device type for which you want to define enumerations, and then browse to the Enumerations tab.

    NOTE: This tab is hidden by default. To show the tab, check View > Register Map > Enumerations.

  2. In Enumerations, insert a new row, using the context menu commands.
  3. Enter a name in the Name field to identify this enumeration.

    For the example above, the name could be "Baud_Rate".

  4. Enter a default value for the enumeration in the Default Enum Value field.

    For the example above, this could be "19200 Baud".

  5. Click the Enum Info Option icon in the name field for this enumeration to open the Enum Info Option table.
  6. In Enum Info Option, insert new rows, using the context menu commands and enter the ordinals into the Ordinal fields and the corresponding values into the Value fields.

    For the example above, ordinal 0 has a value of 19200 Baud, ordinal 1 a value of 38400 Baud, ordinal 2 a value of 57600 Baud, and ordinal 3 a value of 115200 Baud.

  7. Click the icon in the op left corner of the Enum Info Option grid to return to the Enumerations table.
  8. Browse to the Register Map table and enter the enumeration name created in step 3 into the Enum Name field for the registers to which it applies.
Format

This data format is used for decoding the values returned from the meter. The selected data format must match the format delivered by the device. See Modbus Data Formats for the supported formats.

ION Handle

The ION handle is the reference ID used by Power Monitoring Expert to identify the ION register that is mapped to the Modbus register. The ION handle is automatically assigned when you map a Modbus register from the Register Map to the ION register in the ION Tree.

Mask

The mask is used to read individual bit values from a Modbus register value. It is applied to the register data using an AND logic. For example, if the mask “0x4” is applied, then the register value displayed is only nonzero if the 3rd least significant bit in the register is a 1. You can apply masks to both numeric and Boolean data types.

NOTE: For integer values, the bit order of the mask corresponds to the bit order of the actual data and NOT the order in which the bytes representing the data are returned over Modbus. The high-order nibble of a 32-bit value is selected as ‘0xf0000000’ regardless of whether the format is U32_4321 or U32_2143. It should also be noted that the resulting value of a masked integer is NOT bit shifted. A mask of ‘0xf000’ applied to a 16-bit value of ‘0x1234’ results in ‘0x1000’ (4096 decimal) and NOT 1.

Modbus Address

This is the physical address of the Modbus register. You can find this address number in the device documentation. Enter the number in either decimal or hexadecimal format. The address range depends on the register type as follows:

COIL STATUS = 0xxxx
INPUT STATUS = 1xxxx
INPUT REGISTER = 3xxxx
HOLDING REGISTER = 4xxxx

NOTE: When entered in hexadecimal format, the value is only the register offset and does not include the Register Type identification.

Not Available Value

If the Modbus register has a control signal value to indicate when the register is not available, then you can enter this value in this field. The value must match the control signal value that is received from the device. This allows the user interfaces that display data for this register in Power Monitoring Expert to indicate when the value is not available.

Number of Registers

This option is only available if the data type is set to ASCII, ASCII-Reverse or Packed BCD. It allows you to specify the number of registers to retrieve from the device on a request.

Request Type

This tells the system whether the register is for read (R) or write (W). Other options are read/write (RW), and command write (CW).

Scale, Multiplier, Offset

The scale, multiplier and offset can be set to any decimal value within the range of -3.402823466 E + 38 to 3.402823466 E + 38. These values are applied to the measured value returned from the device in the following way:

ION value = (Modbus value - offset) * multiplier / scale

Instead of setting these values to a constant, you can also map them to ION registers that hold these values. This is useful if the value of the ION registers can be read from the device. It is also useful if you want to use the same scale, multiplier, or offset for multiple registers. In this case you can map all of the registers to the same ION registers, and set their values to constants. You can only map to registers already created in the Device Type Editor.

To map the scale, multiplier, or offset to an ION register, enter the ION handle value for this register, in hex, into the Scale, Multiplier, or Offset fields in the Modbus Register Map.

Setup Reg

Use this field to indicate that a register is a setup register on the device. Setup registers are read at a lower polling rate than regular data registers, improving the overall performance of the device driver.

Write Value

This only applies to pulse registers. Use this field to specify the value that is written to the Modbus register on the device when the ION register is pulsed.