Issue
How do I read unsigned 8-bit (byte) values from a Modbus holding register and represent the analog value in Building Operation?
Product Line
EcoStruxure Building Operation
Environment
- Building Operation Enterprise Server
- Building Operation Automation Server
- Building Operation Automation Server Premium
- Building Operation Automation Server Bundled
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 Building Operation Modbus Analog Input Point for each value required. Each object will be configured to read the same Modbus register address with the bitmask value applied before evaluating the value to determine the output.
For example: Read Modbus holding register 40001 which 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
- Bitmask - 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
- Bitmask - enable all bits 0 through 7
Additional information can be found in the Building Operation Technical Reference Guide - Modbus Point Configuration (Bitmask) or WebHelp at Point and Value Configuration