Skip to Content
ModbusHow do the Niagara Point types translate to Modbus Register Types

How do the Niagara Point types translate to Modbus Register Types

Understanding how Niagara point types map to Modbus register types is essential for proper Modbus integration. This guide provides comprehensive mapping information between Niagara point types and Modbus register addressing and data types.

Overview

Niagara point types map to Modbus registers as follows:

  • Point Types: Various Niagara point types (Boolean, Numeric, String, etc.)
  • Register Types: Modbus register types (Coils, Discrete Inputs, Holding Registers, Input Registers)
  • Address Mapping: Address mapping between Niagara and Modbus
  • Data Conversion: Data type conversion between systems

Modbus Register Types

Coils (0xxxx)

Characteristics:

  • Read/Write: Read and write capability
  • Boolean Values: Single bit values (ON/OFF, 1/0)
  • Address Range: 00001-09999
  • Function Codes: Read (01), Write Single (05), Write Multiple (15)

Niagara Mapping:

  • Boolean Points: Maps to Boolean point type
  • Write Capability: Supports write operations
  • Single Bit: Represents single boolean value

Discrete Inputs (1xxxx)

Characteristics:

  • Read-Only: Read-only access
  • Boolean Values: Single bit values (ON/OFF, 1/0)
  • Address Range: 10001-19999
  • Function Code: Read (02)

Niagara Mapping:

  • Boolean Points: Maps to Boolean point type (read-only)
  • Input Status: Represents input status
  • No Write: Cannot write to discrete inputs

Holding Registers (4xxxx)

Characteristics:

  • Read/Write: Read and write capability
  • 16-Bit Values: 16-bit register values
  • Address Range: 40001-49999
  • Function Codes: Read (03), Write Single (06), Write Multiple (16)

Niagara Mapping:

  • Numeric Points: Maps to various numeric point types
  • Write Capability: Supports write operations
  • Multiple Data Types: Supports integers, floats, strings, etc.

Input Registers (3xxxx)

Characteristics:

  • Read-Only: Read-only access
  • 16-Bit Values: 16-bit register values
  • Address Range: 30001-39999
  • Function Code: Read (04)

Niagara Mapping:

  • Numeric Points: Maps to various numeric point types (read-only)
  • Input Values: Represents input values
  • No Write: Cannot write to input registers

Niagara Point Type Mappings

Boolean Points

Modbus Mapping:

  • Coils (0xxxx): Read/write boolean values
  • Discrete Inputs (1xxxx): Read-only boolean values

Configuration:

Point Type: Boolean
Register Type: Coil (0xxxx) or Discrete Input (1xxxx)
Register Address: 0-9999 (coils) or 10000-19999 (discrete inputs)
Data Type: Boolean (single bit)

Example:

  • Niagara Point: "Pump Status" (Boolean)
  • Modbus Register: Coil 00001
  • Value: ON (1) or OFF (0)

Numeric Points - Integer Types

Modbus Mapping:

  • Holding Registers (4xxxx): Read/write integer values
  • Input Registers (3xxxx): Read-only integer values

16-Bit Integer:

Point Type: Numeric (Integer)
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: 1 register
Data Type: INT16 (signed) or UINT16 (unsigned)
Value Range: -32768 to 32767 (signed) or 0 to 65535 (unsigned)

32-Bit Integer:

Point Type: Numeric (Integer)
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: 2 registers
Data Type: INT32 (signed) or UINT32 (unsigned)
Byte Order: Little Endian or Big Endian
Value Range: -2147483648 to 2147483647 (signed) or 0 to 4294967295 (unsigned)

64-Bit Integer:

Point Type: Numeric (Integer)
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: 4 registers
Data Type: INT64 (signed) or UINT64 (unsigned)
Byte Order: Little Endian or Big Endian
Value Range: Very large range (signed/unsigned)

Numeric Points - Floating Point Types

Modbus Mapping:

  • Holding Registers (4xxxx): Read/write float values
  • Input Registers (3xxxx): Read-only float values

32-Bit Float:

Point Type: Numeric (Float)
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: 2 registers
Data Type: FLOAT32 (IEEE 754)
Byte Order: Little Endian or Big Endian
Precision: Single precision (7 decimal digits)

64-Bit Float:

Point Type: Numeric (Double)
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: 4 registers
Data Type: FLOAT64 (IEEE 754)
Byte Order: Little Endian or Big Endian
Precision: Double precision (15 decimal digits)

String Points

Modbus Mapping:

  • Holding Registers (4xxxx): Read/write string values
  • Input Registers (3xxxx): Read-only string values

String Configuration:

Point Type: String
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: Variable (depends on string length)
Data Type: ASCII or UTF-8
Byte Order: Per character encoding
String Length: Maximum length depends on register count

Example:

  • String Length: 10 characters
  • Register Count: 5 registers (2 bytes per register = 10 bytes)
  • Encoding: ASCII (1 byte per character)

