Unipi Technology Edge E410 Modbus register map
Modbus TCP I/O unit with 4 digital inputs, 2 digital outputs (with PWM) and 5 analog inputs (voltage, current, resistance)
- Official
- 72 registers
- Modbus TCP
- Revision 3 · 2026-11-10
- Identity: firmware, serial number
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP
- Unit ID
- 1
- TCP port
- 502
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 60 holding registers, 12 coils
- Groups
- 13
- Translation tables
- 1
- Revision
- 3 · 2026-11-10
- Added
- ()
- File
- maps/unipi/edge-e410.mbmap.json · 12 KB · history
- SHA-256
- a1174faf6bee001ea049dba89676904e7afc9dc9f82bfabd7f13e056dd2a2b66
- Manufacturer
- www.unipi.technology
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Firmware | Firmware version | holding 1000 | uint16 | |
| Serial number | PCB serial number | holding 1005 | uint32 CDAB |
Sources and notes
- Edge E410 Modbus map · version 2.0 Holding registers and Coils sheets (Unit ID 0 and Unit ID 1), Description sheet
Source: Edge E410 Modbus map v2.0, Unipi technology
- Registers are 0-based. Bit numbers: 0 = LSB, 15 = MSB. 32-bit values are assumed low word first (CDAB), as on the Unipi extensions; the manual does not state the word order.
- Registers marked Reserved in the manual are left out.
- Transport is not stated in the manual; Modbus TCP on port 502 is assumed.
- I/O, configuration and command registers are on Unit ID 1. The user LED, storage and connection registers (addresses 3000-4203) are on Unit ID 0. Defaults: debounce 50 (5 ms), DirectSwitch off, MWD timeout 2500 ms and disabled.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 3998 | bool bit 0 | W | ||||
| HR | 3998 | bool bit 1 | W | ||||
| HR | 3998 | bool bit 2 | W | ||||
| HR | 4000 | uint16 | R | % | |||
| HR | 4001 | uint16 | R | % | |||
| HR | 4200 | uint16 | R | ||||
| HR | 4201 | uint16 | R | ||||
| HR | 4202 | uint16 | R | dBm | |||
| HR | 4203 | uint16 | R | ||||
| CO | 3000 | bool | W | ||||
| CO | 3001 | bool | W | ||||
| CO | 3002 | bool | W | ||||
| HR | 0 | bool bit 0 | R | ||||
| HR | 0 | bool bit 1 | R | ||||
| HR | 0 | bool bit 2 | R | ||||
| HR | 0 | bool bit 3 | R | ||||
| HR | 1 | bool bit 0 | RW | ||||
| HR | 1 | bool bit 1 | RW | ||||
| HR | 2 | float32 CDAB | R | ||||
| HR | 4 | float32 CDAB | R | ||||
| HR | 6 | float32 CDAB | R | ||||
| HR | 8 | float32 CDAB | R | ||||
| HR | 10 | float32 CDAB | R | ||||
| HR | 12 | bool bit 0 | RW | ||||
| HR | 12 | bool bit 1 | RW | ||||
| HR | 13 | uint32 CDAB | RW | Pulse counter; writable to reset | |||
| HR | 15 | uint32 CDAB | RW | Pulse counter; writable to reset | |||
| HR | 17 | uint32 CDAB | RW | Pulse counter; writable to reset | |||
| HR | 19 | uint32 CDAB | RW | Pulse counter; writable to reset | |||
| HR | 21 | uint16 | RW | ||||
| HR | 22 | uint16 | RW | ||||
| HR | 24 | bool bit 0 | RW | ||||
| HR | 24 | bool bit 1 | RW | ||||
| HR | 25 | bool bit 0 | RW | ||||
| HR | 25 | bool bit 1 | RW | ||||
| HR | 1000 | uint16 | R | Firmware version (raw number) | |||
| HR | 1001 | uint16 bits 0–7 | R | ||||
| HR | 1001 | uint16 bits 8–15 | R | ||||
| HR | 1002 | uint16 bits 0–3 | R | ||||
| HR | 1002 | uint16 bits 4–7 | R | ||||
| HR | 1002 | uint16 bits 8–15 | R | ||||
| HR | 1003 | uint16 | R | ||||
| HR | 1004 | uint16 | R | ||||
| HR | 1005 | uint32 CDAB | R | ||||
| HR | 1008 | uint16 | RW | ms | MasterWatchDog timeout; default 2500 ms | ||
| HR | 1009 | uint16 | R | Reference voltage of the MCU (raw) | |||
| HR | 1010 | uint16 | RW | ms | ×0.1 | Raw unit is 100 us; default 50 (5 ms) | |
| HR | 1011 | uint16 | RW | ms | ×0.1 | Raw unit is 100 us; default 50 (5 ms) | |
| HR | 1012 | uint16 | RW | ms | ×0.1 | Raw unit is 100 us; default 50 (5 ms) | |
| HR | 1013 | uint16 | RW | ms | ×0.1 | Raw unit is 100 us; default 50 (5 ms) | |
| HR | 1014 | bool bit 0 | RW | ||||
| HR | 1014 | bool bit 1 | RW | ||||
| HR | 1015 | bool bit 0 | RW | ||||
| HR | 1015 | bool bit 1 | RW | ||||
| HR | 1016 | bool bit 0 | RW | ||||
| HR | 1016 | bool bit 1 | RW | ||||
| HR | 1017 | uint16 | RW | ||||
| HR | 1018 | uint16 | RW | ||||
| HR | 1019 | uint16 | RW | ||||
| HR | 1020 | uint16 | RW | ||||
| HR | 1021 | uint16 | RW | ||||
| HR | 1022 | uint16 | RW | ||||
| HR | 1023 | uint16 | RW | ||||
| CO | 0 | bool | RW | ||||
| CO | 1 | bool | RW | ||||
| CO | 2 | bool | R | ||||
| CO | 3 | bool | R | ||||
| CO | 4 | bool | R | ||||
| CO | 5 | bool | R | ||||
| CO | 1000 | bool | RW | Clears the MWD reboot indication | |||
| CO | 1002 | bool | W | ||||
| CO | 1003 | bool | W | Stores the current configuration so it is used at startup |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).