{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Chint", "model": "DDSU666", "models": ["DDSU666", "DDSU666.004.0006"], "vendor_website": "chintglobal.com", "description": "Single-phase DIN-rail energy meter with RS485: voltage, current, power, power factor, frequency and import/export energy", "revision": 3, "revised": "2026-10-18", "source": "Chint, DDSU666 single-phase electronic energy meter (DIN-rail) manuals ZTY0.464.922 and ZTY0.464.1036, appendix A (MODBUS-RTU)", "sources": [{"title": "DDSU666 Single-phase electronic type guide rail mounting electric energy meter, User manual", "version": "ZTY0.464.922", "note": "parameter tables, including meter type and reverse energy"}, {"title": "DDSU666.004.0006 type single phase electronic energy meter (DIN-Rail), Operation manual", "version": "ZTY0.464.1036", "note": "parameter tables and appendix A"}], "notes": ["Function codes 03 (read) and 10 (write multiple registers). The meter ships with the DL/T 645-2007 protocol: write 2 to the Protocol register to switch to Modbus-RTU.", "Floats are IEEE 754 single precision, high word first. Values are on the secondary side and already in engineering units.", "Frame format: 8 data bits and no parity; the manual's appendix says two stop bits ('other formats can be customized'), while the display example shows one stop bit. The map uses one stop bit.", "The baud rate table lists 2400, 4800 and 9600; the text also mentions 1200."], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "databits": 8, "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 0, "x_status": "official", "registers": [ {"name": "Programming code", "group": "Settings", "area": "holding", "address": "0x0000", "type": "uint16", "access": "RW", "description": "Programming password"}, {"name": "Version", "group": "Settings", "area": "holding", "address": "0x0001", "type": "uint16", "access": "R", "description": "Reads the version number"}, {"name": "Energy reset", "group": "Settings", "area": "holding", "address": "0x0002", "type": "uint16", "access": "RW", "comment": "Write 1 to clear the energy counters", "write_min": 0, "write_max": 1}, {"name": "Protocol", "group": "Communication", "area": "holding", "address": "0x0005", "type": "uint16", "access": "RW", "enum": {"1": "DL/T 645-2007", "2": "Modbus-RTU"}, "description": "The meter leaves the factory on DL/T 645; write 2 to use Modbus-RTU"}, {"name": "Modbus address", "group": "Communication", "area": "holding", "address": "0x0006", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 247}, {"name": "Meter type", "group": "Settings", "area": "holding", "address": "0x000B", "type": "uint16", "access": "R", "comment": "Listed in the ZTY0.464.922 manual only"}, {"name": "Baud rate", "group": "Communication", "area": "holding", "address": "0x000C", "type": "uint16", "access": "RW", "enum": {"1": "2400 bps", "2": "4800 bps", "3": "9600 bps"}}, {"name": "Voltage", "group": "Measurements", "area": "holding", "address": "0x2000", "type": "float32", "unit": "V"}, {"name": "Current", "group": "Measurements", "area": "holding", "address": "0x2002", "type": "float32", "unit": "A"}, {"name": "Active power", "group": "Measurements", "area": "holding", "address": "0x2004", "type": "float32", "unit": "kW"}, {"name": "Reactive power", "group": "Measurements", "area": "holding", "address": "0x2006", "type": "float32", "unit": "kvar"}, {"name": "Power factor", "group": "Measurements", "area": "holding", "address": "0x200A", "type": "float32"}, {"name": "Frequency", "group": "Measurements", "area": "holding", "address": "0x200E", "type": "float32", "unit": "Hz"}, {"name": "Import active energy", "group": "Energy", "area": "holding", "address": "0x4000", "type": "float32", "unit": "kWh"}, {"name": "Export active energy", "group": "Energy", "area": "holding", "address": "0x400A", "type": "float32", "unit": "kWh", "comment": "Listed as -Ep (reverse energy) in the ZTY0.464.922 manual only"} ] }