MODBUS
Overview
The Modbus communications task provides a bidirectional high-level interface between an Integriti Controller and a Modbus automation system. The interface supports communication via:
- TCP/IP: TCP Master and TCP Slave
- Serial: RTU Master and RTU Slave
Supported Modbus entities: Coils, Discrete Inputs, Input Registers, and Holding Registers.
Automation Points in Integriti are used to map Integriti entities (inputs, auxiliaries) to Modbus entities. Virtual Expander Modules provide 32 virtual inputs and 32 virtual outputs each for this mapping. As of Integriti Version 20, Virtual Expander Modules no longer require a license.
The Modbus communications task:
- Scans Integriti entities in Automation Points for state changes and updates the Modbus system
- Processes incoming Modbus messages and updates Integriti entity states
Licensing
- 996228M — Modbus High-Level Interface license (one per controller)
- The controller must be fitted with a smart card
Prerequisites
- Integriti controller with smart card
- Modbus High-Level Interface license (996228M)
- Integriti management software
- Virtual Expander Modules (created on the controller for entity mapping)
- For Serial: UniBus UART module or integrated serial port
- For TCP/IP: Network connectivity to the Modbus automation system
Step-by-Step
1. Configure the Communications Task
Access via: Communications Tasks tab.
- Create a new communications task
- Enter a name and any necessary notes
- Set Type to Modbus
- Optionally set an Online Input (e.g., C01:Z33-Z99) — this input goes into alarm if the task fails
For TCP/IP connections:
- Enter the IP Address of the Modbus automation system (static address only)
- Enter the TCP Port
- Set Comms Mode to:
- TCP Master — Integriti acts as TCP client, connects to the specified IP/port
- TCP Slave — Integriti acts as TCP server on the specified port
For Serial connections:
-
Expand RS-232 Serial Interface
-
Set the Serial Channel to the port being used
-
Set Baud Rate to 9600 (or highest supported)
-
Set Comms Mode to:
- RTU Master — Integriti as master device
- RTU Slave — Integriti as slave device
-
Set an appropriate Poll Time — maximum time allowed between received packets before the link is considered failed and the Online Input triggers
-
Save and close
2. Create Virtual Expander Modules
Right-click the controller in the hardware tree → Add New → Virtual Module.
Each virtual module provides 32 virtual inputs and 32 virtual outputs.
3. Create Automation Points
Access via: Automation Points tab.
-
Create a new Automation Point
-
Enter a name and notes
-
Under Automation Setup, set Type to Modbus
-
Expand Misc options:
-
Set Type (Coil, Discrete Input, Input Register, or Holding Register)
-
Set Mapping Type (Inputs or Auxiliaries)
-
Set Slave Address (directs polling to the correct Modbus module)
-
Set Data Address (starting address for the mapping)
-
Set Number of Mapped Points (number of consecutive Modbus addresses)
Example: Data Address = 32, Number of Mapped Points = 32 → Modbus addresses 32-63 are mapped.
-
-
Expand Common Options:
- Click the ellipsis next to Mapped Entity and select the Integriti entity:
- Virtual Module — maps up to 32 consecutive Modbus addresses to inputs or auxiliaries
- Virtual Input — maps a single Modbus object to one input
- Virtual Auxiliary — maps a single Modbus object to one auxiliary
- Click the ellipsis next to Mapped Entity and select the Integriti entity:
-
Save and close
Example Mapping
Type = Coils, Mapping Type = Inputs, Data Address = 1, Mapped Entity = Virtual Module 1:
- Modbus Coils 1-32 are mapped to Virtual Module V01:Z01 through V01:Z32
- If Coil 10 is set in the Modbus system, V01:Z10 goes into alarm
Verification
- Confirm the communications task shows as Online
- Verify the Online Input is sealed (not in alarm)
- Test bidirectional control:
- Trigger a state change in the Modbus system and confirm the corresponding Integriti entity updates
- Change an Integriti entity state and confirm the Modbus system reflects the change
- Verify analog values for Input/Holding Register mappings with correct calibration
Troubleshooting
| Symptom | Possible Cause | Action |
|---|---|---|
| Communications task offline | Physical/network connection issue | Verify cabling, IP address, port |
| Communications task offline | Baud rate mismatch (serial) | Verify baud rate matches on both ends (9600 recommended) |
| Entity state not updating | Wrong Data Address or Slave Address | Check Automation Point address configuration |
| High latency / slow updates | Too many mapped points | Reduce mapped points; use Virtual Module mappings for contiguous blocks |
| High latency / slow updates (serial) | Baud rate too low | Use the highest baud rate possible |
| Intermittent updates | Poll Time too short | Increase Poll Time value |
Performance Guidelines
- TCP: Recommended maximum ~300 mapped points
- Serial: Recommended maximum ~100 mapped points
- Use Virtual Module mappings for large contiguous address blocks — polls up to 32 points in a single message
- Prefer TCP over serial for higher throughput
- Use highest possible baud rate for serial connections
Related Pages
- Integriti Comms Tasks Automation
- Integriti Communication Handlers
- Automation Points