{
  "spec_version": 1,
  "slug": "deif-agc-4",
  "manufacturer": "DEIF",
  "model": "AGC-4 (option H2/H9 Modbus), diesel genset application",
  "category": "Generator controller",
  "supplier_url": "https://www.deif.com/documentation/agc-4",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 1,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "HighFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 19200,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [
    {
      "address": 0,
      "count": 1,
      "name": "Remote start",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to start the generator set from the SCADA system (diesel genset application)."
    },
    {
      "address": 1,
      "count": 1,
      "name": "Remote generator breaker ON",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to close the generator breaker."
    },
    {
      "address": 2,
      "count": 1,
      "name": "Remote generator breaker OFF",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to open the generator breaker."
    },
    {
      "address": 3,
      "count": 1,
      "name": "Remote stop",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to stop the generator set."
    },
    {
      "address": 4,
      "count": 1,
      "name": "Alarm inhibit 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to inhibit alarm group 1."
    },
    {
      "address": 5,
      "count": 1,
      "name": "Alarm inhibit 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to inhibit alarm group 2."
    },
    {
      "address": 6,
      "count": 1,
      "name": "Alarm inhibit 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to inhibit alarm group 3."
    },
    {
      "address": 7,
      "count": 1,
      "name": "Reset GOV/AVR regulation output to off",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to reset the governor/AVR regulation output to off."
    },
    {
      "address": 9,
      "count": 1,
      "name": "Alarm acknowledge",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Write 1 to acknowledge alarms."
    },
    {
      "address": 10,
      "count": 1,
      "name": "Nominal setting 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select nominal setting 1."
    },
    {
      "address": 11,
      "count": 1,
      "name": "Nominal setting 2",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select nominal setting 2."
    },
    {
      "address": 12,
      "count": 1,
      "name": "Nominal setting 3",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select nominal setting 3."
    },
    {
      "address": 13,
      "count": 1,
      "name": "Nominal setting 4",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select nominal setting 4."
    },
    {
      "address": 14,
      "count": 1,
      "name": "Start + synchronise (semi-auto)",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Start and synchronise in semi-automatic mode."
    },
    {
      "address": 15,
      "count": 1,
      "name": "Deload / stop (semi-auto)",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Deload and stop in semi-automatic mode."
    },
    {
      "address": 24,
      "count": 1,
      "name": "Mains breaker ON (single genset)",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Close the mains breaker in a single-genset application."
    },
    {
      "address": 25,
      "count": 1,
      "name": "Mains breaker OFF (single genset)",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Open the mains breaker in a single-genset application."
    },
    {
      "address": 27,
      "count": 1,
      "name": "Manual mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select manual mode."
    },
    {
      "address": 28,
      "count": 1,
      "name": "Semi-auto mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select semi-automatic mode."
    },
    {
      "address": 29,
      "count": 1,
      "name": "Auto mode",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select automatic mode."
    },
    {
      "address": 31,
      "count": 1,
      "name": "External frequency control",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Enable external frequency control."
    },
    {
      "address": 32,
      "count": 1,
      "name": "External voltage control",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Enable external voltage control."
    },
    {
      "address": 34,
      "count": 1,
      "name": "External reactive power control",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Enable external reactive power control."
    },
    {
      "address": 35,
      "count": 1,
      "name": "External power factor control",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Enable external power factor control."
    },
    {
      "address": 36,
      "count": 1,
      "name": "Capacitive power factor",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select capacitive power factor."
    },
    {
      "address": 37,
      "count": 1,
      "name": "Base load",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select base load operation."
    },
    {
      "address": 38,
      "count": 1,
      "name": "Priority 1",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Select priority 1."
    },
    {
      "address": 44,
      "count": 1,
      "name": "Battery test",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Start a battery test."
    },
    {
      "address": 46,
      "count": 1,
      "name": "Synchronise clock to 04:00",
      "data_type": "Binary",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Synchronise the controller clock to 04:00."
    }
  ],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 500,
      "count": 1,
      "name": "Application version",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Version of the application software running in the controller."
    },
    {
      "address": 501,
      "count": 1,
      "name": "Generator voltage L1-L2",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 502,
      "count": 1,
      "name": "Generator voltage L2-L3",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 503,
      "count": 1,
      "name": "Generator voltage L3-L1",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 504,
      "count": 1,
      "name": "Generator voltage L1-N",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 505,
      "count": 1,
      "name": "Generator voltage L2-N",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 506,
      "count": 1,
      "name": "Generator voltage L3-N",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 507,
      "count": 1,
      "name": "Generator frequency L1",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 508,
      "count": 1,
      "name": "Generator frequency L2",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 509,
      "count": 1,
      "name": "Generator frequency L3",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 510,
      "count": 1,
      "name": "Generator voltage phase angle L1-L2",
      "data_type": "Int16",
      "units": "deg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 511,
      "count": 1,
      "name": "Generator voltage phase angle L2-L3",
      "data_type": "Int16",
      "units": "deg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 512,
      "count": 1,
      "name": "Generator voltage phase angle L3-L1",
      "data_type": "Int16",
      "units": "deg",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 513,
      "count": 1,
      "name": "Generator current L1",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 514,
      "count": 1,
      "name": "Generator current L2",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 515,
      "count": 1,
      "name": "Generator current L3",
      "data_type": "Int16",
      "units": "A",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 516,
      "count": 1,
      "name": "Generator power L1",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 517,
      "count": 1,
      "name": "Generator power L2",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 518,
      "count": 1,
      "name": "Generator power L3",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 519,
      "count": 1,
      "name": "Generator power, total",
      "data_type": "Int16",
      "units": "kW",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 520,
      "count": 1,
      "name": "Generator reactive power L1",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 521,
      "count": 1,
      "name": "Generator reactive power L2",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 522,
      "count": 1,
      "name": "Generator reactive power L3",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 523,
      "count": 1,
      "name": "Generator reactive power, total",
      "data_type": "Int16",
      "units": "kVAr",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 524,
      "count": 1,
      "name": "Generator apparent power L1",
      "data_type": "Int16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 525,
      "count": 1,
      "name": "Generator apparent power L2",
      "data_type": "Int16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 526,
      "count": 1,
      "name": "Generator apparent power L3",
      "data_type": "Int16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 527,
      "count": 1,
      "name": "Generator apparent power, total",
      "data_type": "Int16",
      "units": "kVA",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 528,
      "count": 2,
      "name": "Generator export reactive energy counter, total",
      "data_type": "Int32",
      "units": "kVArh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter (the controller also keeps a 64-bit version)."
    },
    {
      "address": 530,
      "count": 2,
      "name": "Generator export active energy counter, day",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 532,
      "count": 2,
      "name": "Generator export active energy counter, week",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 534,
      "count": 2,
      "name": "Generator export active energy counter, month",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 536,
      "count": 2,
      "name": "Generator export active energy counter, total",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 538,
      "count": 1,
      "name": "Generator power factor",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 554,
      "count": 2,
      "name": "Absolute running hours",
      "data_type": "Int32",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 556,
      "count": 2,
      "name": "Relative running hours",
      "data_type": "Int32",
      "units": "h",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 558,
      "count": 1,
      "name": "Number of alarms",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 559,
      "count": 1,
      "name": "Number of unacknowledged alarms",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 560,
      "count": 1,
      "name": "Number of active acknowledged alarms",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 563,
      "count": 1,
      "name": "Number of GB operations",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of generator breaker operations."
    },
    {
      "address": 564,
      "count": 1,
      "name": "Number of MB operations",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Number of mains breaker operations."
    },
    {
      "address": 566,
      "count": 1,
      "name": "Start attempts",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 567,
      "count": 1,
      "name": "DC supply, terminals 1-2",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Controller supply voltage."
    },
    {
      "address": 568,
      "count": 1,
      "name": "DC supply, terminals 98-99",
      "data_type": "Int16",
      "units": "V",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Controller supply voltage."
    },
    {
      "address": 573,
      "count": 1,
      "name": "Cos phi",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 574,
      "count": 1,
      "name": "Cos phi inductive/capacitive",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "0 = inductive, 1 = capacitive."
    },
    {
      "address": 576,
      "count": 1,
      "name": "Engine speed",
      "data_type": "Int16",
      "units": "rpm",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 590,
      "count": 1,
      "name": "Internal temperature",
      "data_type": "Int16",
      "units": "deg C",
      "scale_factor": 0.1,
      "offset": 0,
      "access": "R",
      "description": "Temperature inside the controller."
    },
    {
      "address": 750,
      "count": 1,
      "name": "Generator average frequency L1",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 751,
      "count": 1,
      "name": "Generator average frequency L2",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 752,
      "count": 1,
      "name": "Generator average frequency L3",
      "data_type": "Int16",
      "units": "Hz",
      "scale_factor": 0.01,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 796,
      "count": 2,
      "name": "Generator import active energy counter, total",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 798,
      "count": 2,
      "name": "Generator import active energy counter, month",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 800,
      "count": 2,
      "name": "Generator import active energy counter, week",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 802,
      "count": 2,
      "name": "Generator import active energy counter, day",
      "data_type": "Int32",
      "units": "kWh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 804,
      "count": 2,
      "name": "Generator import reactive energy counter, total",
      "data_type": "Int32",
      "units": "kVArh",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "32-bit counter."
    },
    {
      "address": 822,
      "count": 1,
      "name": "Start attempts, standard starter",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    },
    {
      "address": 823,
      "count": 1,
      "name": "Start attempts, double starter",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R"
    }
  ],
  "holding_registers": [
    {
      "address": 58000,
      "count": 1,
      "name": "Year",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: year (2003-2099)."
    },
    {
      "address": 58001,
      "count": 1,
      "name": "Month",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: month (1-12)."
    },
    {
      "address": 58002,
      "count": 1,
      "name": "Date",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: date (1-31)."
    },
    {
      "address": 58003,
      "count": 1,
      "name": "Day of week",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: day of week (1-7, Monday-Sunday)."
    },
    {
      "address": 58004,
      "count": 1,
      "name": "Hour",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: hour (0-23)."
    },
    {
      "address": 58005,
      "count": 1,
      "name": "Minute",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: minute (0-59)."
    },
    {
      "address": 58006,
      "count": 1,
      "name": "Second",
      "data_type": "Int16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Clock: second (0-59)."
    }
  ],
  "combined_registers": [],
  "notes": "Genset controller with Modbus RTU on RS-485 (option H2) or RS-232 (option H9): reach it through a Modbus RTU-to-TCP gateway. Fixed line settings: 9600 or 19200 bps, 8 data bits, no parity, 1 stop bit, no flow control. Modbus addresses 0-499 are the configurable (Profibus/Modbus configurator) area and are NOT used for measurements here; every measurement address is in the fixed range 500+, with the values the controller publishes for the diesel genset (DG) application. Scaling: actual value = register * 10^-scaling (exponent 1 gives 0.1, exponent 2 gives 0.01). INT32 counters occupy two registers, high word first. The Modbus slave address is a setting (parameters 7500-7520); 1 is used here. Sources, both downloadable without an account (plain HTTP GET): (1) DEIF 'AGC-4, Options H2 and H9, Modbus communication', document 4189341180 C, https://deif-cdn-umbraco.azureedge.net/media/purl03z4/option-h2-and-h9-modbus-communication-agc-4-4189341180-uk.pdf - addressing, 500+ fixed area, 10^-scaling rule, line settings. (2) DEIF 'AGC-4 Modbus tables', document 4189341215A (software 4.73.0), spreadsheet https://deif-cdn-umbraco.azureedge.net/media/xywdqum0/agc-4-modbus-tables-4189341215-uk.xlsx - per-register names, data types, scaling, units and DG/Mains/BTB applicability (sheets 'Input register (04)', 'Discrete output coil (01;05;15)', 'Holding register (03;06;16)'); that URL currently serves the same tables as Revision I (software 4.83.0), and the rows used here are identical in 4189341215A and Revision I. Alarm, power-management and plant-logic registers are left out because their content depends on the application configuration."
}
