Protocols

Connect Any Modbus Device to Ignition SCADA

Ignition Modbus TCP Integration: Universal Protocol for Industrial Devices

Leverage Ignition Modbus TCP and RTU drivers to connect energy meters, PLCs, sensors, and industrial devices. Map registers to tags, configure data types, and optimize polling for reliable real-time data acquisition.

Overview

Modbus is the most widely deployed industrial communication protocol, supported by thousands of devices from hundreds of manufacturers. Ignition Modbus TCP integration provides native driver support to read and write Holding Registers, Input Registers, Coils, and Discrete Inputs from any compliant device on your network.

With Ignition's built-in Modbus driver, you can connect to both Modbus TCP devices over Ethernet and Modbus RTU devices over serial RS-485/RS-232 lines. The driver handles automatic reconnection, request optimization, and supports multi-device configurations on a single connection.

Key Benefits

  • Native Modbus TCP/IP and RTU driver included
  • Support for all Modbus function codes
  • Automatic register-to-tag mapping
  • Built-in data type conversion and scaling
  • Request optimization for reduced network traffic

Modbus TCP Architecture with Ignition

The Ignition Modbus TCP driver communicates with field devices over Ethernet or serial connections, maps registers to the Tag Provider, and exposes data to Vision, Perspective, and scripting clients.

┌─────────────────────────────────────────────────────────────────┐
│                     Ignition Clients                           │
│          (Perspective / Vision / Reporting)                    │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│                    Tag Provider                                │
│        HR100 = 2345  │  IR200 = 67.8  │  C0 = true            │
└──────────────────────────┬──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│               Ignition Modbus Driver                           │
│     (TCP/IP + RTU, request optimization, auto-reconnect)       │
└──────────┬───────────────┬──────────────────┬───────────────────┘
           │               │                  │
    Ethernet/TCP     Ethernet/TCP       RS-485 Serial
           │               │                  │
           ▼               ▼                  ▼
    ┌────────────┐  ┌────────────┐    ┌────────────┐
    │  Energy     │  │   PLC      │    │  Sensor    │
    │  Meter      │  │  (Modbus   │    │  (Modbus   │
    │ (Modbus TCP)│  │   TCP)     │    │   RTU)     │
    │  Unit ID: 1 │  │ Unit ID: 2 │    │ Unit ID: 3 │
    └────────────┘  └────────────┘    └────────────┘

Configuration Steps

1

Step 1: Add a Modbus TCP Device Connection

In the Ignition Gateway, navigate to Config > OPC UA > Device Connections and add a new Modbus TCP device. Specify the IP address, port (default 502), and Unit ID of the target device.

# Modbus TCP Device Configuration
# ─────────────────────────────────
Device Name:     EnergyMeter_01
Driver:          Modbus TCP
Hostname:        192.168.1.100
Port:            502
Unit ID:         1

# Connection Settings
Connect Timeout:       5000 ms
Reconnect Rate:        5000 ms
Max Requests Per Sec:  0 (unlimited)

# For Modbus RTU over TCP (serial-to-Ethernet converter):
Device Name:     TempSensor_RTU
Driver:          Modbus RTU over TCP
Hostname:        192.168.1.200
Port:            4001
Unit ID:         3
2

Step 2: Map Registers to Ignition Tags

Create OPC tags that reference Modbus register addresses. Ignition uses a simple address syntax: HR for Holding Registers, IR for Input Registers, C for Coils, and DI for Discrete Inputs, followed by the register number.

# Modbus Address Syntax in Ignition
# ────────────────────────────────────

# Holding Registers (Function Code 03 / 06 / 16)
HR100          # Read Holding Register 100 as Int16
HR100:INT32    # Read HR100-101 as 32-bit integer
HR100:FLOAT    # Read HR100-101 as 32-bit float

# Input Registers (Function Code 04)
IR200          # Read Input Register 200 as Int16
IR200:FLOAT    # Read IR200-201 as 32-bit float

# Coils (Function Code 01 / 05 / 15)
C0             # Read Coil 0 as Boolean
C100           # Read Coil 100 as Boolean

# Discrete Inputs (Function Code 02)
DI0            # Read Discrete Input 0 as Boolean
DI50           # Read Discrete Input 50 as Boolean

# Tag path example in Ignition:
# [Modbus]EnergyMeter_01/HR100:FLOAT
3

Step 3: Configure Data Types and Scaling

Modbus registers are 16-bit by default. Configure multi-register data types for 32-bit integers, floats, and strings. Apply scaling factors and offsets to convert raw register values into engineering units.

# Data Type Suffixes for Modbus Addresses
# ──────────────────────────────────────────
HR100          # INT16   (1 register)
HR100:INT32    # INT32   (2 registers)
HR100:UINT16   # UINT16  (1 register, unsigned)
HR100:UINT32   # UINT32  (2 registers, unsigned)
HR100:FLOAT    # FLOAT32 (2 registers, IEEE 754)
HR100:DFLOAT   # FLOAT64 (4 registers)
HR100:STRING20 # String of 20 characters (10 registers)

