Advantech ADAM-4150 Modbus register map
Isolated digital I/O module, 7 DI with counters and 8 DO with pulse output, RS485 Modbus RTU
- Official
- 164 registers
- Modbus RTU
- Revision 2 · 2026-10-17
- Identity: model
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
- 1
- Serial
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 1-based · wire address = address − 1
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 113 holding registers, 51 coils
- Groups
- 8
- Revision
- 2 · 2026-10-17
- Added
- ()
- File
- maps/advantech/adam-4150.mbmap.json · 24 KB · history
- SHA-256
- fee062137d30635877e0654d0e802fa19f659b92b98d72319b8b247fbf3b2852
- Manufacturer
- advantech.com
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 |
|---|---|---|---|---|
| Model | Module name 1 | holding 211 | uint16 | 0x4150 = ADAM-4150 |
Sources and notes
- ADAM-4100 Series User's Manual · version Edition 1.3 Appendix B.3; type codes from table 4-1
Source: Advantech, "ADAM-4100 Series User's Manual", Edition 1.3, Appendix B.3 (I/O Modbus mapping table)
- Addresses are the Modicon numbers of the manual (00001 = coil 1, 10001 = discrete input 1, 40001 = holding register 1).
- The module ships with the ADAM ASCII protocol; the manual's appendix explains how to switch it to Modbus RTU.
- 32-bit values (counters, pulse settings, filter and delay widths) use two registers; the manual does not give their word order or the units of the filter and delay widths.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| CO | 1 | bool | R | ||||
| CO | 2 | bool | R | ||||
| CO | 3 | bool | R | ||||
| CO | 4 | bool | R | ||||
| CO | 5 | bool | R | ||||
| CO | 6 | bool | R | ||||
| CO | 7 | bool | R | ||||
| CO | 17 | bool | W | ||||
| CO | 18 | bool | W | ||||
| CO | 19 | bool | W | ||||
| CO | 20 | bool | W | ||||
| CO | 21 | bool | W | ||||
| CO | 22 | bool | W | ||||
| CO | 23 | bool | W | ||||
| CO | 24 | bool | W | ||||
| CO | 33 | bool | RW | ||||
| CO | 34 | bool | RW | Write 1 to clear the counter | |||
| CO | 35 | bool | RW | Write to clear | |||
| CO | 36 | bool | RW | Latch status; write to clear | |||
| CO | 37 | bool | RW | ||||
| CO | 38 | bool | RW | Write 1 to clear the counter | |||
| CO | 39 | bool | RW | Write to clear | |||
| CO | 40 | bool | RW | Latch status; write to clear | |||
| CO | 41 | bool | RW | ||||
| CO | 42 | bool | RW | Write 1 to clear the counter | |||
| CO | 43 | bool | RW | Write to clear | |||
| CO | 44 | bool | RW | Latch status; write to clear | |||
| CO | 45 | bool | RW | ||||
| CO | 46 | bool | RW | Write 1 to clear the counter | |||
| CO | 47 | bool | RW | Write to clear | |||
| CO | 48 | bool | RW | Latch status; write to clear | |||
| CO | 49 | bool | RW | ||||
| CO | 50 | bool | RW | Write 1 to clear the counter | |||
| CO | 51 | bool | RW | Write to clear | |||
| CO | 52 | bool | RW | Latch status; write to clear | |||
| CO | 53 | bool | RW | ||||
| CO | 54 | bool | RW | Write 1 to clear the counter | |||
| CO | 55 | bool | RW | Write to clear | |||
| CO | 56 | bool | RW | Latch status; write to clear | |||
| CO | 57 | bool | RW | ||||
| CO | 58 | bool | RW | Write 1 to clear the counter | |||
| CO | 59 | bool | RW | Write to clear | |||
| CO | 60 | bool | RW | Latch status; write to clear | |||
| CO | 61 | bool | R | ||||
| CO | 62 | bool | R | ||||
| CO | 63 | bool | R | ||||
| CO | 64 | bool | R | ||||
| CO | 65 | bool | R | ||||
| CO | 66 | bool | R | ||||
| CO | 67 | bool | R | ||||
| CO | 68 | bool | R | ||||
| HR | 1 | uint32 ABCD | R | ||||
| HR | 3 | uint32 ABCD | R | ||||
| HR | 5 | uint32 ABCD | R | ||||
| HR | 7 | uint32 ABCD | R | ||||
| HR | 9 | uint32 ABCD | R | ||||
| HR | 11 | uint32 ABCD | R | ||||
| HR | 13 | uint32 ABCD | R | ||||
| HR | 15 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 17 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 19 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 21 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 23 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 25 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 27 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 29 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 31 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 33 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 35 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 37 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 39 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 41 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 43 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 45 | uint32 ABCD | RW | ms | ×0.1 | ||
| HR | 47 | uint32 ABCD | RW | 0 = continuous | |||
| HR | 49 | uint32 ABCD | RW | ||||
| HR | 51 | uint32 ABCD | RW | ||||
| HR | 53 | uint32 ABCD | RW | ||||
| HR | 55 | uint32 ABCD | RW | ||||
| HR | 57 | uint32 ABCD | RW | ||||
| HR | 59 | uint32 ABCD | RW | ||||
| HR | 61 | uint32 ABCD | RW | ||||
| HR | 63 | uint32 ABCD | RW | ||||
| HR | 65 | uint32 ABCD | RW | ||||
| HR | 67 | uint32 ABCD | RW | ||||
| HR | 69 | uint32 ABCD | RW | ||||
| HR | 71 | uint32 ABCD | RW | ||||
| HR | 73 | uint32 ABCD | RW | ||||
| HR | 75 | uint32 ABCD | RW | ||||
| HR | 77 | uint32 ABCD | RW | ||||
| HR | 79 | uint16 bits 0–2 | RW | ||||
| HR | 79 | bool bit 5 | RW | ||||
| HR | 79 | bool bit 6 | RW | ||||
| HR | 79 | bool bit 7 | RW | ||||
| HR | 80 | uint16 bits 0–2 | RW | ||||
| HR | 80 | bool bit 5 | RW | ||||
| HR | 80 | bool bit 6 | RW | ||||
| HR | 80 | bool bit 7 | RW | ||||
| HR | 81 | uint16 bits 0–2 | RW | ||||
| HR | 81 | bool bit 5 | RW |
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).