{
  "spec_version": 1,
  "slug": "vega-vegapuls-6x",
  "manufacturer": "VEGA",
  "model": "VEGAPULS 6X (Modbus and Levelmaster protocol)",
  "category": "Level sensor",
  "supplier_url": "https://www.vega.com/en/products/product-catalog/level/radar/vegapuls-6x",
  "default_configuration": {
    "protocol": "modbus_tcp",
    "port": 502,
    "unit_id": 246,
    "addressing": "zero_based",
    "byte_order": "BigEndian",
    "word_order": "LowFirst",
    "native_interface": "rs485",
    "serial": {
      "parity": "None",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1
    }
  },
  "coils": [],
  "discrete_inputs": [],
  "input_registers": [
    {
      "address": 100,
      "count": 2,
      "name": "Status",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Bit field: bit 0 = invalid measurement value PV, bit 1 = invalid SV, bit 2 = invalid TV, bit 3 = invalid QV."
    },
    {
      "address": 104,
      "count": 2,
      "name": "PV unit code",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unit code (32-bit value) for the primary variable: 32 = degC, 33 = degF, 40 = US gallon, 41 = litres, 42 = imperial gallon, 43 = m3, 44 = feet, 45 = metres, 46 = barrels, 47 = inches, 48 = cm, 49 = mm, 111 = cubic yards, 112 = cubic feet, 113 = cubic inches."
    },
    {
      "address": 106,
      "count": 2,
      "name": "Primary variable (PV)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Primary variable as an IEEE-754 float in byte order CDAB (low word at the lower register address). The measured quantity is assigned to PV, SV, TV and QV in the sensor (DTM); in level applications PV is normally the level."
    },
    {
      "address": 108,
      "count": 2,
      "name": "SV unit code",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unit code (32-bit value) for the secondary variable; same code list as register 104."
    },
    {
      "address": 110,
      "count": 2,
      "name": "Secondary variable (SV)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Secondary variable as an IEEE-754 float in byte order CDAB."
    },
    {
      "address": 112,
      "count": 2,
      "name": "TV unit code",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unit code (32-bit value) for the third variable; same code list as register 104."
    },
    {
      "address": 114,
      "count": 2,
      "name": "Third variable (TV)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Third variable as an IEEE-754 float in byte order CDAB."
    },
    {
      "address": 116,
      "count": 2,
      "name": "QV unit code",
      "data_type": "UInt32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Unit code (32-bit value) for the fourth variable; same code list as register 104."
    },
    {
      "address": 118,
      "count": 2,
      "name": "Fourth variable (QV)",
      "data_type": "Float32",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "R",
      "description": "Fourth variable as an IEEE-754 float in byte order CDAB."
    }
  ],
  "holding_registers": [
    {
      "address": 200,
      "count": 1,
      "name": "Modbus address",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Modbus slave address, 1-255. Factory setting 246."
    },
    {
      "address": 201,
      "count": 1,
      "name": "Baud rate",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Baud-rate code: 1200, 2400, 4800, 9600, 19200, 38400, 57600. Factory setting 9600."
    },
    {
      "address": 202,
      "count": 1,
      "name": "Parity",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "0 = none, 1 = odd, 2 = even. Factory setting 0 (none)."
    },
    {
      "address": 203,
      "count": 1,
      "name": "Stop bits",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "1 = one, 2 = two. Factory setting 1."
    },
    {
      "address": 206,
      "count": 1,
      "name": "Delay time",
      "data_type": "UInt16",
      "units": "ms",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Response delay time, 10-250 ms. Factory setting 50 ms."
    },
    {
      "address": 3000,
      "count": 1,
      "name": "Byte order for floating-point values",
      "data_type": "UInt16",
      "units": "",
      "scale_factor": 1,
      "offset": 0,
      "access": "RW",
      "description": "Format code for the 32-bit float byte transmission order used by the register bank starting at 1300: 0 = ABCD, 1 = CDAB, 2 = DCBA, 3 = BADC. Factory setting 0."
    }
  ],
  "combined_registers": [],
  "notes": "Source: VEGA 'Operating Instructions — VEGAPULS 6X — Modbus and Levelmaster protocol', document ID 1015559, edition 1015559-EN-260312 (30 March 2026), section 15 'Supplement': bus parameter table (defaults), 15.4 'Modbus register' (holding registers 200-206 and 3000; input registers 100-118) and 15.5 'Modbus RTU commands'. VEGAPULS 6X is VEGA's current radar level sensor for liquids and bulk solids; this is the RS-485 Modbus version (the same instrument is also sold with 4-20 mA/HART, PROFINET/Modbus TCP and other outputs, which are different documents). Factory frame from the vendor table: address 246, baud rate 9600, no parity, 1 stop bit, 8 data bits, 1 start bit. Addressing: VEGA prints plain register numbers (input registers 100, 104, 106, 108, 110, 112, 114, 116, 118; holding registers 200, 201, 202, 203, 206, 3000) with no 3xxxx/4xxxx reference notation, and section 15.7 'Configuration of typical Modbus hosts' settles the base with its input-register Base Number column: for a host whose base number is 0, 'register address for 1300 is address 1300', while base number 1 hosts turn 1302 into 1303 - that is, the printed register number is the address placed in the request unchanged, so addressing = zero_based. The primary variable bank at 106/110/114/118 is documented as byte order CDAB, i.e. the low word sits at the lower register address, hence word_order LowFirst; the manual also lists copies of the same variables at 1300-1438, 2000-2208, 2100-2208 and 2200-2208 in other byte orders (ABCD, DCBA, BACD) which are deliberately not seeded as duplicate rows — use register 3000 (format code) if a big-endian copy is needed. Deliberately omitted: the Levelmaster/Siemens tank protocol section (ASCII protocol, not Modbus), and the setup/simulation registers the manual only describes in the operating-menu chapters without Modbus addresses."
}
