12 DI / 12 DO
Compact Modbus RTU remote I/O module with twelve digital inputs with RPM measurement and pulse counting, and twelve digital NPN outputs with configurable ON/OFF delay control.

Key Features
- 12 Digital Inputs, 24V compatible
- 12 Digital NPN Outputs
- All inputs have latched status – Never miss an input change
- All inputs have individual counter functions with retentive memory storage
- 4 High speed production counter and RPM measurement
- Configurable digital output ON delay and OFF delay
- Modbus RTU over RS-485
- Rotary address switch for address selection from 1 to 99
- Wide supported baud rates from 300 to 115200
- DIN rail or wall mountable
- Dimensions: 110 mm × 140 mm × 85 mm (L × W × H)
ModViz – Modbus Configuration & Visualization Tool
ModViz is a powerful yet simple configuration and visualization tool designed to work seamlessly with Veawe Modbus I/O modules. It enables engineers, system integrators, and technicians to quickly configure, monitor, and test field devices through an intuitive graphical interface.
The software can be downloaded from https://veawe.io/modviz/

Ordering Information
| Product Code | Description |
|---|---|
| UIO-12DI-12DO | 12-Channel Digital Input / 12-Channel Digital Output Modbus Remote I/O Module |
| UIO-24DI-24DO | 24-Channel Digital Output and Input Modbus Remote I/O Module |
| UIO-24DI | 24-Channel Digital Input Modbus Remote I/O Module |
| UIO-24DO | 24-Channel Digital Output Modbus Remote I/O Module |
| UIO-4DI-4DO | 4-Channel Digital Output and Input Modbus Remote I/O Module |
| UIO-8DI | 8-Channel Digital Input Modbus Remote I/O Module |
Applications
- Reading 12 digital PNP input signals and simultaneously controlling 12 NPN outputs from a single Modbus module
- Counting pulses from flow meters, encoders, and proximity sensors with retentive memory
- Measuring production rates and machine RPM using 4 high speed counter channels
- Driving relays, solenoids, and indicator lamps with configurable per-channel ON/OFF delay
- Building compact Modbus I/O expansion for PLCs and SCADA systems where both input and output are needed
- Replacing traditional timer relays with software-configurable delay logic on each output channel
Specifications
| Parameter | Value |
|---|---|
| Mounting | DIN rail or wall mountable |
| Dimensions | 110 mm × 140 mm × 85 mm (L × W × H) |
Electrical Specifications
| Parameter | Value |
|---|---|
| Supply Voltage | 15–24V DC |
| Digital Output Rating | 24VDC 500mA max, NPN Control |
| Digital Input Voltage | 15–24V DC, PNP Inputs |
| Communication Port | RS-485 |
Input/Output Specifications
| Parameter | Value |
|---|---|
| Digital Input Channel Count | 12 |
| Input Type | Digital PNP, 24V compatible |
| Digital Output Channel Count | 12 |
| Output Type | Digital NPN |
| Slow Counter Speed | Up to 1 kHz |
| High Speed Counter Channels | 4 (X1, X2, X5, X6) |
| Counter Memory | Retentive on power cycles |
| ON/OFF Delay Resolution | 10 ms (1 count = 10 ms) |
| Maximum Output Delay | 655.35 seconds (65535 counts) |
Isolation & Protection Specifications
| Parameter | Value | Notes / Description |
|---|---|---|
| Supply Reverse Polarity Protection | ||
| Supply Isolation | ||
| Transient Voltage Clamping | ||
| EMC & Immunity Standards | ||
| RS-485 Bus ESD Protection |
Mechanical Dimensions

Terminal Details
Top Connector – RS-485
| Pin | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Signal | A | B | Shield | NC | NC |
Bottom Connector – Power
| Pin | 1 | 2 |
|---|---|---|
| Signal | 24V | GND |
Digital Input Connector
| Pin | Signal |
|---|---|
| 1–12 | X1–X12 |
Digital Output Connector
| Pin | Signal |
|---|---|
| 1–12 | Y1–Y12 |
Wiring Diagrams
Note: All images and connection diagrams shown are for illustrative purposes only and may differ from the actual product.
Communication Interface
| Protocol | Physical Layer | Default Baud Rate | Default Format |
|---|---|---|---|
| Modbus RTU | RS-485 | 19200 | 8N1 |
Basic Process Registers
| Signal | Address | Type | Description |
|---|---|---|---|
| DI1–DI12 | 10001–10012 | Bit | DI1 to DI12 live digital input status |
| DO1–DO12 | 00001–00012 | Bit | DO1 to DO12 output control and status |
Supported Modbus Function Codes
| Read | Write |
|---|---|
| 01 – Read Coils | 05 – Write Single Coil |
| 02 – Read Discrete Inputs | 06 – Write Single Register |
| 03 – Read Holding Registers | 15 – Write Multiple Coils |
| 04 – Read Input Registers | 16 – Write Multiple Registers |
Register Map Overview
| Function | Address Range | Type | Description |
|---|---|---|---|
| Discrete Inputs | 10001–10012 | Bit | DI1 to DI12 live digital input status |
| Discrete Inputs | 10201–10212 | Bit | DI1 to DI12 latched status, auto-clears on read |
| Coils | 00001–00012 | Bit | DO1 to DO12 digital output control and status |
| Coils | 00251–00262 | Bit | Reset DI1 to DI12 slow counters |
| Coils | 00401–00412 | Bit | Pending DO1 to DO12 delay status and override |
| Input Registers | 30251–30262 | int16 | DI1 to DI12 slow counter values (1 kHz) |
| Input Registers | 30801–30804 | int16 | X1, X2, X5, X6 RPS values |
| Input Registers | 30811–30814 | int16 | X1, X2, X5, X6 RPM values |
| Input Registers | 30821–30828 | int32 | X1, X2, X5, X6 production counters |
| Holding Registers | 40401–40412 | int16 | DO1 to DO12 ON delay |
| Holding Registers | 40451–40462 | int16 | DO1 to DO12 OFF delay |
| Holding Registers | 40801–40804 | int16 | HSC1 to HSC4 mode |
| Holding Registers | 40811–40814 | int16 | HSC1 to HSC4 PPR |
| Holding Registers | 40101 | int16 | Modbus server (slave) address |
Detailed Register Tables
Discrete Inputs (1xxxx)
Digital Live Input Status
| Address | Type | Description |
|---|---|---|
| 10001–10012 | Bit | DI1 to DI12 live digital input status |
Digital Latched Input Status
| Address | Type | Description |
|---|---|---|
| 10201–10212 | Bit | DI1 to DI12 latched status, auto-clears on read |

