Unipi Technology Extension xG18 Modbus register map
Modbus RTU extension with 8 temperature measurement channels
- Official
- 44 registers
- Modbus RTU
- 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 RTU
- Unit ID
- 15
- Serial
- 19200 8N1 · 19200 baud, 8 data bits, none parity, 1 stop bit
- 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
- 41 holding registers, 3 coils
- Groups
- 5
- Translation tables
- 2
- Revision
- 3 · 2026-11-10
- Added
- ()
- File
- maps/unipi/xg18.mbmap.json · 9 KB · history
- SHA-256
- edcb7d622eed43cd25aba9eaba8aa905039d96a3d5c37c635137935d4956c742
- 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
- Extension xG18 Modbus map · version 1.1 Holding registers, Coils and Description sheets
Source: Extension xG18 Modbus map v1.1, Unipi technology
- The sheets inside the document are marked v1.1 although the file name says v1.0.
- Registers are 0-based. 32-bit values use word order CDAB (low word first). Defaults: slave address 15, 19200 bps, 8N1.
- Registers marked Reserved in the manual are left out.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 0 | bool bit 0 | RW | ||||
| HR | 0 | bool bit 1 | RW | ||||
| HR | 1 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 2 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 3 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 4 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 5 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 6 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 7 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 8 | int16 | R | °C | ×0.01 | Reads -32768 when the sensor is unconnected or faulty | |
| HR | 9 | bool bit 0 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 1 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 2 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 3 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 4 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 5 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 6 | RW | Validity flag of the channel reading | |||
| HR | 9 | bool bit 7 | RW | Validity flag of the channel reading | |||
| HR | 1000 | uint16 | R | Firmware version of the extension (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 5000 ms | ||
| HR | 1009 | uint16 | R | Reference voltage of the MCU (raw) | |||
| HR | 1010 | uint16 | RW | s | Default 2 s | ||
| HR | 1011 | uint16 | RW | s | Default 2 s | ||
| HR | 1012 | uint16 | RW | s | Default 2 s | ||
| HR | 1013 | uint16 | RW | s | Default 2 s | ||
| HR | 1014 | uint16 | RW | s | Default 2 s | ||
| HR | 1015 | uint16 | RW | s | Default 2 s | ||
| HR | 1016 | uint16 | RW | s | Default 2 s | ||
| HR | 1017 | uint16 | RW | s | Default 2 s | ||
| HR | 1018 | uint16 bits 0–12 | RW | Applied after saving the configuration and restarting | |||
| HR | 1018 | bool bit 13 | RW | ||||
| HR | 1018 | bool bit 14 | RW | ||||
| HR | 1019 | uint16 | RW | Slave address, 1-254; default 15 | |||
| CO | 1000 | bool | RW | Clears the MWD reboot indication | |||
| CO | 1002 | bool | RW | ||||
| CO | 1003 | bool | RW | 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).