Issue
How do I read unsigned 8-bit (byte) values from a Modbus holding register and represent the analog value in SmartStruxure?
Environment
SmartStruxure Enterprise Server, Automation Server, Modbus Integration
Cause
In this case, the Modbus holding register is a 16-bit unsigned value that is used by the Modbus device to represent two individual 8-bit values. The 16-bit unsigned value is an integer with a range of 0 to 65,535 and needs to be converted into two analog values.
Resolution
Use a SmartStruxure Modbus Analog Input Point for each value required. Each object will be configured to read the same Modbus register address with bitmask value applied prior to evaluating the value to determine the output.
For example: Read Modbus holding register 40001 that is a 16-bit unsigned value and decode as two analog values.
Under the Modbus device object - create a Modbus Register Group
Under the Modbus Register Group - create two Modbus Analog Input Points
Configure each point as follows:
Modbus Analog Input Point 40001 (AI-HighByte)
Register number 1
Register type 16 bit unsigned
Read function code 03
Bit mask - enable all bits 8 through 15
Modbus Digital Input Point 40001 (AI-LowByte)
Register number 1
Register type 16 bit unsigned
Read function code 03
Bit mask - enable all bits 0 through 7
Additional information can be found in the StruxureWare Building Operation Technical Reference Guide - Modbus Point Configuration (Bitmask) or online at http://help.sbo.schneider-electric.com (search Point Value and Configuration).