Latched input status stays high even after the input goes low and auto-clears only after the master reads this bit. This ensures no input state change is missed by the controller.
Coils (0xxxx)
Digital Output Control
| Address | Type | Description |
|---|---|---|
| 00001–00012 | Bit | DO1 to DO12 digital output control and status |
Slow Counter Reset
| Address | Type | Description |
|---|---|---|
| 00251–00262 | Bit | Reset DI1 to DI12 slow counter |

Writing 1 to the coil resets the corresponding slow counter value. This bit is self-clearing and the reset value is not stored on power cycle.
Pending Output State
| Address | Type | Description |
|---|---|---|
| 00401–00412 | Bit | Pending DO1 to DO12 state while ON/OFF delay timer is active |
Writing 1 to a pending coil overrides the delay timer and immediately switches the output ON.
Production Counter Reset
| Address | Type | Description |
|---|---|---|
| 00801–00804 | Bit | Reset production counter for high speed counters X1, X2, X5, X6 |

Writing 1 to the coil resets the corresponding retentive production counter value. This bit is self-clearing.
Input Registers (3xxxx)
Digital Inputs Slow Counter Values
| Address | Type | Description |
|---|---|---|
| 30251–30262 | int16 | DI1 to DI12 slow counter, up to 1 kHz (Retentive memory on power cycles) |

DI state changes are counted and stored in these registers. Counter values are retained across power cycles.
High Speed Counter Values
| Address | Type | Description |
|---|---|---|
| 30801–30804 | int16 | X1, X2, X5, X6 RPS value |
| 30811–30814 | int16 | X1, X2, X5, X6 RPM value |
| 30821–30828 | int32 | X1, X2, X5, X6 production counter (Retentive memory on power cycles) |

Holding Registers (4xxxx)
Digital Output Delay Configuration
| Address | Type | Description |
|---|---|---|
| 40401–40412 | int16 | DO1 to DO12 ON delay |
| 40451–40462 | int16 | DO1 to DO12 OFF delay |

Delay Resolution: 1 = 10 ms, 100 = 1 second. Maximum value: 65535 = 655.35 seconds.
Communication Settings
| Address | Type | Description |
|---|---|---|
| 40101 | int16 | Modbus server (slave) address (switch value) |
| 40102 | int16 | Baud rate selection |
| 40103 | int16 | Serial format selection |
| 40106 | int16 | Watchdog interval. Example: 10 = 1 second |
| 40107 | int16 | Watchdog action. 0 = Modbus Watchdog Disabled, 1 = Reset Outputs on Modbus Watchdog Expire |
Modbus Address (40101)
This is set using the rotary or DIP switches.
Baud Rate Register (40102) and Serial Format Register (40103)
| Value | Baud Rate | Value | Baud Rate | Value | Format |
|---|---|---|---|---|---|
| 0 | 300 | 7 | 9600 | 0 | 8N1 |
| 1 | 600 | 8 | 14400 | 1 | 8E1 |
| 2 | 1200 | 9 | 19200 | 2 | 8O1 |
| 3 | 1800 | 10 | 38400 | 3 | 8N2 |
| 4 | 2400 | 11 | 57600 | 4 | 8E2 |
| 5 | 4800 | 12 | 62500 | 5 | 8O2 |
| 6 | 7200 | 13 | 115200 |

Default: 19200 baud, 8N1.
Default Settings
| Setting | Default |
|---|---|
| Slave Address | As per switch position |
| Baud Rate | 19200 |
| Serial Format | 8N1 |
Configuration Settings
Default Mode
Default mode is useful when communication settings are unknown.
When the rotary address switch is set to 00:
- Server address = 1
- Baud rate = 19200
- Serial format = 8N1

Changing to default mode does not overwrite stored settings. Stored settings remain unchanged until written through Modbus.
Watchdog Action
The Bus Watchdog automatically resets all outputs to their initial safe state if communication with the Modbus client is lost. This helps ensure safe operation during cable disconnection, client failure, or other communication faults.

Configurable timeout: 1 to 600 seconds (100 ms resolution).
LED Indications and Diagnostics
| LED | Description |
|---|---|
| Power | Module power ON indication |
| Tx | RS-485 transmit activity |
| Rx | RS-485 receive activity |
| X1–X12 | Digital input status |
| Y1–Y12 | Digital output status |
Revision History
| Revision | Date | Changes |
|---|---|---|
| Rev 1.0 | 2026-08-10 | Initial datasheet, HW Version = 3, FW Version = 2 |
Get the latest version of this datasheet : click here..
Support
Website: www.veawe.io
Email: info@veawe.io