{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Growatt", "model": "TL3-X / MAX / MIX / SPH inverters", "models": ["TL3-X", "MAX", "MIX", "SPH inverters"], "vendor_website": "growatt.com", "description": "Grid-tied and storage inverters that use the first register group (0-124) of the Growatt protocol", "revision": 2, "revised": "2026-10-18", "source": "Growatt Inverter Modbus RTU Protocol V1.24", "sources": [ { "title": "Growatt Inverter Modbus RTU Protocol", "version": "V1.24", "url": "https://github.com/johanmeijer/grott/raw/master/documentatie/Growatt-Inverter-Modbus-RTU-Protocol-II-V1-24-English-new.pdf", "note": "holding registers 0-88 and input registers 0-119 (first group)" } ], "notes": [ "This map covers the first register group (0-124), used by TL3-X (MAX, MID, MAC), MAX 1500V, MIX and SPH inverters.", "TL-X / TL-XH (MIN) and MOD TL3-XH inverters use the 3000-3374 range instead and are not covered by this map.", "32-bit values are sent high word first (H, then L).", "Default serial settings: 9600 baud, 8N1; the address range is 1-254." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "byte_order": "big", "word_order": "big", "address_base": 0, "max_read_registers": 125, "x_status": "official", "registers": [ {"name": "Inverter status", "group": "Status", "area": "input", "address": 0, "type": "uint16", "enum": {"0": "Waiting", "1": "Normal", "3": "Fault"}}, {"name": "PV input power", "group": "PV", "area": "input", "address": 1, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV1 voltage", "group": "PV", "area": "input", "address": 3, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV1 current", "group": "PV", "area": "input", "address": 4, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV1 power", "group": "PV", "area": "input", "address": 5, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV2 voltage", "group": "PV", "area": "input", "address": 7, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV2 current", "group": "PV", "area": "input", "address": 8, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV2 power", "group": "PV", "area": "input", "address": 9, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV3 voltage", "group": "PV", "area": "input", "address": 11, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV3 current", "group": "PV", "area": "input", "address": 12, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV3 power", "group": "PV", "area": "input", "address": 13, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV4 voltage", "group": "PV", "area": "input", "address": 15, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV4 current", "group": "PV", "area": "input", "address": 16, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV4 power", "group": "PV", "area": "input", "address": 17, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV5 voltage", "group": "PV", "area": "input", "address": 19, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV5 current", "group": "PV", "area": "input", "address": 20, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV5 power", "group": "PV", "area": "input", "address": 21, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV6 voltage", "group": "PV", "area": "input", "address": 23, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV6 current", "group": "PV", "area": "input", "address": 24, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV6 power", "group": "PV", "area": "input", "address": 25, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV7 voltage", "group": "PV", "area": "input", "address": 27, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV7 current", "group": "PV", "area": "input", "address": 28, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV7 power", "group": "PV", "area": "input", "address": 29, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "PV8 voltage", "group": "PV", "area": "input", "address": 31, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "PV8 current", "group": "PV", "area": "input", "address": 32, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "PV8 power", "group": "PV", "area": "input", "address": 33, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "Output power", "group": "Grid", "area": "input", "address": 35, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "Grid frequency", "group": "Grid", "area": "input", "address": 37, "type": "uint16", "scale": 0.01, "unit": "Hz"}, {"name": "Grid voltage 1", "group": "Grid", "area": "input", "address": 38, "type": "uint16", "description": "Phase voltage (phase 1 also on single-phase models)", "scale": 0.1, "unit": "V"}, {"name": "Grid current 1", "group": "Grid", "area": "input", "address": 39, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "Grid power 1", "group": "Grid", "area": "input", "address": 40, "type": "uint32", "scale": 0.1, "unit": "VA"}, {"name": "Grid voltage 2", "group": "Grid", "area": "input", "address": 42, "type": "uint16", "description": "Phase voltage (phase 1 also on single-phase models)", "scale": 0.1, "unit": "V"}, {"name": "Grid current 2", "group": "Grid", "area": "input", "address": 43, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "Grid power 2", "group": "Grid", "area": "input", "address": 44, "type": "uint32", "scale": 0.1, "unit": "VA"}, {"name": "Grid voltage 3", "group": "Grid", "area": "input", "address": 46, "type": "uint16", "description": "Phase voltage (phase 1 also on single-phase models)", "scale": 0.1, "unit": "V"}, {"name": "Grid current 3", "group": "Grid", "area": "input", "address": 47, "type": "uint16", "scale": 0.1, "unit": "A"}, {"name": "Grid power 3", "group": "Grid", "area": "input", "address": 48, "type": "uint32", "scale": 0.1, "unit": "VA"}, {"name": "Line voltage RS", "group": "Grid", "area": "input", "address": 50, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "Line voltage ST", "group": "Grid", "area": "input", "address": 51, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "Line voltage TR", "group": "Grid", "area": "input", "address": 52, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "Energy today", "group": "Energy", "area": "input", "address": 53, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "Energy total", "group": "Energy", "area": "input", "address": 55, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "Work time total", "group": "Energy", "area": "input", "address": 57, "type": "uint32", "scale": 0.5, "unit": "s"}, {"name": "PV1 energy today", "group": "Energy", "area": "input", "address": 59, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV1 energy total", "group": "Energy", "area": "input", "address": 61, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV2 energy today", "group": "Energy", "area": "input", "address": 63, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV2 energy total", "group": "Energy", "area": "input", "address": 65, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV3 energy today", "group": "Energy", "area": "input", "address": 67, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV3 energy total", "group": "Energy", "area": "input", "address": 69, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV4 energy today", "group": "Energy", "area": "input", "address": 71, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV4 energy total", "group": "Energy", "area": "input", "address": 73, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV5 energy today", "group": "Energy", "area": "input", "address": 75, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV5 energy total", "group": "Energy", "area": "input", "address": 77, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV6 energy today", "group": "Energy", "area": "input", "address": 79, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV6 energy total", "group": "Energy", "area": "input", "address": 81, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV7 energy today", "group": "Energy", "area": "input", "address": 83, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV7 energy total", "group": "Energy", "area": "input", "address": 85, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV8 energy today", "group": "Energy", "area": "input", "address": 87, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV8 energy total", "group": "Energy", "area": "input", "address": 89, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "PV energy total", "group": "Energy", "area": "input", "address": 91, "type": "uint32", "scale": 0.1, "unit": "kWh"}, {"name": "Inverter temperature", "group": "Inverter", "area": "input", "address": 93, "type": "uint16", "scale": 0.1, "unit": "°C"}, {"name": "IPM temperature", "group": "Inverter", "area": "input", "address": 94, "type": "uint16", "scale": 0.1, "unit": "°C"}, {"name": "Boost temperature", "group": "Inverter", "area": "input", "address": 95, "type": "uint16", "scale": 0.1, "unit": "°C"}, {"name": "Battery voltage (DSP)", "group": "Inverter", "area": "input", "address": 97, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "P bus voltage", "group": "Inverter", "area": "input", "address": 98, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "N bus voltage", "group": "Inverter", "area": "input", "address": 99, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "Output power factor", "group": "Grid", "area": "input", "address": 100, "type": "uint16", "description": "0-20000: raw value of the PF command (see holding 5)"}, {"name": "Real output power percent", "group": "Grid", "area": "input", "address": 101, "type": "uint16", "unit": "%"}, {"name": "Output max power limit", "group": "Grid", "area": "input", "address": 102, "type": "uint32", "scale": 0.1, "unit": "W"}, {"name": "Derating mode", "group": "Status", "area": "input", "address": 104, "type": "uint16", "enum": {"0": "No derating", "1": "PV", "3": "Vac", "4": "Fac", "5": "Boost temperature", "6": "Inverter temperature", "7": "Control", "9": "Overload back by time"}}, {"name": "Fault main code", "group": "Status", "area": "input", "address": 105, "type": "uint16"}, {"name": "Fault sub code", "group": "Status", "area": "input", "address": 107, "type": "uint16"}, {"name": "Warning bits high", "group": "Status", "area": "input", "address": 110, "type": "uint16"}, {"name": "Warning sub code", "group": "Status", "area": "input", "address": 111, "type": "uint16"}, {"name": "Warning main code", "group": "Status", "area": "input", "address": 112, "type": "uint16"}, {"name": "Priority", "group": "Status", "area": "input", "address": 118, "type": "uint16", "enum": {"0": "Load first", "1": "Battery first", "2": "Grid first"}, "description": "Storage models (MIX/SPA/SPH) only"}, {"name": "Battery type", "group": "Status", "area": "input", "address": 119, "type": "uint16", "enum": {"0": "Lead-acid", "1": "Lithium"}, "description": "Storage models (MIX/SPA/SPH) only"}, {"name": "Remote on/off", "group": "Control", "area": "holding", "address": 0, "type": "uint16", "access": "RW", "enum": {"0": "Inverter off", "1": "Inverter on", "2": "BDC off", "3": "BDC on"}}, {"name": "Remember power settings", "group": "Control", "area": "holding", "address": 2, "type": "uint16", "access": "RW", "enum": {"0": "No", "1": "Yes"}, "description": "Whether registers 3, 4, 5 and 99 keep their value after a restart"}, {"name": "Active power rate", "group": "Control", "area": "holding", "address": 3, "type": "uint16", "access": "RW", "enum": {"255": "Not limited"}, "description": "0-100, or 255 for no limit", "unit": "%"}, {"name": "Reactive power rate", "group": "Control", "area": "holding", "address": 4, "type": "int16", "access": "RW", "enum": {"255": "Not limited"}, "description": "-100 to 100, or 255 for no limit", "unit": "%"}, {"name": "Power factor command", "group": "Control", "area": "holding", "address": 5, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 20000, "description": "PF x 10000; 0-10000 under-excited, above over-excited"}, {"name": "Nominal power", "group": "Info", "area": "holding", "address": 6, "type": "uint32", "scale": 0.1, "unit": "VA"}, {"name": "Nominal PV voltage", "group": "Info", "area": "holding", "address": 8, "type": "uint16", "scale": 0.1, "unit": "V"}, {"name": "Firmware version", "group": "Info", "area": "holding", "address": 9, "type": "string", "length": 3, "role": "firmware"}, {"name": "Control firmware version", "group": "Info", "area": "holding", "address": 12, "type": "string", "length": 3}, {"name": "LCD language", "group": "Settings", "area": "holding", "address": 15, "type": "uint16", "access": "RW", "enum": {"0": "Italian", "1": "English", "2": "German", "3": "Spanish", "4": "French", "5": "Chinese", "6": "Polish", "7": "Portuguese", "8": "Hungarian"}}, {"name": "PV start voltage", "group": "Settings", "area": "holding", "address": 17, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "V"}, {"name": "Start time", "group": "Settings", "area": "holding", "address": 18, "type": "uint16", "access": "RW", "unit": "s"}, {"name": "Restart delay after fault", "group": "Settings", "area": "holding", "address": 19, "type": "uint16", "access": "RW", "unit": "s"}, {"name": "Power start slope", "group": "Settings", "area": "holding", "address": 20, "type": "uint16", "access": "RW", "write_min": 0.1, "write_max": 100, "scale": 0.1, "unit": "%"}, {"name": "Power restart slope", "group": "Settings", "area": "holding", "address": 21, "type": "uint16", "access": "RW", "write_min": 0.1, "write_max": 100, "scale": 0.1, "unit": "%"}, {"name": "Baud rate", "group": "Settings", "area": "holding", "address": 22, "type": "uint16", "access": "RW", "enum": {"0": "9600", "1": "38400"}}, {"name": "Serial number", "group": "Info", "area": "holding", "address": 23, "type": "string", "length": 5, "role": "serial"}, {"name": "Inverter module", "group": "Info", "area": "holding", "address": 28, "type": "uint32"}, {"name": "Modbus address", "group": "Settings", "area": "holding", "address": 30, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 254}, {"name": "Manufacturer information", "group": "Info", "area": "holding", "address": 34, "type": "string", "length": 8}, {"name": "Device type code", "group": "Info", "area": "holding", "address": 43, "type": "uint16"}, {"name": "Trackers and phases", "group": "Info", "area": "holding", "address": 44, "type": "uint16", "description": "High byte: number of MPPT trackers; low byte: output phases (0x0203 = 2 MPPT, 3 phases)"}, {"name": "System time year", "group": "Clock", "area": "holding", "address": 45, "type": "uint16", "access": "RW"}, {"name": "System time month", "group": "Clock", "area": "holding", "address": 46, "type": "uint16", "access": "RW"}, {"name": "System time day", "group": "Clock", "area": "holding", "address": 47, "type": "uint16", "access": "RW"}, {"name": "System time hour", "group": "Clock", "area": "holding", "address": 48, "type": "uint16", "access": "RW"}, {"name": "System time minute", "group": "Clock", "area": "holding", "address": 49, "type": "uint16", "access": "RW"}, {"name": "System time second", "group": "Clock", "area": "holding", "address": 50, "type": "uint16", "access": "RW"}, {"name": "System weekday", "group": "Clock", "area": "holding", "address": 51, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 6}, {"name": "Modbus version", "group": "Info", "area": "holding", "address": 88, "type": "uint16", "scale": 0.01} ] }