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
Related Topics
- How many Modbus networks can a JACE Support?
- How many Slave Devices can be supported on a Modbus Network
- How to read a 64-bit register in Niagara 4
Additional Resources
- Modbus Protocol Specification
- Niagara 4 Modbus Driver Documentation
- Data Type Conversion Reference
- Modbus Address Mapping Guide