{
  "spec_version": 1,
  "slug": "advantech-adam-6052",
  "manufacturer": "Advantech",
  "model": "ADAM-6052",
  "category": "Remote I/O",
  "supplier_url": "https://www.advantech.com/en/products/a67f7853-013a-4b50-9b20-01798c56b090/adam-6052/mod_8e8d8d87-f30b-4f82-b77e-4e3822dfca5d",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst"
  },
  "coils": [
    {
      "address": 0,
      "count": 1,
      "name": "Digital input 0 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Digital input 1 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Digital input 2 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Digital input 3 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Digital input 4 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Digital input 5 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Digital input 6 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Digital input 7 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on (read through the coil area, function code 01)."
    },
    {
      "address": 16,
      "count": 1,
      "name": "Digital output 0 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 17,
      "count": 1,
      "name": "Digital output 1 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 18,
      "count": 1,
      "name": "Digital output 2 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 19,
      "count": 1,
      "name": "Digital output 3 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 20,
      "count": 1,
      "name": "Digital output 4 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 21,
      "count": 1,
      "name": "Digital output 5 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 22,
      "count": 1,
      "name": "Digital output 6 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 23,
      "count": 1,
      "name": "Digital output 7 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = off, 1 = on. Write through the coil with function code 05."
    },
    {
      "address": 32,
      "count": 1,
      "name": "Digital input 0 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Digital input 0 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Digital input 0 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Digital input 1 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Digital input 1 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 39,
      "count": 1,
      "name": "Digital input 1 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 40,
      "count": 1,
      "name": "Digital input 2 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 42,
      "count": 1,
      "name": "Digital input 2 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 43,
      "count": 1,
      "name": "Digital input 2 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Digital input 3 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 46,
      "count": 1,
      "name": "Digital input 3 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 47,
      "count": 1,
      "name": "Digital input 3 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 48,
      "count": 1,
      "name": "Digital input 4 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 50,
      "count": 1,
      "name": "Digital input 4 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 51,
      "count": 1,
      "name": "Digital input 4 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 52,
      "count": 1,
      "name": "Digital input 5 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 54,
      "count": 1,
      "name": "Digital input 5 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 55,
      "count": 1,
      "name": "Digital input 5 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 56,
      "count": 1,
      "name": "Digital input 6 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 58,
      "count": 1,
      "name": "Digital input 6 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 59,
      "count": 1,
      "name": "Digital input 6 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    },
    {
      "address": 60,
      "count": 1,
      "name": "Digital input 7 counter start/stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = start counting, 0 = stop."
    },
    {
      "address": 62,
      "count": 1,
      "name": "Digital input 7 clear overflow flag",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = clear the overflow flag."
    },
    {
      "address": 63,
      "count": 1,
      "name": "Digital input 7 latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 while the configured latch condition is met; write 0 to clear it."
    }
  ],
  "discrete_inputs": [],
  "input_registers": [],
  "holding_registers": [
    {
      "address": 300,
      "count": 1,
      "name": "All digital input states",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit field with the state of all 8 digital inputs (40301)."
    },
    {
      "address": 302,
      "count": 1,
      "name": "All digital output states",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Bit field with the state of all 8 digital outputs (40303)."
    },
    {
      "address": 304,
      "count": 1,
      "name": "GCL internal flag value",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "GCL internal flags, channels 0-15 (40305)."
    },
    {
      "address": 0,
      "count": 2,
      "name": "Digital input 0 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 2,
      "count": 2,
      "name": "Digital input 1 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 4,
      "count": 2,
      "name": "Digital input 2 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 6,
      "count": 2,
      "name": "Digital input 3 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 8,
      "count": 2,
      "name": "Digital input 4 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 10,
      "count": 2,
      "name": "Digital input 5 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 12,
      "count": 2,
      "name": "Digital input 6 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 14,
      "count": 2,
      "name": "Digital input 7 counter/frequency value",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Counter value, high word first (2 registers per input). The manual gives counter = value(40002) x 65536 + value(40001), and the low register on its own is frequency in 0.1 Hz (value / 10 = Hz)."
    },
    {
      "address": 16,
      "count": 2,
      "name": "Digital output 0 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 18,
      "count": 2,
      "name": "Digital output 1 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 20,
      "count": 2,
      "name": "Digital output 2 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 22,
      "count": 2,
      "name": "Digital output 3 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 24,
      "count": 2,
      "name": "Digital output 4 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 26,
      "count": 2,
      "name": "Digital output 5 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 28,
      "count": 2,
      "name": "Digital output 6 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 30,
      "count": 2,
      "name": "Digital output 7 pulse low-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output low-level width, high word first (2 registers per output)."
    },
    {
      "address": 32,
      "count": 2,
      "name": "Digital output 0 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 34,
      "count": 2,
      "name": "Digital output 1 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 36,
      "count": 2,
      "name": "Digital output 2 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 38,
      "count": 2,
      "name": "Digital output 3 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 40,
      "count": 2,
      "name": "Digital output 4 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 42,
      "count": 2,
      "name": "Digital output 5 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 44,
      "count": 2,
      "name": "Digital output 6 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 46,
      "count": 2,
      "name": "Digital output 7 pulse high-level width",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Pulse output high-level width, high word first (2 registers per output)."
    },
    {
      "address": 48,
      "count": 2,
      "name": "Digital output 0 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 50,
      "count": 2,
      "name": "Digital output 1 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 52,
      "count": 2,
      "name": "Digital output 2 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 54,
      "count": 2,
      "name": "Digital output 3 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 56,
      "count": 2,
      "name": "Digital output 4 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 58,
      "count": 2,
      "name": "Digital output 5 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 60,
      "count": 2,
      "name": "Digital output 6 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 62,
      "count": 2,
      "name": "Digital output 7 pulse count, absolute",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Number of pulses to generate; writing 0 generates pulses continuously (manual remark 5)."
    },
    {
      "address": 64,
      "count": 2,
      "name": "Digital output 0 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 66,
      "count": 2,
      "name": "Digital output 1 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 68,
      "count": 2,
      "name": "Digital output 2 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 70,
      "count": 2,
      "name": "Digital output 3 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 72,
      "count": 2,
      "name": "Digital output 4 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 74,
      "count": 2,
      "name": "Digital output 5 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 76,
      "count": 2,
      "name": "Digital output 6 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    },
    {
      "address": 78,
      "count": 2,
      "name": "Digital output 7 pulse count, incremental",
      "data_type": "UInt32",
      "units": "pulses",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Additional pulses generated while a pulse train is running (manual remark 6)."
    }
  ],
  "combined_registers": [],
  "notes": "Ethernet remote I/O with a built-in Modbus/TCP server; no gateway needed. The manual numbers its map with 1-based Modbus reference numbers (00001, 40001 ...) and states in its RTU framing example that reference 40051 is offset 50, so this seed stores the zero-based wire addresses (reference minus one). Source: Advantech ADAM-6000 Series User Manual Ed.12 (2022), appendix B.2 'ADAM-6000 I/O Modbus Mapping Tables', ADAM-6052 table (manual pages 212-215). The module has 8 source-type isolated digital inputs and 8 digital outputs. Counter and frequency share the same 32-bit pair, as in the table’s first remark. The per-input 'Clear counter (1)' coils (00034, 00038, ... one per input) are typed Write in the manual, and the GCL counter-clear block 00301-00308 is write-only as well; the coils area here only carries read or read/write entries, so both blocks are left out of this seed. The DO diagnostic status register (40307) is omitted for the same reason. The module-name registers 40211-40212 are left out too, because the manual does not state their encoding and a data type would have to be guessed. Unit identifier 1: the manual's ASCII command section states the module's slave address is always 01, so unit_id 1 is used."
}
