{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Advantech", "model": "ADAM-4168", "models": ["ADAM-4168"], "vendor_website": "advantech.com", "description": "8-channel relay output module with pulse output, RS485 Modbus RTU", "revision": 2, "revised": "2026-10-17", "source": "Advantech, \"ADAM-4100 Series User's Manual\", Edition 1.3, Appendix B.4 (I/O Modbus mapping table)", "sources": [{"title": "ADAM-4100 Series User's Manual", "version": "Edition 1.3", "url": "https://support.elmark.com.pl/advantech/ia/CDROMS/ADAM-4k6k%20Series/Manual/ADAM-4100/ADAM-4100%20series%20user%20manual%20Ed.1.3.pdf", "note": "Appendix B.4; type codes from table 4-1"}], "notes": [ "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 (pulse settings and delays) use two registers; the manual does not give their word order or the units of the delays.", "The manual leaves the module name values blank for this module." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "byte_order": "big", "word_order": "big", "address_base": 1, "x_status": "official", "registers": [ {"name": "Relay0", "group": "Outputs", "area": "coil", "address": 17, "type": "bool", "access": "RW"}, {"name": "Relay1", "group": "Outputs", "area": "coil", "address": 18, "type": "bool", "access": "RW"}, {"name": "Relay2", "group": "Outputs", "area": "coil", "address": 19, "type": "bool", "access": "RW"}, {"name": "Relay3", "group": "Outputs", "area": "coil", "address": 20, "type": "bool", "access": "RW"}, {"name": "Relay4", "group": "Outputs", "area": "coil", "address": 21, "type": "bool", "access": "RW"}, {"name": "Relay5", "group": "Outputs", "area": "coil", "address": 22, "type": "bool", "access": "RW"}, {"name": "Relay6", "group": "Outputs", "area": "coil", "address": 23, "type": "bool", "access": "RW"}, {"name": "Relay7", "group": "Outputs", "area": "coil", "address": 24, "type": "bool", "access": "RW"}, {"name": "Relay0 continuous pulse", "group": "Pulse output", "area": "coil", "address": 33, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay1 continuous pulse", "group": "Pulse output", "area": "coil", "address": 34, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay2 continuous pulse", "group": "Pulse output", "area": "coil", "address": 35, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay3 continuous pulse", "group": "Pulse output", "area": "coil", "address": 36, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay4 continuous pulse", "group": "Pulse output", "area": "coil", "address": 37, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay5 continuous pulse", "group": "Pulse output", "area": "coil", "address": 38, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay6 continuous pulse", "group": "Pulse output", "area": "coil", "address": 39, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay7 continuous pulse", "group": "Pulse output", "area": "coil", "address": 40, "type": "bool", "access": "R", "enum": {"0": "Non-continuous", "1": "Continuous"}}, {"name": "Relay0 pulse low time", "group": "Pulse output", "area": "holding", "address": 1, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay1 pulse low time", "group": "Pulse output", "area": "holding", "address": 3, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay2 pulse low time", "group": "Pulse output", "area": "holding", "address": 5, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay3 pulse low time", "group": "Pulse output", "area": "holding", "address": 7, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay4 pulse low time", "group": "Pulse output", "area": "holding", "address": 9, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay5 pulse low time", "group": "Pulse output", "area": "holding", "address": 11, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay6 pulse low time", "group": "Pulse output", "area": "holding", "address": 13, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay7 pulse low time", "group": "Pulse output", "area": "holding", "address": 15, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay0 pulse high time", "group": "Pulse output", "area": "holding", "address": 17, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay1 pulse high time", "group": "Pulse output", "area": "holding", "address": 19, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay2 pulse high time", "group": "Pulse output", "area": "holding", "address": 21, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay3 pulse high time", "group": "Pulse output", "area": "holding", "address": 23, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay4 pulse high time", "group": "Pulse output", "area": "holding", "address": 25, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay5 pulse high time", "group": "Pulse output", "area": "holding", "address": 27, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay6 pulse high time", "group": "Pulse output", "area": "holding", "address": 29, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay7 pulse high time", "group": "Pulse output", "area": "holding", "address": 31, "type": "uint32", "scale": 0.1, "unit": "ms", "access": "RW"}, {"name": "Relay0 absolute pulses", "group": "Pulse output", "area": "holding", "address": 33, "type": "uint32", "access": "RW", "description": "0 = continuous"}, {"name": "Relay1 absolute pulses", "group": "Pulse output", "area": "holding", "address": 35, "type": "uint32", "access": "RW"}, {"name": "Relay2 absolute pulses", "group": "Pulse output", "area": "holding", "address": 37, "type": "uint32", "access": "RW"}, {"name": "Relay3 absolute pulses", "group": "Pulse output", "area": "holding", "address": 39, "type": "uint32", "access": "RW"}, {"name": "Relay4 absolute pulses", "group": "Pulse output", "area": "holding", "address": 41, "type": "uint32", "access": "RW"}, {"name": "Relay5 absolute pulses", "group": "Pulse output", "area": "holding", "address": 43, "type": "uint32", "access": "RW"}, {"name": "Relay6 absolute pulses", "group": "Pulse output", "area": "holding", "address": 45, "type": "uint32", "access": "RW"}, {"name": "Relay7 absolute pulses", "group": "Pulse output", "area": "holding", "address": 47, "type": "uint32", "access": "RW"}, {"name": "Relay0 incremental pulses", "group": "Pulse output", "area": "holding", "address": 49, "type": "uint32", "access": "RW"}, {"name": "Relay1 incremental pulses", "group": "Pulse output", "area": "holding", "address": 51, "type": "uint32", "access": "RW"}, {"name": "Relay2 incremental pulses", "group": "Pulse output", "area": "holding", "address": 53, "type": "uint32", "access": "RW"}, {"name": "Relay3 incremental pulses", "group": "Pulse output", "area": "holding", "address": 55, "type": "uint32", "access": "RW"}, {"name": "Relay4 incremental pulses", "group": "Pulse output", "area": "holding", "address": 57, "type": "uint32", "access": "RW"}, {"name": "Relay5 incremental pulses", "group": "Pulse output", "area": "holding", "address": 59, "type": "uint32", "access": "RW"}, {"name": "Relay6 incremental pulses", "group": "Pulse output", "area": "holding", "address": 61, "type": "uint32", "access": "RW"}, {"name": "Relay7 incremental pulses", "group": "Pulse output", "area": "holding", "address": 63, "type": "uint32", "access": "RW"}, {"name": "Relay0 mode", "group": "Settings", "area": "holding", "address": 65, "type": "uint16", "access": "RW"}, {"name": "Relay1 mode", "group": "Settings", "area": "holding", "address": 66, "type": "uint16", "access": "RW"}, {"name": "Relay2 mode", "group": "Settings", "area": "holding", "address": 67, "type": "uint16", "access": "RW"}, {"name": "Relay3 mode", "group": "Settings", "area": "holding", "address": 68, "type": "uint16", "access": "RW"}, {"name": "Relay4 mode", "group": "Settings", "area": "holding", "address": 69, "type": "uint16", "access": "RW"}, {"name": "Relay5 mode", "group": "Settings", "area": "holding", "address": 70, "type": "uint16", "access": "RW"}, {"name": "Relay6 mode", "group": "Settings", "area": "holding", "address": 71, "type": "uint16", "access": "RW"}, {"name": "Relay7 mode", "group": "Settings", "area": "holding", "address": 72, "type": "uint16", "access": "RW"}, {"name": "Relay0 low delay", "group": "Settings", "area": "holding", "address": 73, "type": "uint32", "access": "RW"}, {"name": "Relay1 low delay", "group": "Settings", "area": "holding", "address": 75, "type": "uint32", "access": "RW"}, {"name": "Relay2 low delay", "group": "Settings", "area": "holding", "address": 77, "type": "uint32", "access": "RW"}, {"name": "Relay3 low delay", "group": "Settings", "area": "holding", "address": 79, "type": "uint32", "access": "RW"}, {"name": "Relay4 low delay", "group": "Settings", "area": "holding", "address": 81, "type": "uint32", "access": "RW"}, {"name": "Relay5 low delay", "group": "Settings", "area": "holding", "address": 83, "type": "uint32", "access": "RW"}, {"name": "Relay6 low delay", "group": "Settings", "area": "holding", "address": 85, "type": "uint32", "access": "RW"}, {"name": "Relay7 low delay", "group": "Settings", "area": "holding", "address": 87, "type": "uint32", "access": "RW"}, {"name": "Relay0 high delay", "group": "Settings", "area": "holding", "address": 89, "type": "uint32", "access": "RW"}, {"name": "Relay1 high delay", "group": "Settings", "area": "holding", "address": 91, "type": "uint32", "access": "RW"}, {"name": "Relay2 high delay", "group": "Settings", "area": "holding", "address": 93, "type": "uint32", "access": "RW"}, {"name": "Relay3 high delay", "group": "Settings", "area": "holding", "address": 95, "type": "uint32", "access": "RW"}, {"name": "Relay4 high delay", "group": "Settings", "area": "holding", "address": 97, "type": "uint32", "access": "RW"}, {"name": "Relay5 high delay", "group": "Settings", "area": "holding", "address": 99, "type": "uint32", "access": "RW"}, {"name": "Relay6 high delay", "group": "Settings", "area": "holding", "address": 101, "type": "uint32", "access": "RW"}, {"name": "Relay7 high delay", "group": "Settings", "area": "holding", "address": 103, "type": "uint32", "access": "RW"}, {"name": "Module name 1", "group": "Identity", "area": "holding", "address": 211, "type": "uint16", "access": "R"}, {"name": "Module name 2", "group": "Identity", "area": "holding", "address": 212, "type": "uint16", "access": "R"}, {"name": "Firmware version 1", "group": "Identity", "area": "holding", "address": 213, "type": "uint16", "access": "R"}, {"name": "Firmware version 2", "group": "Identity", "area": "holding", "address": 214, "type": "uint16", "access": "R"}, {"name": "Comm safety enabled", "group": "Status", "area": "holding", "address": 215, "type": "uint16", "access": "R", "enum": {"0": "Disabled", "1": "Enabled"}}, {"name": "Comm safety tripped", "group": "Status", "area": "holding", "address": 216, "type": "uint16", "access": "R", "enum": {"0": "No", "1": "Yes"}}, {"name": "Relay word", "group": "Outputs", "area": "holding", "address": 303, "type": "uint16", "access": "RW", "description": "Bit n = relay n"} ] }