{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Continental Control Systems",
  "model": "WattNode WND-WR-MB",
  "models": ["WattNode WND-WR-MB"],
  "vendor_website": "ctlsys.com",
  "description": "Wide-range 3-phase energy meter, Modbus RTU/TCP. FC03/04 read, FC06/16 write. Basic FP (f32): energy kWh at 1000-1006, power W at 1008-1014, voltage V at 1016-1030, freq at 1032. PowerFast (10 Hz, f32 only) at 1034-1042. Advanced FP: per-element energy net/pos/neg at 1100-1120, reactive energy net/pos/neg at 1122-1196, apparent at 1130-1136, PF at 1138-1144, reactive/apparent power at 1146-1160, current at 1162-1166, demand at 1168-1180. Integer equivalents at 1200-1220 (basic) and 1300-1377 (advanced). Config at 1600-1685. Comms at 1650-1658. Diagnostics at 1700-1761.",
  "revision": 2,
  "source": "Omni Console device library (OmniCoreST), modbus-library/continental-wattnode-wnd-wr-mb.toml; Source: continental-wattnode-wnd-wr-mb-reference-manual.pdf (sections 4.2.5-4.4, pp. 35-54). Not verified against the manufacturer's documentation",
  "notes": [
    "Continental Control Systems WattNode WND-WR-MB.",
    "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.",
    "| Continental Control Systems WattNode WND-WR-MB — Wide-Range 3-Phase Energy Meter (Modbus RTU/TCP)",
    "|",
    "| Source: continental-wattnode-wnd-wr-mb-reference-manual.pdf (sections 4.2.5-4.4, pp. 35-54)",
    "| Models: WND-WR-MB (single model, wide-range 120-600 Vac line-to-neutral)",
    "| Protocol: Modbus RTU or TCP; FC03/FC04 read (interchangeable), FC06/FC16 write",
    "| Baud: configurable; default 9600 8N1; 1200-115200 via register 1652",
    "| Register numbering: source uses 1-based numbers; TOML addresses are 0-based (source - 1).",
    "| 32-bit values: low 16 bits at the listed address, high 16 bits at address+1 (little-endian words).",
    "| Floating point: IEEE 754 f32, low word first.",
    "| Integer energy (s32): units of 0.1 kWh, 0.1 kVARh, or 0.1 kVAh.",
    "| Integer power (s16): units of PowerIntScale watts (reg 1608, default auto).",
    "| Integer voltage (s16): units of 0.1 V. Integer frequency (s16): units of 0.1 Hz.",
    "| Integer power factor (s16): units of 0.01.",
    "| Integer current (s16): scaled by CtAmps/CurrentIntScale."
  ],
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "unofficial",
  "x_origin": "omniconsole",
  "registers": [
    {"name": "Dummy", "area": "holding", "address": 0, "type": "uint32", "access": "R"},
    {"name": "EnergySum", "area": "holding", "address": 1000, "type": "float32", "access": "R"},
    {"name": "EnergyPosSum", "area": "holding", "address": 1002, "type": "float32", "access": "R"},
    {"name": "EnergySumNR", "area": "holding", "address": 1004, "type": "float32", "access": "R"},
    {"name": "EnergyPosSumNR", "area": "holding", "address": 1006, "type": "float32", "access": "R"},
    {"name": "PowerSum", "area": "holding", "address": 1008, "type": "float32", "access": "R"},
    {"name": "Power1", "area": "holding", "address": 1010, "type": "float32", "access": "R"},
    {"name": "Power2", "area": "holding", "address": 1012, "type": "float32", "access": "R"},
    {"name": "Power3", "area": "holding", "address": 1014, "type": "float32", "access": "R"},
    {"name": "VoltAvgLN", "area": "holding", "address": 1016, "type": "float32", "access": "R"},
    {"name": "VoltAN", "area": "holding", "address": 1018, "type": "float32", "access": "R"},
    {"name": "VoltBN", "area": "holding", "address": 1020, "type": "float32", "access": "R"},
    {"name": "VoltCN", "area": "holding", "address": 1022, "type": "float32", "access": "R"},
    {"name": "VoltAvgLL", "area": "holding", "address": 1024, "type": "float32", "access": "R"},
    {"name": "VoltAB", "area": "holding", "address": 1026, "type": "float32", "access": "R"},
    {"name": "VoltBC", "area": "holding", "address": 1028, "type": "float32", "access": "R"},
    {"name": "VoltCA", "area": "holding", "address": 1030, "type": "float32", "access": "R"},
    {"name": "Freq", "area": "holding", "address": 1032, "type": "float32", "access": "R"},
    {"name": "SecondsFast", "area": "holding", "address": 1034, "type": "float32", "access": "R"},
    {"name": "PowerFastSum", "area": "holding", "address": 1036, "type": "float32", "access": "R"},
    {"name": "PowerFast1", "area": "holding", "address": 1038, "type": "float32", "access": "R"},
    {"name": "PowerFast2", "area": "holding", "address": 1040, "type": "float32", "access": "R"},
    {"name": "PowerFast3", "area": "holding", "address": 1042, "type": "float32", "access": "R"},
    {"name": "Energy1", "area": "holding", "address": 1100, "type": "float32", "access": "R"},
    {"name": "Energy2", "area": "holding", "address": 1102, "type": "float32", "access": "R"},
    {"name": "Energy3", "area": "holding", "address": 1104, "type": "float32", "access": "R"},
    {"name": "EnergyPos1", "area": "holding", "address": 1106, "type": "float32", "access": "R"},
    {"name": "EnergyPos2", "area": "holding", "address": 1108, "type": "float32", "access": "R"},
    {"name": "EnergyPos3", "area": "holding", "address": 1110, "type": "float32", "access": "R"},
    {"name": "EnergyNegSum", "area": "holding", "address": 1112, "type": "float32", "access": "R"},
    {"name": "EnergyNegSumNR", "area": "holding", "address": 1114, "type": "float32", "access": "R"},
    {"name": "EnergyNeg1", "area": "holding", "address": 1116, "type": "float32", "access": "R"},
    {"name": "EnergyNeg2", "area": "holding", "address": 1118, "type": "float32", "access": "R"},
    {"name": "EnergyNeg3", "area": "holding", "address": 1120, "type": "float32", "access": "R"},
    {"name": "EnergyReacSum", "area": "holding", "address": 1122, "type": "float32", "access": "R"},
    {"name": "EnergyReac1", "area": "holding", "address": 1124, "type": "float32", "access": "R"},
    {"name": "EnergyReac2", "area": "holding", "address": 1126, "type": "float32", "access": "R"},
    {"name": "EnergyReac3", "area": "holding", "address": 1128, "type": "float32", "access": "R"},
    {"name": "EnergyAppSum", "area": "holding", "address": 1130, "type": "float32", "access": "R"},
    {"name": "EnergyApp1", "area": "holding", "address": 1132, "type": "float32", "access": "R"},
    {"name": "EnergyApp2", "area": "holding", "address": 1134, "type": "float32", "access": "R"},
    {"name": "EnergyApp3", "area": "holding", "address": 1136, "type": "float32", "access": "R"},
    {"name": "PowerFactorAvg", "area": "holding", "address": 1138, "type": "float32", "access": "R"},
    {"name": "PowerFactor1", "area": "holding", "address": 1140, "type": "float32", "access": "R"},
    {"name": "PowerFactor2", "area": "holding", "address": 1142, "type": "float32", "access": "R"},
    {"name": "PowerFactor3", "area": "holding", "address": 1144, "type": "float32", "access": "R"},
    {"name": "PowerReacSum", "area": "holding", "address": 1146, "type": "float32", "access": "R"},
    {"name": "PowerReac1", "area": "holding", "address": 1148, "type": "float32", "access": "R"},
    {"name": "PowerReac2", "area": "holding", "address": 1150, "type": "float32", "access": "R"},
    {"name": "PowerReac3", "area": "holding", "address": 1152, "type": "float32", "access": "R"},
    {"name": "PowerAppSum", "area": "holding", "address": 1154, "type": "float32", "access": "R"},
    {"name": "PowerApp1", "area": "holding", "address": 1156, "type": "float32", "access": "R"},
    {"name": "PowerApp2", "area": "holding", "address": 1158, "type": "float32", "access": "R"},
    {"name": "PowerApp3", "area": "holding", "address": 1160, "type": "float32", "access": "R"},
    {"name": "Current1", "area": "holding", "address": 1162, "type": "float32", "access": "R"},
    {"name": "Current2", "area": "holding", "address": 1164, "type": "float32", "access": "R"},
    {"name": "Current3", "area": "holding", "address": 1166, "type": "float32", "access": "R"},
    {"name": "DemandSum", "area": "holding", "address": 1168, "type": "float32", "access": "R"},
    {"name": "DemandSumMin", "area": "holding", "address": 1170, "type": "float32", "access": "R"},
    {"name": "DemandSumMax", "area": "holding", "address": 1172, "type": "float32", "access": "R"},
    {"name": "DemandAppSum", "area": "holding", "address": 1174, "type": "float32", "access": "R"},
    {"name": "Demand1", "area": "holding", "address": 1176, "type": "float32", "access": "R"},
    {"name": "Demand2", "area": "holding", "address": 1178, "type": "float32", "access": "R"},
    {"name": "Demand3", "area": "holding", "address": 1180, "type": "float32", "access": "R"},
    {"name": "EnergyReacPos1", "area": "holding", "address": 1182, "type": "float32", "access": "R"},
    {"name": "EnergyReacPos2", "area": "holding", "address": 1184, "type": "float32", "access": "R"},
    {"name": "EnergyReacPos3", "area": "holding", "address": 1186, "type": "float32", "access": "R"},
    {"name": "EnergyReacPosSum", "area": "holding", "address": 1188, "type": "float32", "access": "R"},
    {"name": "EnergyReacNeg1", "area": "holding", "address": 1190, "type": "float32", "access": "R"},
    {"name": "EnergyReacNeg2", "area": "holding", "address": 1192, "type": "float32", "access": "R"},
    {"name": "EnergyReacNeg3", "area": "holding", "address": 1194, "type": "float32", "access": "R"},
    {"name": "EnergyReacNegSum", "area": "holding", "address": 1196, "type": "float32", "access": "R"},
    {"name": "EnergySum integer", "area": "holding", "address": 1200, "type": "int32", "access": "R"},
    {"name": "EnergyPosSum integer", "area": "holding", "address": 1202, "type": "int32", "access": "R"},
    {"name": "EnergySumNR integer", "area": "holding", "address": 1204, "type": "int32", "access": "R"},
    {"name": "EnergyPosSumNR integer", "area": "holding", "address": 1206, "type": "int32", "access": "R"},
    {"name": "PowerSum integer", "area": "holding", "address": 1208, "type": "int16", "access": "R"},
    {"name": "Power1 integer", "area": "holding", "address": 1209, "type": "int16", "access": "R"},
    {"name": "Power2 integer", "area": "holding", "address": 1210, "type": "int16", "access": "R"},
    {"name": "Power3 integer", "area": "holding", "address": 1211, "type": "int16", "access": "R"},
    {"name": "VoltAvgLN integer", "area": "holding", "address": 1212, "type": "int16", "access": "R"},
    {"name": "VoltAN integer", "area": "holding", "address": 1213, "type": "int16", "access": "R"},
    {"name": "VoltBN integer", "area": "holding", "address": 1214, "type": "int16", "access": "R"},
    {"name": "VoltCN integer", "area": "holding", "address": 1215, "type": "int16", "access": "R"},
    {"name": "VoltAvgLL integer", "area": "holding", "address": 1216, "type": "int16", "access": "R"},
    {"name": "VoltAB integer", "area": "holding", "address": 1217, "type": "int16", "access": "R"},
    {"name": "VoltBC integer", "area": "holding", "address": 1218, "type": "int16", "access": "R"},
    {"name": "VoltCA integer", "area": "holding", "address": 1219, "type": "int16", "access": "R"},
    {"name": "Freq integer", "area": "holding", "address": 1220, "type": "int16", "access": "R"},
    {"name": "Energy1 integer", "area": "holding", "address": 1300, "type": "int32", "access": "R"},
    {"name": "Energy2 integer", "area": "holding", "address": 1302, "type": "int32", "access": "R"},
    {"name": "Energy3 integer", "area": "holding", "address": 1304, "type": "int32", "access": "R"},
    {"name": "EnergyPos1 integer", "area": "holding", "address": 1306, "type": "int32", "access": "R"},
    {"name": "EnergyPos2 integer", "area": "holding", "address": 1308, "type": "int32", "access": "R"},
    {"name": "EnergyPos3 integer", "area": "holding", "address": 1310, "type": "int32", "access": "R"},
    {"name": "EnergyNegSum integer", "area": "holding", "address": 1312, "type": "int32", "access": "R"},
    {"name": "EnergyNegSumNR integer", "area": "holding", "address": 1314, "type": "int32", "access": "R"},
    {"name": "EnergyNeg1 integer", "area": "holding", "address": 1316, "type": "int32", "access": "R"},
    {"name": "EnergyNeg2 integer", "area": "holding", "address": 1318, "type": "int32", "access": "R"},
    {"name": "EnergyNeg3 integer", "area": "holding", "address": 1320, "type": "int32", "access": "R"},
    {"name": "EnergyReacSum integer", "area": "holding", "address": 1322, "type": "int32", "access": "R"},
    {"name": "EnergyReac1 integer", "area": "holding", "address": 1324, "type": "int32", "access": "R"},
    {"name": "EnergyReac2 integer", "area": "holding", "address": 1326, "type": "int32", "access": "R"},
    {"name": "EnergyReac3 integer", "area": "holding", "address": 1328, "type": "int32", "access": "R"},
    {"name": "EnergyAppSum integer", "area": "holding", "address": 1330, "type": "int32", "access": "R"},
    {"name": "EnergyApp1 integer", "area": "holding", "address": 1332, "type": "int32", "access": "R"},
    {"name": "EnergyApp2 integer", "area": "holding", "address": 1334, "type": "int32", "access": "R"},
    {"name": "EnergyApp3 integer", "area": "holding", "address": 1336, "type": "int32", "access": "R"},
    {"name": "PowerFactorAvg integer", "area": "holding", "address": 1338, "type": "int16", "access": "R"},
    {"name": "PowerFactor1 integer", "area": "holding", "address": 1339, "type": "int16", "access": "R"},
    {"name": "PowerFactor2 integer", "area": "holding", "address": 1340, "type": "int16", "access": "R"},
    {"name": "PowerFactor3 integer", "area": "holding", "address": 1341, "type": "int16", "access": "R"},
    {"name": "PowerReacSum integer", "area": "holding", "address": 1342, "type": "int16", "access": "R"},
    {"name": "PowerReac1 integer", "area": "holding", "address": 1343, "type": "int16", "access": "R"},
    {"name": "PowerReac2 integer", "area": "holding", "address": 1344, "type": "int16", "access": "R"},
    {"name": "PowerReac3 integer", "area": "holding", "address": 1345, "type": "int16", "access": "R"},
    {"name": "PowerAppSum integer", "area": "holding", "address": 1346, "type": "int16", "access": "R"},
    {"name": "PowerApp1 integer", "area": "holding", "address": 1347, "type": "int16", "access": "R"},
    {"name": "PowerApp2 integer", "area": "holding", "address": 1348, "type": "int16", "access": "R"},
    {"name": "PowerApp3 integer", "area": "holding", "address": 1349, "type": "int16", "access": "R"},
    {"name": "Current1 integer", "area": "holding", "address": 1350, "type": "int16", "access": "R"},
    {"name": "Current2 integer", "area": "holding", "address": 1351, "type": "int16", "access": "R"},
    {"name": "Current3 integer", "area": "holding", "address": 1352, "type": "int16", "access": "R"},
    {"name": "DemandSum integer", "area": "holding", "address": 1353, "type": "int16", "access": "R"},
    {"name": "DemandSumMin integer", "area": "holding", "address": 1354, "type": "int16", "access": "R"},
    {"name": "DemandSumMax integer", "area": "holding", "address": 1355, "type": "int16", "access": "R"},
    {"name": "DemandAppSum integer", "area": "holding", "address": 1356, "type": "int16", "access": "R"},
    {"name": "Demand1 integer", "area": "holding", "address": 1357, "type": "int16", "access": "R"},
    {"name": "Demand2 integer", "area": "holding", "address": 1358, "type": "int16", "access": "R"},
    {"name": "Demand3 integer", "area": "holding", "address": 1359, "type": "int16", "access": "R"},
    {"name": "EnergyReacPos1 integer", "area": "holding", "address": 1363, "type": "int32", "access": "R"},
    {"name": "EnergyReacPos2 integer", "area": "holding", "address": 1365, "type": "int32", "access": "R"},
    {"name": "EnergyReacPos3 integer", "area": "holding", "address": 1367, "type": "int32", "access": "R"},
    {"name": "EnergyReacPosSum integer", "area": "holding", "address": 1369, "type": "int32", "access": "R"},
    {"name": "EnergyReacNeg1 integer", "area": "holding", "address": 1371, "type": "int32", "access": "R"},
    {"name": "EnergyReacNeg2 integer", "area": "holding", "address": 1373, "type": "int32", "access": "R"},
    {"name": "EnergyReacNeg3 integer", "area": "holding", "address": 1375, "type": "int32", "access": "R"},
    {"name": "EnergyReacNegSum integer", "area": "holding", "address": 1377, "type": "int32", "access": "R"},
    {"name": "ConfigPasscode", "area": "holding", "address": 1600, "type": "uint32", "access": "R"},
    {"name": "CtAmps", "area": "holding", "address": 1602, "type": "uint16", "access": "R"},
    {"name": "CtAmps1", "area": "holding", "address": 1603, "type": "uint16", "access": "R"},
    {"name": "CtAmps2", "area": "holding", "address": 1604, "type": "uint16", "access": "R"},
    {"name": "CtAmps3", "area": "holding", "address": 1605, "type": "uint16", "access": "R"},
    {"name": "CtDirections", "area": "holding", "address": 1606, "type": "uint16", "access": "R"},
    {"name": "Averaging", "area": "holding", "address": 1607, "type": "uint16", "access": "R"},
    {"name": "PowerIntScale", "area": "holding", "address": 1608, "type": "uint16", "access": "R"},
    {"name": "DemPerMins", "area": "holding", "address": 1609, "type": "uint16", "access": "R"},
    {"name": "DemSubints", "area": "holding", "address": 1610, "type": "uint16", "access": "R"},
    {"name": "GainAdjust1", "area": "holding", "address": 1611, "type": "uint16", "access": "R"},
    {"name": "GainAdjust2", "area": "holding", "address": 1612, "type": "uint16", "access": "R"},
    {"name": "GainAdjust3", "area": "holding", "address": 1613, "type": "uint16", "access": "R"},
    {"name": "PhaseAdjust1", "area": "holding", "address": 1614, "type": "int16", "access": "R"},
    {"name": "PhaseAdjust2", "area": "holding", "address": 1615, "type": "int16", "access": "R"},
    {"name": "PhaseAdjust3", "area": "holding", "address": 1616, "type": "int16", "access": "R"},
    {"name": "CreepLimit", "area": "holding", "address": 1617, "type": "uint16", "access": "R"},
    {"name": "ZeroEnergy", "area": "holding", "address": 1619, "type": "uint16", "access": "R"},
    {"name": "ZeroDemand", "area": "holding", "address": 1620, "type": "uint16", "access": "R"},
    {"name": "CurrentIntScale", "area": "holding", "address": 1621, "type": "uint16", "access": "R"},
    {"name": "MeterConfig1", "area": "holding", "address": 1623, "type": "uint16", "access": "R"},
    {"name": "MeterConfig2", "area": "holding", "address": 1624, "type": "uint16", "access": "R"},
    {"name": "MeterConfig3", "area": "holding", "address": 1625, "type": "uint16", "access": "R"},
    {"name": "ChangeCounter", "area": "holding", "address": 1627, "type": "uint16", "access": "R"},
    {"name": "NominalCtVolts1", "area": "holding", "address": 1628, "type": "float32", "access": "R"},
    {"name": "NominalCtVolts2", "area": "holding", "address": 1630, "type": "float32", "access": "R"},
    {"name": "NominalCtVolts3", "area": "holding", "address": 1632, "type": "float32", "access": "R"},
    {"name": "ConnectionType", "area": "holding", "address": 1635, "type": "uint16", "access": "R"},
    {"name": "VoltsNoiseFloor", "area": "holding", "address": 1636, "type": "uint16", "access": "R"},
    {"name": "CtMonitoring", "area": "holding", "address": 1637, "type": "uint16", "access": "R"},
    {"name": "PtRatio", "area": "holding", "address": 1638, "type": "float32", "access": "R"},
    {"name": "ApplyComConfig", "area": "holding", "address": 1650, "type": "uint16", "access": "R"},
    {"name": "Address", "area": "holding", "address": 1651, "type": "uint16", "access": "R"},
    {"name": "BaudRate", "area": "holding", "address": 1652, "type": "uint16", "access": "R"},
    {"name": "ParityMode", "area": "holding", "address": 1653, "type": "uint16", "access": "R"},
    {"name": "ModbusMode", "area": "holding", "address": 1654, "type": "uint16", "access": "R"},
    {"name": "ReplyDelay", "area": "holding", "address": 1655, "type": "uint16", "access": "R"},
    {"name": "SerialNumberKey", "area": "holding", "address": 1656, "type": "uint32", "access": "R"},
    {"name": "NewAddress", "area": "holding", "address": 1658, "type": "uint16", "access": "R"},
    {"name": "OptSignedCurrent", "area": "holding", "address": 1684, "type": "uint16", "access": "R"},
    {"name": "OptEnergySumMethod", "area": "holding", "address": 1685, "type": "uint16", "access": "R"},
    {"name": "SerialNumber", "area": "holding", "address": 1700, "type": "uint32", "access": "R"},
    {"name": "UptimeSecs", "area": "holding", "address": 1702, "type": "uint32", "access": "R"},
    {"name": "TotalSecs", "area": "holding", "address": 1704, "type": "uint32", "access": "R"},
    {"name": "Model", "area": "holding", "address": 1706, "type": "uint16", "access": "R"},
    {"name": "Version", "area": "holding", "address": 1707, "type": "uint16", "access": "R"},
    {"name": "Options", "area": "holding", "address": 1708, "type": "uint16", "access": "R"},
    {"name": "ErrorStatusQueue", "area": "holding", "address": 1709, "type": "uint16", "access": "R"},
    {"name": "PowerFailCount", "area": "holding", "address": 1710, "type": "uint16", "access": "R"},
    {"name": "CrcErrorCount", "area": "holding", "address": 1711, "type": "uint16", "access": "R"},
    {"name": "FrameErrorCount", "area": "holding", "address": 1712, "type": "uint16", "access": "R"},
    {"name": "PacketErrorCount", "area": "holding", "address": 1713, "type": "uint16", "access": "R"},
    {"name": "OverrunCount", "area": "holding", "address": 1714, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus1", "area": "holding", "address": 1715, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus2", "area": "holding", "address": 1716, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus3", "area": "holding", "address": 1717, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus4", "area": "holding", "address": 1718, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus5", "area": "holding", "address": 1719, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus6", "area": "holding", "address": 1720, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus7", "area": "holding", "address": 1721, "type": "uint16", "access": "R"},
    {"name": "ErrorStatus8", "area": "holding", "address": 1722, "type": "uint16", "access": "R"},
    {"name": "CtStatus1", "area": "holding", "address": 1759, "type": "uint16", "access": "R"},
    {"name": "CtStatus2", "area": "holding", "address": 1760, "type": "uint16", "access": "R"},
    {"name": "CtStatus3", "area": "holding", "address": 1761, "type": "uint16", "access": "R"}
  ]
}
