GoodWe Hybrid Inverter (EMS protocol) Modbus register map

GoodWe hybrid inverters expose a Modbus map for third-party energy management systems. Read-only registers give PV, grid, battery, meter and BMS values; writable registers set the battery power mode, export limit and battery protection limits.

Protocol
Modbus RTU and Modbus TCP
Defaults
RTU at 9600 bps. Device address 1 to 247, 247 by default. Modbus TCP uses port 502, must be enabled through SEMS+, and uses the same slave ID (PDF p. 8, 24-25).
Addresses in the manual
0-based protocol addresses, as sent on the wire
32 and 64-bit values
High word first (AB CD)
Registers listed
85
Checked against
Third-Party EMS Protocol MODBUS_V1.1.1

Address base. The manual does not state an address offset. Its request frame has a "first register" field described as the address of the first register, and the table address is the value to place there (PDF p. 5-6, 10). The only frame examples use small raw values such as 0000H. Address 33001 in the manual is address 33001 on the wire.

Word order. The manual says long integer data is sent as two registers from the most significant part to the least significant part (PDF p. 4).

Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.

Downloads

The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.

Registers

85 registers
Manual Wire Register Type Regs Unit Scale Access Area
33001 33001 Maximum charge powerMax_Charge_Power · Read once only. uint32 2 W 1 R Holding (FC03)
33004 33004 Maximum discharge powerMax_Discharge_Power · Read once only. uint32 2 W 1 R Holding (FC03)
33006 33006 Maximum PV powerMax_PV_Power · Read once only. uint32 2 W 1 R Holding (FC03)
35001 35001 Inverter rated powerRated_Power · Read once only. No unit is printed in the manual. uint16 1 1 R Holding (FC03)
35003 35003 Inverter serial numberInverter_SN · ASCII, 16 bytes; read all registers together. string 8 1 R Holding (FC03)
35011 35011 Model nameModel_Name · ASCII, 10 bytes; only for EH and ET PLUS models. string 5 1 R Holding (FC03)
35060 35060 External model nameExternal_Model_Name string 16 1 R Holding (FC03)
35103 35103 PV1 voltagePV1_Voltage uint16 1 V 0.1 R Holding (FC03)
35104 35104 PV1 currentPV1_Current uint16 1 A 0.1 R Holding (FC03)
35107 35107 PV2 voltagePV2_Voltage uint16 1 V 0.1 R Holding (FC03)
35108 35108 PV2 currentPV2_Current uint16 1 A 0.1 R Holding (FC03)
35111 35111 PV3 voltagePV3_Voltage uint16 1 V 0.1 R Holding (FC03)
35112 35112 PV3 currentPV3_Current uint16 1 A 0.1 R Holding (FC03)
35115 35115 PV4 voltagePV4_Voltage uint16 1 V 0.1 R Holding (FC03)
35116 35116 PV4 currentPV4_Current uint16 1 A 0.1 R Holding (FC03)
35105 35105 MPPT 1 powerMPPT1_Power · 200 ms average. uint32 2 W 1 R Holding (FC03)
35345 35345 MPPT 1 currentMPPT1_Current uint16 1 A 0.1 R Holding (FC03)
35109 35109 MPPT 2 powerMPPT2_Power · 200 ms average. uint32 2 W 1 R Holding (FC03)
35346 35346 MPPT 2 currentMPPT2_Current uint16 1 A 0.1 R Holding (FC03)
35113 35113 MPPT 3 powerMPPT3_Power · 200 ms average. uint32 2 W 1 R Holding (FC03)
35347 35347 MPPT 3 currentMPPT3_Current uint16 1 A 0.1 R Holding (FC03)
35117 35117 MPPT 4 powerMPPT4_Power · 200 ms average. uint32 2 W 1 R Holding (FC03)
35348 35348 MPPT 4 currentMPPT4_Current uint16 1 A 0.1 R Holding (FC03)
35121 35121 R phase inverter voltageR_Phase_Voltage uint16 1 V 0.1 R Holding (FC03)
35122 35122 R phase inverter currentR_Phase_Current uint16 1 A 0.1 R Holding (FC03)
35123 35123 R phase inverter frequencyR_Phase_Frequency uint16 1 Hz 0.01 R Holding (FC03)
35124 35124 R phase inverter powerR_Phase_Power int32 2 W 1 R Holding (FC03)
35126 35126 S phase inverter voltageS_Phase_Voltage uint16 1 V 0.1 R Holding (FC03)
35127 35127 S phase inverter currentS_Phase_Current uint16 1 A 0.1 R Holding (FC03)
35128 35128 S phase inverter frequencyS_Phase_Frequency uint16 1 Hz 0.01 R Holding (FC03)
35129 35129 S phase inverter powerS_Phase_Power int32 2 W 1 R Holding (FC03)
35131 35131 T phase inverter voltageT_Phase_Voltage uint16 1 V 0.1 R Holding (FC03)
35132 35132 T phase inverter currentT_Phase_Current uint16 1 A 0.1 R Holding (FC03)
35133 35133 T phase inverter frequencyT_Phase_Frequency uint16 1 Hz 0.01 R Holding (FC03)
35134 35134 T phase inverter powerT_Phase_Power int32 2 W 1 R Holding (FC03)
35137 35137 Total inverter active powerTotal_Inverter_Power int32 2 W 1 R Holding (FC03)
35139 35139 Total on-grid active powerAC_Active_Power · Equals meter power when the meter connection is good, otherwise the inverter on-grid port power. int32 2 W 1 R Holding (FC03)
35141 35141 Total reactive powerAC_Reactive_Power int32 2 var 1 R Holding (FC03)
35143 35143 Total apparent powerAC_Apparent_Power int32 2 VA 1 R Holding (FC03)
35169 35169 Total back-up load powerBackup_Load_Power int32 2 W 1 R Holding (FC03)
35171 35171 Total on-grid load powerTotal_Load_Power · Back-up load is not included. int32 2 W 1 R Holding (FC03)
35181 35181 Battery 1 currentBattery1_Current int16 1 A 0.1 R Holding (FC03)
35182 35182 Battery 1 powerBattery1_Power · 200 ms average. int32 2 W 1 R Holding (FC03)
35184 35184 Battery 1 modeBattery1_Mode · 0 no battery or disconnected, 1 standby, 2 discharging, 3 charging. uint16 1 1 R Holding (FC03)
35186 35186 Safety country codeSafety_Country · Values are in the manual appendix table 1-1. uint16 1 1 R Holding (FC03)
35187 35187 Inverter work modeWork_Mode · 0 wait, 1 on-grid, 2 off-grid, 3 fault, 4 flash (upgrade), 5 power-on self-check. uint16 1 1 R Holding (FC03)
35301 35301 Total PV powerPV_Total_Power uint32 2 W 1 R Holding (FC03)
36015 36015 Total energy fed to gridEnergy_Total_Sell · Read from the meter. No unit is printed in the manual. float32 2 1 R Holding (FC03)
36017 36017 Total energy bought from gridEnergy_Total_Buy · Read from the meter. No unit is printed in the manual. float32 2 1 R Holding (FC03)
36019 36019 Meter active power R phaseMeter_Active_Power_R int32 2 W 1 R Holding (FC03)
36021 36021 Meter active power S phaseMeter_Active_Power_S int32 2 W 1 R Holding (FC03)
36023 36023 Meter active power T phaseMeter_Active_Power_T int32 2 W 1 R Holding (FC03)
36025 36025 Meter total active powerMeter_Total_Active_Power int32 2 W 1 R Holding (FC03)
36033 36033 Meter total reactive powerMeter_Total_Reactive_Power · The manual prints W as the unit for this reactive power register. int32 2 W 1 R Holding (FC03)
36041 36041 Meter total apparent powerMeter_Total_Apparent_Power · The manual prints W as the unit for this apparent power register. int32 2 W 1 R Holding (FC03)
36052 36052 Meter voltage RMeter_Voltage_R uint16 1 V 0.1 R Holding (FC03)
36053 36053 Meter voltage SMeter_Voltage_S uint16 1 V 0.1 R Holding (FC03)
36054 36054 Meter voltage TMeter_Voltage_T uint16 1 V 0.1 R Holding (FC03)
36055 36055 Meter current RMeter_Current_R uint16 1 A 0.1 R Holding (FC03)
36056 36056 Meter current SMeter_Current_S uint16 1 A 0.1 R Holding (FC03)
36057 36057 Meter current TMeter_Current_T uint16 1 A 0.1 R Holding (FC03)
36133 36133 Meter total active power (second listing)Meter_Total_Active_Power_2 int32 2 W 1 R Holding (FC03)
37004 37004 Maximum BMS charge currentMax_BMS_Charge_Current uint16 1 A 1 R Holding (FC03)
37005 37005 Maximum BMS discharge currentMax_BMS_Discharge_Current uint16 1 A 1 R Holding (FC03)
37007 37007 BMS 1 state of chargeBMS1_SOC uint16 1 % 1 R Holding (FC03)
37008 37008 BMS 1 state of healthBMS1_SOH uint16 1 % 1 R Holding (FC03)
37076 37076 BMS 1 rated capacityBMS1_Rated_Capacity · GoodWe batteries only. uint16 1 kWh 0.1 R Holding (FC03)
37080 37080 BMS 1 battery powerBMS1_Battery_Power · GoodWe batteries only. uint32 2 W 1 R Holding (FC03)
42000 42000 EMS power modeEMS_Power_Mode_A · Values come from the EMS mode table, for example 0x0001 self-use, 0x0002 charge from PV, 0x0003 discharge, 0x0004 import, 0x0005 export, 0x0008 battery standby, 0x000B charge to set power, 0x000C discharge to set power, 0x00FF stopped. Only some models support this register; the manual lists them. Write cycle 1 s. uint16 1 1 RW Holding (FC03)
42001 42001 EMS power set valueEMS_Power_Set_A · Power value used by the EMS power mode in 42000. Only some models support this register. uint32 2 W 1 RW Holding (FC03)
42003 42003 Export power limit enableExport_Limit_Enable_A · 0 disable, 1 enable. Only some models support this register. uint16 1 1 RW Holding (FC03)
42004 42004 Export power limit valueExport_Limit_Parameter_A · Used when the export limit switch is on. The manual says it is the setting to use for single units above 30 kW AC or in parallel operation. int32 2 W 1 RW Holding (FC03)
45350 45350 Battery 1 capacityBattery1_Capacity · Range 25 to 2000. Written once only (flash save). uint16 1 Ah 1 RW Holding (FC03)
45352 45352 Battery 1 maximum charge voltageBattery1_Charge_Voltage_Max · Range 400 to 7200 (raw). Inverter-side protection; the BMS limits still apply. uint16 1 V 0.1 RW Holding (FC03)
45353 45353 Battery 1 maximum charge currentBattery1_Charge_Current_Max · Range 0 to 3000 (raw). Inverter-side protection; the BMS limits still apply. uint16 1 A 0.1 RW Holding (FC03)
45355 45355 Battery 1 maximum discharge currentBattery1_Discharge_Current_Max · Range 0 to 3000 (raw). Inverter-side protection; the BMS limits still apply. uint16 1 A 0.1 RW Holding (FC03)
45356 45356 Battery 1 minimum SOCBattery1_SOC_Under_Min · Range 0 to 100. uint16 1 % 1 RW Holding (FC03)
47505 47505 EMS fallback modeEMS_Fallback_Mode · Behaviour when no EMS instruction arrives within 30 seconds: 2 shut down, 3 self-use mode (only some models), 10 keep the last mode (default). uint16 1 1 RW Holding (FC03)
47509 47509 Export power limit enable (second block)Export_Limit_Enable_B · 1 turns on total power anti-counter-current. Pair with 47510 for the limit value. uint16 1 1 RW Holding (FC03)
47510 47510 Export power limit value (second block)Export_Limit_Parameter_B · Range -30000 to 30000. int16 1 W 1 RW Holding (FC03)
47511 47511 EMS power mode (second block)EMS_Power_Mode_B · Same mode codes as register 42000. Write cycle 1 s. uint16 1 1 RW Holding (FC03)
47512 47512 EMS power set value (second block)EMS_Power_Set_B · Power value used with the mode in 47511. uint16 1 W 1 RW Holding (FC03)
47531 47531 Forced charge start SOCStart_Charge_SOC · Inverter-side protection. Default is 5 percent to start and 10 percent to stop. uint16 1 % 0.1 RW Holding (FC03)
47532 47532 Forced charge stop SOCStop_Charge_SOC uint16 1 % 0.1 RW Holding (FC03)
47603 47603 Grid charge power percentFast_Charge_Power_Percent · Allowed grid charge power, default 100. Range 0 to 100. uint16 1 % 1 RW Holding (FC03)

Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.

Open in Modbus Poll

  1. Download the Modbus Poll blocks file.
  2. Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to AB CD.
  3. In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
  4. The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.

Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.

Source and accuracy

Manufacturer document: Third-Party EMS Protocol MODBUS (simplified version) (tr.goodwe.com)

Third-Party EMS Protocol MODBUS_V1.1.1, PDF p. 4-27. Read on 2026-10-24.

Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.

Found a mistake? Report it by email with the register address and the manual page.

Other solar inverters

All register maps · Modbus addressing explained