{
  "spec_version": 1,
  "slug": "icp-das-et-7060",
  "manufacturer": "ICP DAS",
  "model": "ET-7060 (and PET-7060 / ET-7260 / PET-7260)",
  "category": "Remote I/O",
  "supplier_url": "https://www.icpdas.com/en/product/ET-7060",
  "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 output 0 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = relay off, 1 = relay on, for output channel 0."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Digital output 1 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = relay off, 1 = relay on, for output channel 1."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Digital output 2 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = relay off, 1 = relay on, for output channel 2."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Digital output 3 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = relay off, 1 = relay on, for output channel 3."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Digital output 4 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = relay off, 1 = relay on, for output channel 4."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Digital output 5 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = relay off, 1 = relay on, for output channel 5."
    },
    {
      "address": 64,
      "count": 1,
      "name": "Digital input 0 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on. The same state is also available in the discrete-input area at 10000 + channel."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Digital input 1 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on. The same state is also available in the discrete-input area at 10000 + channel."
    },
    {
      "address": 66,
      "count": 1,
      "name": "Digital input 2 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on. The same state is also available in the discrete-input area at 10000 + channel."
    },
    {
      "address": 67,
      "count": 1,
      "name": "Digital input 3 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on. The same state is also available in the discrete-input area at 10000 + channel."
    },
    {
      "address": 68,
      "count": 1,
      "name": "Digital input 4 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on. The same state is also available in the discrete-input area at 10000 + channel."
    },
    {
      "address": 69,
      "count": 1,
      "name": "Digital input 5 value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = off, 1 = on. The same state is also available in the discrete-input area at 10000 + channel."
    },
    {
      "address": 150,
      "count": 1,
      "name": "Enable/disable digital input latch function",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = latch function off (factory default), 1 = on."
    },
    {
      "address": 151,
      "count": 1,
      "name": "Enable/disable counter of digital input 0",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = counter off (factory default), 1 = counter on for DI channel 0."
    },
    {
      "address": 152,
      "count": 1,
      "name": "Enable/disable counter of digital input 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = counter off (factory default), 1 = counter on for DI channel 1."
    },
    {
      "address": 153,
      "count": 1,
      "name": "Enable/disable counter of digital input 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = counter off (factory default), 1 = counter on for DI channel 2."
    },
    {
      "address": 154,
      "count": 1,
      "name": "Enable/disable counter of digital input 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = counter off (factory default), 1 = counter on for DI channel 3."
    },
    {
      "address": 155,
      "count": 1,
      "name": "Enable/disable counter of digital input 4",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = counter off (factory default), 1 = counter on for DI channel 4."
    },
    {
      "address": 156,
      "count": 1,
      "name": "Enable/disable counter of digital input 5",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = counter off (factory default), 1 = counter on for DI channel 5."
    },
    {
      "address": 235,
      "count": 1,
      "name": "Enable digital output 0 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 0 takes its stored power-on value after reset."
    },
    {
      "address": 236,
      "count": 1,
      "name": "Enable digital output 1 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 1 takes its stored power-on value after reset."
    },
    {
      "address": 237,
      "count": 1,
      "name": "Enable digital output 2 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 2 takes its stored power-on value after reset."
    },
    {
      "address": 238,
      "count": 1,
      "name": "Enable digital output 3 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 3 takes its stored power-on value after reset."
    },
    {
      "address": 239,
      "count": 1,
      "name": "Enable digital output 4 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 4 takes its stored power-on value after reset."
    },
    {
      "address": 240,
      "count": 1,
      "name": "Enable digital output 5 power-on value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 5 takes its stored power-on value after reset."
    },
    {
      "address": 267,
      "count": 1,
      "name": "Enable digital output 0 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 0 takes its stored safe value when communication is lost."
    },
    {
      "address": 268,
      "count": 1,
      "name": "Enable digital output 1 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 1 takes its stored safe value when communication is lost."
    },
    {
      "address": 269,
      "count": 1,
      "name": "Enable digital output 2 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 2 takes its stored safe value when communication is lost."
    },
    {
      "address": 270,
      "count": 1,
      "name": "Enable digital output 3 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 3 takes its stored safe value when communication is lost."
    },
    {
      "address": 271,
      "count": 1,
      "name": "Enable digital output 4 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 4 takes its stored safe value when communication is lost."
    },
    {
      "address": 272,
      "count": 1,
      "name": "Enable digital output 5 safe value",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = not used (factory default), 1 = relay 5 takes its stored safe value when communication is lost."
    }
  ],
  "discrete_inputs": [
    {
      "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."
    },
    {
      "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."
    },
    {
      "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."
    },
    {
      "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."
    },
    {
      "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."
    },
    {
      "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."
    },
    {
      "address": 32,
      "count": 1,
      "name": "Digital input 0 high latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched high, for DI channel 0."
    },
    {
      "address": 33,
      "count": 1,
      "name": "Digital input 1 high latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched high, for DI channel 1."
    },
    {
      "address": 34,
      "count": 1,
      "name": "Digital input 2 high latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched high, for DI channel 2."
    },
    {
      "address": 35,
      "count": 1,
      "name": "Digital input 3 high latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched high, for DI channel 3."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Digital input 4 high latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched high, for DI channel 4."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Digital input 5 high latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched high, for DI channel 5."
    },
    {
      "address": 64,
      "count": 1,
      "name": "Digital input 0 low latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched low, for DI channel 0."
    },
    {
      "address": 65,
      "count": 1,
      "name": "Digital input 1 low latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched low, for DI channel 1."
    },
    {
      "address": 66,
      "count": 1,
      "name": "Digital input 2 low latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched low, for DI channel 2."
    },
    {
      "address": 67,
      "count": 1,
      "name": "Digital input 3 low latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched low, for DI channel 3."
    },
    {
      "address": 68,
      "count": 1,
      "name": "Digital input 4 low latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched low, for DI channel 4."
    },
    {
      "address": 69,
      "count": 1,
      "name": "Digital input 5 low latch status",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, 1 = latched low, for DI channel 5."
    }
  ],
  "input_registers": [
    {
      "address": 100,
      "count": 1,
      "name": "Number of digital input channels",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reports 6 for the ET-7060."
    },
    {
      "address": 110,
      "count": 1,
      "name": "Number of digital output channels",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reports 6 for the ET-7060."
    },
    {
      "address": 150,
      "count": 1,
      "name": "OS image version",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0123 means version 1.2.3."
    },
    {
      "address": 151,
      "count": 1,
      "name": "Firmware version",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0123 means version 1.2.3."
    },
    {
      "address": 153,
      "count": 1,
      "name": "I/O version",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0x0123 means version 1.2.3."
    },
    {
      "address": 160,
      "count": 1,
      "name": "Pair-connection state, register 1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = normal, negative = failed."
    },
    {
      "address": 161,
      "count": 1,
      "name": "Pair-connection state, register 2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Second register of the pair-connection state block."
    }
  ],
  "holding_registers": [
    {
      "address": 255,
      "count": 1,
      "name": "Module reset status",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "1 = power-on, 2 = module watchdog, 3 = software reset command."
    },
    {
      "address": 256,
      "count": 1,
      "name": "Boot count",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of times the module has booted; 1-32767."
    },
    {
      "address": 257,
      "count": 1,
      "name": "Host watchdog timeout",
      "data_type": "UInt16",
      "units": "s",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "RW",
      "description": "Host watchdog timeout in 0.1 s units; 0 disables the host watchdog, 1 to 65535 enable it."
    },
    {
      "address": 258,
      "count": 1,
      "name": "Host watchdog event count",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of watchdog events since the last module reset; 0-32767."
    },
    {
      "address": 260,
      "count": 1,
      "name": "Module name",
      "data_type": "Hex",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Reports 0x7060 for the ET-7060."
    },
    {
      "address": 271,
      "count": 1,
      "name": "Module identification (Modbus NetID)",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Modbus unit identifier of the module, 0-255. Factory default 1, which is the unit ID this seed uses."
    }
  ],
  "combined_registers": [],
  "notes": "Ethernet remote I/O with a built-in Modbus/TCP server on port 502. The ET-7060 has 6 wet-contact digital inputs with 32-bit counters and 6 relay outputs. Source: ICP DAS \"ET-7x00/PET-7x00 Series Register Table\", version 1.1.5, April 2025 (https://www.icpdas.com/en/download/file.php?num=4226), section \"ET-7060/PET-7060/ET-7260/PET-7260\", Modbus Register Table pages 116-117. Addressing: the table prints each row as a decimal 5-digit Modbus reference and as a hexadecimal offset that agree (coil 00064 = 0x0040, input register 30016 = 0x0010, holding register 40271 = 0x010F), so the seed stores the hexadecimal offsets as zero-based wire addresses. Unit identifier 1 is the factory value of the module's Modbus NetID register (40271), which the table states as factory value 1. Deliberate omissions: the coils the vendor types \"W\" only (clear historical max/min, clear counter, reset, reboot, save power-on/safe values, save counter presets) are not listed because the coil area in this schema carries only R or RW entries; the enabling coils and the preset holding registers that operate them are listed. The 6 32-bit DI counters (input registers 30016-30027) and their 6 32-bit presets (holding registers 40050-40061) are omitted: the register table types each as two registers but states no word order, and the user manual only says that \"each counter consists of two address values, the Low word, and the High word\", which does not settle which word the device sends first. With no 32-bit value left in this seed, no word order is claimed - the declared HighFirst is the schema default."
}