# Byte/Word Order (for multi-register types)
HR100:FLOAT:ABCD   # Big-endian (default)
HR100:FLOAT:CDAB   # Word-swapped
HR100:FLOAT:BADC   # Byte-swapped
HR100:FLOAT:DCBA   # Little-endian

# Scaling in Ignition Tag Configuration:
# Raw Value:  0 - 4095  (12-bit ADC)
# Scaled:     0.0 - 100.0 (engineering units)
# Mode:       Linear (y = mx + b)
# Scale High: 100.0
# Scale Low:  0.0
# Raw High:   4095
# Raw Low:    0
4

Step 4: Set Up Polling Rates and Optimization

Tune the Modbus polling rate to balance responsiveness with network load. Enable request optimization to combine multiple register reads into fewer Modbus transactions, reducing communication overhead.

# Polling and Optimization Settings
# ────────────────────────────────────

# Tag Group Configuration
Tag Group:          Default
Poll Rate:          1000 ms    # Read every 1 second
Stale Timeout:      5000 ms    # Mark stale after 5s
Leased Poll Rate:   250 ms     # When actively viewed

# Device-Level Optimization
Request Optimization:  Enabled
Max Registers/Read:    125      # Modbus limit = 125
Max Coils/Read:        2000     # Modbus limit = 2000
Max Gap Size:          8        # Gap between registers
                                # to merge into 1 request

# Example: Without optimization
# HR100, HR101, HR110, HR111 = 4 separate requests

# With optimization (Max Gap = 12):
# HR100-HR111 = 1 request (12 registers)

# Performance tip: Group tags by device and poll rate
# Fast Group (250ms):  Critical alarms, safety signals
# Normal Group (1s):   Process values, measurements
# Slow Group (30s):    Configuration, setpoints

Key Features

Modbus TCP/IP Support

Native Modbus TCP driver connects to any device over Ethernet. Supports multiple simultaneous connections, automatic reconnection, and configurable timeouts for robust communication.

Modbus RTU / Serial

Connect to Modbus RTU devices over RS-485 and RS-232 serial lines. Supports RTU over TCP for serial-to-Ethernet converters, enabling remote access to legacy field instruments.

Register Mapping

Intuitive address syntax for Holding Registers, Input Registers, Coils, and Discrete Inputs. Map any Modbus address directly to an Ignition tag with automatic type detection.

Data Type Conversion

Built-in support for INT16, INT32, FLOAT32, FLOAT64, unsigned types, and strings. Configurable byte and word order (ABCD, CDAB, BADC, DCBA) for compatibility with any manufacturer.

Use Cases

Energy Management

Energy Meter Reading and Power Monitoring

Connect Modbus-enabled energy meters (Schneider PM5xxx, Janitza, Socomec) to Ignition for real-time power monitoring, demand tracking, and energy cost analysis across multiple buildings or production lines.

Building Automation

HVAC Control and Building Automation

Integrate HVAC controllers, variable frequency drives (VFDs), and temperature sensors via Modbus TCP for centralized building management. Monitor and control setpoints, schedules, and alarms from Ignition dashboards.

Water & Wastewater

Water and Wastewater Treatment

Monitor flow meters, level sensors, pH analyzers, and pump controllers over Modbus RTU/TCP in water treatment plants. Collect real-time process data for compliance reporting and automated process control.

Technologies

Modbus TCP

Modbus protocol running over TCP/IP Ethernet networks for high-speed device communication on port 502.

Modbus RTU

Compact binary Modbus implementation for serial communication over RS-485 and RS-232 physical layers.

RS-485

Multi-drop serial bus standard supporting up to 32 devices on a single bus with distances up to 1200 meters.

Modbus Driver

Ignition's built-in OPC UA device driver for Modbus TCP and RTU protocol communication with industrial devices.

Tag Provider

Ignition's tag system that exposes Modbus register values as real-time tags for use in screens, scripts, and historians.

Frequently Asked Questions

Find answers to common questions about this integration.

Modbus TCP communicates over Ethernet using TCP/IP on port 502, while Modbus RTU uses serial connections (RS-485 or RS-232). Ignition supports both natively. For RTU devices connected through serial-to-Ethernet converters, use the "Modbus RTU over TCP" driver option.
Different manufacturers use different byte orders for 32-bit values. In Ignition, append the byte order to the address: HR100:FLOAT:ABCD (big-endian), HR100:FLOAT:CDAB (word-swapped), HR100:FLOAT:BADC (byte-swapped), or HR100:FLOAT:DCBA (little-endian). Check your device documentation or try CDAB first, as it is the most common alternative.
Yes. For Modbus TCP, create a separate device connection for each IP address. For devices sharing the same IP (e.g., behind a gateway), use different Unit IDs to address each one. Ignition can manage hundreds of Modbus device connections simultaneously with proper poll rate configuration.
Ignition supports poll rates as fast as 25 milliseconds per tag group. However, the effective rate depends on the number of tags, network latency, and the response time of your Modbus devices. Enable request optimization and group tags by update frequency to maximize throughput while minimizing device load.

Ready to Get Started?

Contact our team of experts to discuss your integration needs and get a customized solution.