{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Korenix",
  "model": "JetI/O 6550",
  "models": ["JetI", "O 6550"],
  "vendor_website": "beijerelectronics.com",
  "description": "14-DI + 8-DO digital I/O Ethernet server, Modbus/TCP. FC03 holding regs: watchdog (0-2), firmware/name/reset (3-5), DO coil power-on/safe (6-7), DI counter control (8-14), DO pulse control (15-50), rule engine rules 0-7 (51-130), P2P/SNMP config (89-130 overlap), extended Flash rules 8-15 + P2P IPs (500-578), error codes (595-604). FC04: DI counter values ch0-13 addr 0-29 (u32 hi/lo). FC02: DI status ch0-13 addr 0-13 (1-bit). FC01: DO ch0-7 addr 0-7 R/W (1-bit). 16-rule IF-THEN logic engine; P2P peer-to-peer I/O mirroring.",
  "revision": 2,
  "source": "Omni Console device library (OmniCoreST), modbus-library/korenix-jetio-6550.toml; Source: JetI/O 6550 User's Manual V1.6. Not verified against the manufacturer's documentation",
  "notes": [
    "Korenix JetI/O 6550.",
    "Converted automatically from the Omni Console device library (OmniCoreST).",
    "Not verified against the manufacturer's documentation.",
    "Corrections are welcome (CONTRIBUTING.md). Change x_status once this table has been checked against the manual.",
    "| Korenix JetI/O 6550 Industrial Intelligent Ethernet I/O Server",
    "|",
    "| Source: JetI/O 6550 User's Manual V1.6",
    "| Protocol: Modbus/TCP (Ethernet port 502)",
    "| FC03: Read/Write Holding Registers — configuration, control, rule engine, P2P (below)",
    "| FC04: Read Input Registers — DI counter values ch0-13 (addr 0x0000-0x001D, u32 hi/lo pairs)",
    "| FC02: Read Discrete Inputs — DI status ch0-13 (addr 0x0000-0x000D, 1-bit per channel)",
    "| FC01/FC05: Read/Write Coils — DO ch0-7 (addr 0x0000-0x0007, 1-bit per channel)",
    "|",
    "| IMPORTANT: Active I/O data is in FC04 (DI counters), FC02 (DI states), FC01 (DO).",
    "| FC03 holding registers are configuration only.",
    "|",
    "| Rule engine (16 rules, 0-15): each rule has IF condition (up to 4 DI, AND/OR)",
    "| THEN action (up to 4 DO). Condition operators: 0=ON,1=OFF,2=Lo→Hi,3=Hi→Lo,"
  ],
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "unofficial",
  "x_origin": "omniconsole",
  "registers": [
    {"name": "Watchdog enable (0x0000=disable 0xFF00=enable)", "area": "holding", "address": 0, "type": "uint16", "access": "R"},
    {"name": "Watchdog cycle count (BB×0.1s, range 1-255)", "area": "holding", "address": 1, "type": "uint16", "access": "R"},
    {"name": "Host-watchdog status (R: 0x0000=OK 0xFF00=fail; W: 0xFF00=reset)", "area": "holding", "address": 2, "type": "uint16", "access": "R"},
    {"name": "Firmware version", "area": "holding", "address": 3, "type": "uint16", "access": "R"},
    {"name": "Module name (reads 0x6550)", "area": "holding", "address": 4, "type": "uint16", "access": "R"},
    {"name": "Reset status (0x0000 after read; 0x0001 after reset)", "area": "holding", "address": 5, "type": "uint16", "access": "R"},
    {"name": "DO power-on coil value bitmask (bit N=ch N; EEprom)", "area": "holding", "address": 6, "type": "uint16", "access": "R"},
    {"name": "DO safe coil value bitmask (bit N=ch N; EEprom)", "area": "holding", "address": 7, "type": "uint16", "access": "R"},
    {"name": "DI counter status bitmask (bit N=ch N; R: 1=counting; W: 1=start 0=stop)", "area": "holding", "address": 8, "type": "uint16", "access": "R"},
    {"name": "DI counter overflow status bitmask (R; bit N=ch N, 1=overflow)", "area": "holding", "address": 9, "type": "uint16", "access": "R"},
    {"name": "DI counter trigger mode bitmask (bit N=ch N; 0=Lo→Hi 1=Hi→Lo; EEprom)", "area": "holding", "address": 10, "type": "uint16", "access": "R"},
    {"name": "DI mode bitmask (bit N=ch N; 0=DI 1=Counter; EEprom)", "area": "holding", "address": 11, "type": "uint16", "access": "R"},
    {"name": "DI counter power-on status bitmask (EEprom)", "area": "holding", "address": 12, "type": "uint16", "access": "R"},
    {"name": "DI counter safe status bitmask (EEprom)", "area": "holding", "address": 13, "type": "uint16", "access": "R"},
    {"name": "DI clear counter (write 1=clear all counters)", "area": "holding", "address": 14, "type": "uint16", "access": "R"},
    {"name": "DO pulse operate status bitmask (bit N=ch N; 1=start pulse)", "area": "holding", "address": 15, "type": "uint16", "access": "R"},
    {"name": "DO power-on pulse operate status bitmask (EEprom)", "area": "holding", "address": 16, "type": "uint16", "access": "R"},
    {"name": "DO safe pulse operate status bitmask (EEprom)", "area": "holding", "address": 17, "type": "uint16", "access": "R"},
    {"name": "Ch0 DO pulse output count hi-word (u32; 0=continuous; EEprom)", "area": "holding", "address": 18, "type": "uint16", "access": "R"},
    {"name": "Ch0 DO pulse output count lo-word", "area": "holding", "address": 19, "type": "uint16", "access": "R"},
    {"name": "Ch1 DO pulse output count hi-word", "area": "holding", "address": 20, "type": "uint16", "access": "R"},
    {"name": "Ch1 DO pulse output count lo-word", "area": "holding", "address": 21, "type": "uint16", "access": "R"},
    {"name": "Ch2 DO pulse output count hi-word", "area": "holding", "address": 22, "type": "uint16", "access": "R"},
    {"name": "Ch2 DO pulse output count lo-word", "area": "holding", "address": 23, "type": "uint16", "access": "R"},
    {"name": "Ch3 DO pulse output count hi-word", "area": "holding", "address": 24, "type": "uint16", "access": "R"},
    {"name": "Ch3 DO pulse output count lo-word", "area": "holding", "address": 25, "type": "uint16", "access": "R"},
    {"name": "Ch4 DO pulse output count hi-word", "area": "holding", "address": 26, "type": "uint16", "access": "R"},
    {"name": "Ch4 DO pulse output count lo-word", "area": "holding", "address": 27, "type": "uint16", "access": "R"},
    {"name": "Ch5 DO pulse output count hi-word", "area": "holding", "address": 28, "type": "uint16", "access": "R"},
    {"name": "Ch5 DO pulse output count lo-word", "area": "holding", "address": 29, "type": "uint16", "access": "R"},
    {"name": "Ch6 DO pulse output count hi-word", "area": "holding", "address": 30, "type": "uint16", "access": "R"},
    {"name": "Ch6 DO pulse output count lo-word", "area": "holding", "address": 31, "type": "uint16", "access": "R"},
    {"name": "Ch7 DO pulse output count hi-word", "area": "holding", "address": 32, "type": "uint16", "access": "R"},
    {"name": "Ch7 DO pulse output count lo-word", "area": "holding", "address": 33, "type": "uint16", "access": "R"},
    {"name": "Ch0 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 34, "type": "uint16", "access": "R"},
    {"name": "Ch1 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 35, "type": "uint16", "access": "R"},
    {"name": "Ch2 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 36, "type": "uint16", "access": "R"},
    {"name": "Ch3 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 37, "type": "uint16", "access": "R"},
    {"name": "Ch4 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 38, "type": "uint16", "access": "R"},
    {"name": "Ch5 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 39, "type": "uint16", "access": "R"},
    {"name": "Ch6 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 40, "type": "uint16", "access": "R"},
    {"name": "Ch7 DO pulse low signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 41, "type": "uint16", "access": "R"},
    {"name": "Ch0 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 42, "type": "uint16", "access": "R"},
    {"name": "Ch1 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 43, "type": "uint16", "access": "R"},
    {"name": "Ch2 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 44, "type": "uint16", "access": "R"},
    {"name": "Ch3 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 45, "type": "uint16", "access": "R"},
    {"name": "Ch4 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 46, "type": "uint16", "access": "R"},
    {"name": "Ch5 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 47, "type": "uint16", "access": "R"},
    {"name": "Ch6 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 48, "type": "uint16", "access": "R"},
    {"name": "Ch7 DO pulse high signal width (1-0xFFFF × 1ms; EEprom)", "area": "holding", "address": 49, "type": "uint16", "access": "R"},
    {"name": "DO mode bitmask (bit N=ch N; 0=DO 1=Pulse; EEprom)", "area": "holding", "address": 50, "type": "uint16", "access": "R"},
    {"name": "Rule enable rules 0-7 bitmask (bit N=rule N)", "area": "holding", "address": 51, "type": "uint16", "access": "R"},
    {"name": "Select OR/AND logic rules 0-7 (nibble per rule: 0=OR 1=AND)", "area": "holding", "address": 52, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 0 (ABCD nibbles = 4 DI ch selectors)", "area": "holding", "address": 53, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 1", "area": "holding", "address": 54, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 2", "area": "holding", "address": 55, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 3", "area": "holding", "address": 56, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 4", "area": "holding", "address": 57, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 5", "area": "holding", "address": 58, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 6", "area": "holding", "address": 59, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 7", "area": "holding", "address": 60, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 0 (nibble: 0=ON,1=OFF,2=Lo→Hi,3=Hi→Lo,4-8=ctr cmp)", "area": "holding", "address": 61, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 1", "area": "holding", "address": 62, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 2", "area": "holding", "address": 63, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 3", "area": "holding", "address": 64, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 4", "area": "holding", "address": 65, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 5", "area": "holding", "address": 66, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 6", "area": "holding", "address": 67, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 7", "area": "holding", "address": 68, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 0 (ABCD nibbles = 4 DO ch selectors)", "area": "holding", "address": 69, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 1", "area": "holding", "address": 70, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 2", "area": "holding", "address": 71, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 3", "area": "holding", "address": 72, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 4", "area": "holding", "address": 73, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 5", "area": "holding", "address": 74, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 6", "area": "holding", "address": 75, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 7", "area": "holding", "address": 76, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 0 (nibble: 0=ON,1=OFF,2=ctr reset,3=pulse start,4=pulse stop,5=SNMP)", "area": "holding", "address": 77, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 1", "area": "holding", "address": 78, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 2", "area": "holding", "address": 79, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 3", "area": "holding", "address": 80, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 4", "area": "holding", "address": 81, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 5", "area": "holding", "address": 82, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 6", "area": "holding", "address": 83, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 7", "area": "holding", "address": 84, "type": "uint16", "access": "R"},
    {"name": "Condition enable rules 0-3 (nibble per rule: count of active conditions)", "area": "holding", "address": 85, "type": "uint16", "access": "R"},
    {"name": "Condition enable rules 4-7", "area": "holding", "address": 86, "type": "uint16", "access": "R"},
    {"name": "Reserved (87)", "area": "holding", "address": 87, "type": "uint16", "access": "R"},
    {"name": "Reserved (88)", "area": "holding", "address": 88, "type": "uint16", "access": "R"},
    {"name": "Device type R (reads 0x6550)", "area": "holding", "address": 89, "type": "uint16", "access": "R"},
    {"name": "Peer-to-peer status R", "area": "holding", "address": 90, "type": "uint16", "access": "R"},
    {"name": "Output coil client/server status R", "area": "holding", "address": 91, "type": "uint16", "access": "R"},
    {"name": "Input coil client/server status R", "area": "holding", "address": 92, "type": "uint16", "access": "R"},
    {"name": "Peer-to-peer enable/disable", "area": "holding", "address": 93, "type": "uint16", "access": "R"},
    {"name": "P2P mirror direction (0=mirror to client 1=mirror from server)", "area": "holding", "address": 94, "type": "uint16", "access": "R"},
    {"name": "Action enable rules 0-3 (nibble per rule: count of active actions)", "area": "holding", "address": 95, "type": "uint16", "access": "R"},
    {"name": "Action enable rules 4-7", "area": "holding", "address": 96, "type": "uint16", "access": "R"},
    {"name": "SNMP trap number (0=disable 1-4=trap IP slot)", "area": "holding", "address": 97, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP1 lo-word (X.X.AA.BB)", "area": "holding", "address": 98, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP1 hi-word (AA.BB.X.X)", "area": "holding", "address": 99, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP2 lo-word", "area": "holding", "address": 100, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP2 hi-word", "area": "holding", "address": 101, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP3 lo-word", "area": "holding", "address": 102, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP3 hi-word", "area": "holding", "address": 103, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP4 lo-word", "area": "holding", "address": 104, "type": "uint16", "access": "R"},
    {"name": "SNMP trap IP4 hi-word", "area": "holding", "address": 105, "type": "uint16", "access": "R"},
    {"name": "SNMP trap repeat enable (write 0xFF00)", "area": "holding", "address": 106, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 0 (write 1=reset condition DI counter)", "area": "holding", "address": 107, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 1", "area": "holding", "address": 108, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 2", "area": "holding", "address": 109, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 3", "area": "holding", "address": 110, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 4", "area": "holding", "address": 111, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 5", "area": "holding", "address": 112, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 6", "area": "holding", "address": 113, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 7", "area": "holding", "address": 114, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 0 hi-word (u32)", "area": "holding", "address": 115, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 0 lo-word", "area": "holding", "address": 116, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 1 hi-word", "area": "holding", "address": 117, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 1 lo-word", "area": "holding", "address": 118, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 2 hi-word", "area": "holding", "address": 119, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 2 lo-word", "area": "holding", "address": 120, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 3 hi-word", "area": "holding", "address": 121, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 3 lo-word", "area": "holding", "address": 122, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 4 hi-word", "area": "holding", "address": 123, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 4 lo-word", "area": "holding", "address": 124, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 5 hi-word", "area": "holding", "address": 125, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 5 lo-word", "area": "holding", "address": 126, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 6 hi-word", "area": "holding", "address": 127, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 6 lo-word", "area": "holding", "address": 128, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 7 hi-word", "area": "holding", "address": 129, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 7 lo-word", "area": "holding", "address": 130, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector rules 0-3 (Flash RAM)", "area": "holding", "address": 500, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector rules 4-7 (Flash RAM)", "area": "holding", "address": 501, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector rules 8-11 (Flash RAM)", "area": "holding", "address": 502, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector rules 12-15 (Flash RAM)", "area": "holding", "address": 503, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector (Flash RAM) (504)", "area": "holding", "address": 504, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector (Flash RAM) (505)", "area": "holding", "address": 505, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector (Flash RAM) (506)", "area": "holding", "address": 506, "type": "uint16", "access": "R"},
    {"name": "Extended aux flag selector (Flash RAM) (507)", "area": "holding", "address": 507, "type": "uint16", "access": "R"},
    {"name": "PTP enable/disable condition flag", "area": "holding", "address": 508, "type": "uint16", "access": "R"},
    {"name": "PTP select condition channel group A (4 conditions packed)", "area": "holding", "address": 509, "type": "uint16", "access": "R"},
    {"name": "PTP select condition channel group B (4 conditions packed)", "area": "holding", "address": 510, "type": "uint16", "access": "R"},
    {"name": "PTP select action channel group A (4 actions packed)", "area": "holding", "address": 511, "type": "uint16", "access": "R"},
    {"name": "PTP select action channel group B (4 actions packed)", "area": "holding", "address": 512, "type": "uint16", "access": "R"},
    {"name": "Select DI channel or auxiliary flag", "area": "holding", "address": 513, "type": "uint16", "access": "R"},
    {"name": "Select DO channel or auxiliary flag", "area": "holding", "address": 514, "type": "uint16", "access": "R"},
    {"name": "P2P server[0] IP lo-word (Flash RAM)", "area": "holding", "address": 515, "type": "uint16", "access": "R"},
    {"name": "P2P server[0] IP hi-word", "area": "holding", "address": 516, "type": "uint16", "access": "R"},
    {"name": "P2P server[1] IP lo-word", "area": "holding", "address": 517, "type": "uint16", "access": "R"},
    {"name": "P2P server[1] IP hi-word", "area": "holding", "address": 518, "type": "uint16", "access": "R"},
    {"name": "P2P server[2] IP lo-word", "area": "holding", "address": 519, "type": "uint16", "access": "R"},
    {"name": "P2P server[2] IP hi-word", "area": "holding", "address": 520, "type": "uint16", "access": "R"},
    {"name": "P2P server[3] IP lo-word", "area": "holding", "address": 521, "type": "uint16", "access": "R"},
    {"name": "P2P server[3] IP hi-word", "area": "holding", "address": 522, "type": "uint16", "access": "R"},
    {"name": "P2P server[4] IP lo-word", "area": "holding", "address": 523, "type": "uint16", "access": "R"},
    {"name": "P2P server[4] IP hi-word", "area": "holding", "address": 524, "type": "uint16", "access": "R"},
    {"name": "P2P server[5] IP lo-word", "area": "holding", "address": 525, "type": "uint16", "access": "R"},
    {"name": "P2P server[5] IP hi-word", "area": "holding", "address": 526, "type": "uint16", "access": "R"},
    {"name": "P2P server[6] IP lo-word", "area": "holding", "address": 527, "type": "uint16", "access": "R"},
    {"name": "P2P server[6] IP hi-word", "area": "holding", "address": 528, "type": "uint16", "access": "R"},
    {"name": "P2P server[7] IP lo-word", "area": "holding", "address": 529, "type": "uint16", "access": "R"},
    {"name": "P2P server[7] IP hi-word", "area": "holding", "address": 530, "type": "uint16", "access": "R"},
    {"name": "P2P client[8] IP lo-word", "area": "holding", "address": 531, "type": "uint16", "access": "R"},
    {"name": "P2P client[8] IP hi-word", "area": "holding", "address": 532, "type": "uint16", "access": "R"},
    {"name": "Rule enable rules 0-7 (Flash RAM)", "area": "holding", "address": 533, "type": "uint16", "access": "R"},
    {"name": "Select OR/AND logic (Flash RAM)", "area": "holding", "address": 534, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 8 (Flash RAM)", "area": "holding", "address": 535, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 9", "area": "holding", "address": 536, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 10", "area": "holding", "address": 537, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 11", "area": "holding", "address": 538, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 12", "area": "holding", "address": 539, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 13", "area": "holding", "address": 540, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 14", "area": "holding", "address": 541, "type": "uint16", "access": "R"},
    {"name": "IF condition DI channels rule 15", "area": "holding", "address": 542, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 8", "area": "holding", "address": 543, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 9", "area": "holding", "address": 544, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 10", "area": "holding", "address": 545, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 11", "area": "holding", "address": 546, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 12", "area": "holding", "address": 547, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 13", "area": "holding", "address": 548, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 14", "area": "holding", "address": 549, "type": "uint16", "access": "R"},
    {"name": "IF condition operators rule 15", "area": "holding", "address": 550, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 8", "area": "holding", "address": 551, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 9", "area": "holding", "address": 552, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 10", "area": "holding", "address": 553, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 11", "area": "holding", "address": 554, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 12", "area": "holding", "address": 555, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 13", "area": "holding", "address": 556, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 14", "area": "holding", "address": 557, "type": "uint16", "access": "R"},
    {"name": "THEN DO channels rule 15", "area": "holding", "address": 558, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 8", "area": "holding", "address": 559, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 9", "area": "holding", "address": 560, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 10", "area": "holding", "address": 561, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 11", "area": "holding", "address": 562, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 12", "area": "holding", "address": 563, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 13", "area": "holding", "address": 564, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 14", "area": "holding", "address": 565, "type": "uint16", "access": "R"},
    {"name": "THEN action operators rule 15", "area": "holding", "address": 566, "type": "uint16", "access": "R"},
    {"name": "Condition enable rules 8-11", "area": "holding", "address": 567, "type": "uint16", "access": "R"},
    {"name": "Condition enable rules 12-15", "area": "holding", "address": 568, "type": "uint16", "access": "R"},
    {"name": "Action enable rules 8-11", "area": "holding", "address": 569, "type": "uint16", "access": "R"},
    {"name": "Action enable rules 12-15", "area": "holding", "address": 570, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 8", "area": "holding", "address": 571, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 9", "area": "holding", "address": 572, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 10", "area": "holding", "address": 573, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 11", "area": "holding", "address": 574, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 12", "area": "holding", "address": 575, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 13", "area": "holding", "address": 576, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 14", "area": "holding", "address": 577, "type": "uint16", "access": "R"},
    {"name": "DI counter reset trigger rule 15", "area": "holding", "address": 578, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 8 hi-word (u32; Flash RAM)", "area": "holding", "address": 579, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 8 lo-word", "area": "holding", "address": 580, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 9 hi-word", "area": "holding", "address": 581, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 9 lo-word", "area": "holding", "address": 582, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 10 hi-word", "area": "holding", "address": 583, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 10 lo-word", "area": "holding", "address": 584, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 11 hi-word", "area": "holding", "address": 585, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 11 lo-word", "area": "holding", "address": 586, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 12 hi-word", "area": "holding", "address": 587, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 12 lo-word", "area": "holding", "address": 588, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 13 hi-word", "area": "holding", "address": 589, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 13 lo-word", "area": "holding", "address": 590, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 14 hi-word", "area": "holding", "address": 591, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 14 lo-word", "area": "holding", "address": 592, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 15 hi-word", "area": "holding", "address": 593, "type": "uint16", "access": "R"},
    {"name": "DI counter compare value rule 15 lo-word", "area": "holding", "address": 594, "type": "uint16", "access": "R"},
    {"name": "Internal flags R/W", "area": "holding", "address": 595, "type": "uint16", "access": "R"},
    {"name": "P2P error code for client R (0=OK,1=content not satisfiable,2=module not found,FFFF=not enabled)", "area": "holding", "address": 596, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #1 R", "area": "holding", "address": 597, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #2 R", "area": "holding", "address": 598, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #3 R", "area": "holding", "address": 599, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #4 R", "area": "holding", "address": 600, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #5 R", "area": "holding", "address": 601, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #6 R", "area": "holding", "address": 602, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #7 R", "area": "holding", "address": 603, "type": "uint16", "access": "R"},
    {"name": "P2P error code server #8 R", "area": "holding", "address": 604, "type": "uint16", "access": "R"}
  ]
}