Enum Points

Modbus Mapping:

  • Holding Registers (4xxxx): Read/write enum values
  • Input Registers (3xxxx): Read-only enum values
  • Coils (0xxxx): Boolean enum (2 states)

Enum Configuration:

Point Type: Enum
Register Type: Holding Register (4xxxx) or Input Register (3xxxx)
Register Count: 1 register (typically)
Data Type: UINT16 (typically)
Enum Values: Mapped to register values (0, 1, 2, ...)

Address Mapping

Modbus Address Formats

1-Based Addressing (Common):

  • Coils: 00001-09999
  • Discrete Inputs: 10001-19999
  • Input Registers: 30001-39999
  • Holding Registers: 40001-49999

0-Based Addressing:

  • Coils: 0-9998
  • Discrete Inputs: 10000-19998
  • Input Registers: 30000-39998
  • Holding Registers: 40000-49998

Niagara Configuration:

  • Address Format: Configure address format in driver
  • Address Entry: Enter address in configured format
  • Address Conversion: Driver handles address conversion

Address Calculation Examples

Example 1: Holding Register 40001

  • 1-Based: 40001
  • 0-Based: 40000
  • Function Code: 03 (Read Holding Registers)
  • Modbus Address: 0 (0-based) or 1 (1-based)

Example 2: Coil 00005

  • 1-Based: 00005
  • 0-Based: 4
  • Function Code: 01 (Read Coils)
  • Modbus Address: 4 (0-based) or 5 (1-based)

Data Type Conversion

Integer Conversions

16-Bit to 32-Bit:

  • Read 2 Registers: Combine 2 registers into 32-bit value
  • Byte Order: Handle byte order correctly
  • Sign Extension: Handle sign extension for signed values

32-Bit to 64-Bit:

  • Read 4 Registers: Combine 4 registers into 64-bit value
  • Byte Order: Handle byte order correctly
  • Sign Extension: Handle sign extension for signed values

Float Conversions

32-Bit Float:

  • IEEE 754 Format: Standard IEEE 754 single precision
  • 2 Registers: Requires 2 registers (4 bytes)
  • Byte Order: Handle byte order correctly

64-Bit Float:

  • IEEE 754 Format: Standard IEEE 754 double precision
  • 4 Registers: Requires 4 registers (8 bytes)
  • Byte Order: Handle byte order correctly

String Conversions

ASCII Strings:

  • 1 Byte per Character: ASCII encoding
  • Register Mapping: 2 characters per register
  • Null Termination: Handle null termination

UTF-8 Strings:

  • Variable Bytes: UTF-8 encoding (1-4 bytes per character)
  • Register Mapping: Map bytes to registers
  • Encoding Handling: Handle UTF-8 encoding correctly

Configuration Examples

Example 1: Boolean Point (Coil)

Niagara Point Type: Boolean
Modbus Register Type: Coil
Modbus Address: 00001 (1-based) or 0 (0-based)
Function Code: 01 (Read), 05 (Write Single)
Data Type: Boolean (1 bit)
Read/Write: Read and Write

Example 2: 16-Bit Integer (Holding Register)

Niagara Point Type: Numeric (Integer)
Modbus Register Type: Holding Register
Modbus Address: 40001 (1-based) or 40000 (0-based)
Function Code: 03 (Read), 06 (Write Single)
Register Count: 1
Data Type: INT16 or UINT16
Read/Write: Read and Write

Example 3: 32-Bit Float (Input Register)

Niagara Point Type: Numeric (Float)
Modbus Register Type: Input Register
Modbus Address: 30001 (1-based) or 30000 (0-based)
Function Code: 04 (Read)
Register Count: 2
Data Type: FLOAT32 (IEEE 754)
Byte Order: Little Endian
Read/Write: Read Only

Example 4: String (Holding Register)

Niagara Point Type: String
Modbus Register Type: Holding Register
Modbus Address: 40100 (1-based) or 40099 (0-based)
Function Code: 03 (Read), 16 (Write Multiple)
Register Count: 10 (for 20-character string)
Data Type: ASCII
Encoding: ASCII (1 byte per character)
Read/Write: Read and Write

Best Practices

Point Type Selection

  • Match Data Type: Select point type matching Modbus data type
  • Register Type: Choose appropriate register type (read/write capability)
  • Data Range: Ensure data range is appropriate
  • Precision: Select appropriate precision for numeric values

Address Management

  • Consistent Format: Use consistent address format
  • Documentation: Document address mappings
  • Address Planning: Plan address allocation
  • Address Gaps: Leave gaps for future expansion

Data Conversion

  • Byte Order: Verify byte order settings
  • Data Validation: Validate converted data
  • Error Handling: Handle conversion errors
  • Testing: Test conversions with known values

Additional Resources

  • Modbus Protocol Specification
  • Niagara 4 Modbus Driver Documentation
  • Data Type Conversion Reference
  • Modbus Address Mapping Guide