TapHome

INVT Goodrive 20 VFD

Modbus TCP
Submitted by
Last updated: 05. 2026

Requires external gateway

INVT SID2 Modbus communication card — product page

INVT Goodrive 20 VFD

The INVT Goodrive 20 (GD20) and Goodrive 20-EU (GD20EU) are mini general-purpose variable frequency drives (VFDs) for 3-phase AC induction motors used in pumps, fans, conveyors and other industrial loads. They speak Modbus RTU on a 2-wire RS-485 bus through INVT’s optional SID2 communication card or the on-board RS-485 terminals.

The TapHome template uses Modbus TCP on port 502 and expects an external RS-485-to-Ethernet gateway (the XML description recommends a Waveshare RS485-to-ETH B converter) to bridge the IP network to the VFD’s RS-485 bus. The template exposes diagnostics — latched fault code, motor RPM, output current and a VFD identification register — together with a Fault Reset push-button. Run/stop, frequency setpoint and live status are not implemented (see the Possible improvements list below).

About the slug name “SID2”. SID2 is INVT’s internal name for the RS-485 communication card option on the GD20 — it has no Ethernet port. The TapHome template still talks Modbus TCP, so an external gateway (Waveshare RS485-to-ETH B, Moxa MGate, USR-W630 or equivalent) is always required. Any standard Modbus TCP-to-RTU converter works; SID2 vs. on-board RS-485 only changes the physical terminal block on the VFD side.

Hardware connection

The communication chain has two stages:

1
TapHome Core ── Modbus TCP (port 502) ── Gateway ── Modbus RTU 2-wire RS-485 ── INVT GD20

The gateway must be on the same local network as TapHome Core and configured with a static IP (DHCP reservation or its own web UI). The gateway’s RS-485 port is wired in parallel with the VFD’s 485+ / 485- terminals.

Wiring of the control circuit
INVT Goodrive 20 control circuit wiring (Figure 3-9) showing 485+/485- terminals, twisted pair, shield and PE

The RS-485 terminals are part of the GD20 control terminal block:

TerminalFunction
485+RS-485 line A (positive)
485-RS-485 line B (negative)
PECable shield / protective earth

Wiring rules (from manual V1.9, section 3.2.4):

  • Use a shielded twisted pair for the RS-485 bus.
  • Connect 485+ of the gateway to 485+ on the VFD, and 485- to 485-.
  • Bond the cable shield to PE at one end only (typically the gateway side).
  • Maximum cable length depends on baud rate — at 19 200 bps with 24 AWG twisted pair the practical limit is roughly 600 m.
  • Route control cables separately from the U/V/W motor cable to avoid noise pickup.
RS-485 bus layout
INVT Goodrive 20 RS-485 bus wiring for a single VFD via RS232/RS485 converter (Figure 7-1)

For a single drive, connect the gateway directly between 485+ and 485- on the VFD. For multiple drives, daisy-chain them on a single bus and place a 120 Ω terminator at each end. Star (chrysanthemum) topology is supported but daisy-chain is preferred for noise immunity. Each VFD on the bus must have a unique slave address (P14.00).

Termination resistor
INVT Goodrive 20 control terminal block with the 485 termination DIP switch (Figures 3-10 and 3-11 — sub-4 kW and 4 kW+ models)

Each GD20 has a small DIP switch block above the control terminals (labelled AO1, AO2, AI2, 485). The 485 switch toggles the on-board 120 Ω termination resistor for the RS-485 line. Set it to ON only on the last VFD at the end of the bus; on intermediate drives leave it OFF. The factory default position is marked by a black rectangle on the switch.

Verify the rear wire-cap. A common cause of communication errors is the small wire-cap on the back of the terminal block that connects the on-board termination to the bus — if it is missing or unseated, the 485 DIP switch has no effect.

Configuration

When importing the template in TapHome, provide:

  • IP Address — the gateway’s address on the local network (default placeholder: 192.168.1.0)
  • Slave ID — Modbus slave address of the VFD (default 1, range 1–247)

Modbus TCP runs on port 502 (hardcoded in the template).

Enabling Modbus communication

The VFD ignores writes from Modbus until the run channel and the frequency source are switched to communication. The relevant parameters all live in the P14 group on the VFD’s keypad menu (manual V1.9, section 5):

ParameterFunctionRecommended valueNotes
P00.01Run command channel2 (Communication)Allows writes to H:0x2000 to control run/stop. Without this, only diagnostic reads work.
P00.06A frequency source8 (Modbus)Required only if the frequency setpoint will be sent over Modbus.
P14.00Local communication address1 (default), unique per driveSlave ID — must match the value entered in TapHome. 0 is reserved for broadcast.
P14.01Communication baud rate4 = 19 200 bps (default)Must match the gateway’s RS-485 setting.
P14.02Data bit check1 = E,8,1 (Even, 8 data bits, 1 stop bit)Must match the gateway. Other RTU options: 0=N,8,1; 2=O,8,1; 3=N,8,2.
P14.04RS-485 timeout period0.0 (disabled)If enabled and the bus goes silent for longer than the configured time, the VFD raises a CE fault (485 communication fault).

The keypad navigation is: PRG → group P14 → select sub-index → press DATA/ENT → adjust value → press DATA/ENT again to save.

The TapHome template only reads diagnostic registers and triggers Fault Reset, so P00.01 and P00.06 are not strictly required. If you only need monitoring, leave the run channel on the keypad/terminals and set just P14.00P14.02 so the VFD answers Modbus reads.

Gateway configuration

The gateway needs the following settings:

  • Operating mode: Modbus TCP server on port 502
  • RS-485 side: baud rate, parity, data and stop bits matching P14.01 and P14.02 (default 19 200, E, 8, 1)
  • Static IP: assigned via the gateway’s web UI or DHCP reservation
  • Transparent or RTU-in-TCP encapsulation is not required — TapHome speaks pure Modbus TCP and the gateway must convert frames internally

If the gateway is configured for “transparent UDP/TCP forwarding” instead of “Modbus TCP server”, TapHome will see timeouts. Use the Modbus protocol mode of the gateway, not raw passthrough.

Device capabilities

The template exposes six devices on the VFD module — all are read-only diagnostics except the empty Fault Reset push-button.

Diagnostics and monitoring
  • Operation Speed — motor rotational speed in RPM, computed internally by the VFD from the running frequency and the configured motor parameters (motor parameter group P02). Reads register H:0x3005, range 0–65535 RPM.
  • Output Current — motor line current from H:0x3004 in 0.1 A units (raw register value). Divide by 10 in TapHome scripts to get amperes; range up to 3000.0 A.
  • VFD Identification Code — model identifier from H:0x3016. Useful for confirming the template is bound to a Goodrive 20 unit (see the note below about the choice of register).
Fault handling
  • Fault Code (latched) — latched fault number from H:0x5000. Persists across a transient fault until the user issues a Fault Reset, so the last fault stays visible on the dashboard. Codes follow the GD20 fault table:

    CodeMnemonicMeaning
    1OUt1Inverter unit U-phase protection
    2OUt2Inverter unit V-phase protection
    3OUt3Inverter unit W-phase protection
    4OC1Overcurrent during acceleration
    5OC2Overcurrent during deceleration
    6OC3Overcurrent at constant speed
    7OV1Overvoltage during acceleration
    8OV2Overvoltage during deceleration
    9OV3Overvoltage at constant speed
    10UVBus undervoltage
    11OL1Motor overload
    12OL2VFD overload
    13SPIPhase loss on input side
    14SPOPhase loss on output side
    15OH1Rectifier module overheat
    16OH2Inverter module overheat
    17EFExternal fault
    18CE485 communication fault
    19ItECurrent detection fault
    20tEMotor auto-tuning fault
    21EEPEEPROM operation fault
    22PIDEPID feedback offline
    23bCEBraking unit fault
    24ENDRunning time reached
    25OL3Electronic overload pre-alarm
    26PCEKeypad communication error
    27UPEParameter upload error
    28DNEParameter download error
    32ETH1To-ground short-circuit fault 1
    33ETH2To-ground short-circuit fault 2
    34dEuSpeed deviation fault
    35SToSynchronous-motor maladjustment
    36LLElectronic underload
  • Fault Reset — push-button device intended to write 0x0007 to the control register H:0x2000. The Read and Write scripts ship empty in the supplied template — the button is visible in TapHome but does not send any Modbus frame when pressed. To make it functional, open the device in the TapHome integration tool and add WriteButtonPressedState = MODBUSW(H, 0x2000, 0x0007), or trigger the same write from a Smart Rule.

Energy meter wrapper (Output Current, mislabelled)
  • Output Current (electricity meter wrapper) — a ModbusElectricityMeter device that maps two service attributes onto the same Output Current register (H:0x3004, 0.1 A units):

    Service attributeUI labelReadsReality
    readtotalconsumptionTotal Consumption (kWh)H:0x3004 / 100Output current scaled by 1/100 — not cumulative energy
    readdemandDemand (W)H:0x3004Raw output current in 0.1 A — not instantaneous power

    The GD20 does not expose a kWh totalizer or an instantaneous power register over Modbus, so the original template fakes them by reading the line current. Use the dedicated Output Current sensor (above) for accurate readings, and ignore the values shown under “Total Consumption” and “Demand”. For real consumption tracking add an external kWh meter on the VFD’s input feed.

Why “Total Consumption” shows amps. The XML reuses register H:0x3004 (Output Current) three times. Both the energy and the power service attribute on the wrapper read the same current register and label it incorrectly. This is a known quirk of the supplied template — see the Possible improvements list for the correct power register (H:0x3006) and the lack of a kWh totalizer.

Troubleshooting

No Modbus communication (timeouts in TapHome)
  1. Ping the gateway from TapHome Core — confirm the static IP is reachable.
  2. Verify the gateway is configured as a Modbus TCP server on port 502 (not raw transparent passthrough).
  3. Confirm the VFD’s slave address (P14.00) matches the Slave ID entered in TapHome.
  4. Match the gateway’s RS-485 settings to P14.01 (baud rate) and P14.02 (parity / data / stop bits) — defaults are 19 200, E, 8, 1.
  5. Check the on-board 485 DIP switch at the end of the bus is ON and that the rear wire-cap of the terminal block is seated.
  6. Swap 485+ and 485- if the LEDs on the gateway are blinking but TapHome reports CRC errors — A/B polarity is the most common wiring mistake.
Drive shows fault CE (18)

The VFD itself has detected an RS-485 communication fault. Check:

  • Wiring polarity (485+ ↔ A, 485- ↔ B).
  • Termination resistor at both ends of the bus (120 Ω each).
  • Cable shield grounded at one end only.
  • Baud rate and parity match between gateway and P14.01 / P14.02.
  • P14.04 (RS-485 timeout) — if a value is set, the VFD must see traffic at least that often. Set to 0.0 to disable the watchdog while debugging.
Fault Reset button has no effect

The supplied template has empty Read/Write scripts on the Fault Reset device. Open the device in the TapHome integration tool and add a write script that sends 0x0007 to register H:0x2000. Until then, reset latched faults from the VFD keypad (STOP/RST button) or by power-cycling the drive.

Operation Speed reads 0 while the motor runs

Operation Speed (H:0x3005) is computed from the running frequency and the motor parameter group P02 (rated frequency, rated speed, pole count). If those motor parameters are at defaults that do not match your motor, the drive may report 0 or nominal nameplate values. Run motor auto-tuning or set the motor nameplate values manually in P02 so the drive can derive RPM correctly.

VFD Identification Code returns an unexpected value

The template reads the undocumented register H:0x3016. The documented identification register is H:0x2103, which returns 0x0106 for both Goodrive 20 and Goodrive 20-EU. If H:0x3016 returns something unfamiliar, treat it as opaque diagnostic data — the VFD is otherwise functional. To switch the read to the documented register, change the script in the TapHome integration tool to MODBUSR(H, 0x2103, Int16).

Available devices

INVT Goodrive 20 VFD Module
Output Current (electricity meter wrapper) Electricity Meter Read-only

ModbusElectricityMeter wrapper — both service attributes read the Output Current register (H:0x3004), so values are in amps, not kWh or watts. See note below.

Register: H:0x3004 Int16 Unit: A direct (0.1 A per LSB)

Output Current (electricity meter wrapper)

Read total consumption
MODBUSR(H, 0x3004, Int16) / 100
Read demand
MODBUSR(H, 0x3004, Int16)
Fault Code (latched) Variable Read-only

Latched VFD fault number from H:0x5000 — persists until a Fault Reset is issued. Codes follow the GD20 fault table (e.g. 1=OUt1 IGBT phase-U fault, 4=OC1 acceleration overcurrent, 18=CE communication fault)

Register: H:0x5000 Int16 numeric (fault code lookup)

Fault Code (latched)

Read
MODBUSR(H, 0x5000, Int16)
Fault Reset Push Button

Push-button device intended to clear a latched VFD fault. Read/Write scripts ship empty in the template — the button must be wired to write 0x0007 to H:0x2000 in the TapHome integration tool before it actually issues a reset

Register: H:0x2000 (intended) Int16 command (write 0x0007 = Fault reset)
Operation Speed Variable Read-only

Motor rotational speed in RPM, computed internally by the VFD from the running frequency and the configured motor parameters (motor parameter group P02). Read from H:0x3005 — value range 0–65535 RPM

Register: H:0x3005 Int16 Unit: RPM

Operation Speed

Read
MODBUSR(H, 0x3005, Int16)
Output Current Variable Read-only

Output line current to the motor in 0.1 A units (raw register value). Read from H:0x3004 — divide by 10 in TapHome scripts to get amperes

Register: H:0x3004 Int16 Unit: A (raw value is 0.1 A) direct (0.1 A per LSB)

Output Current

Read
MODBUSR(H, 0x3004, Int16)
VFD Identification Code Variable Read-only

Model identifier read from H:0x3016. Note: the documented identification register is H:0x2103 (returns 0x0106 for the Goodrive 20 family). The template reads an undocumented alias — treat the value as opaque diagnostic data

Register: H:0x3016 Int16 numeric (model code, undocumented decode)

VFD Identification Code

Read
MODBUSR(H, 0x3016, Int16)
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (16)
  • H:0x2000 Run / Stop / Direction control — Write 0x0001=Forward run, 0x0002=Reverse run, 0x0003=Forward jog, 0x0004=Reverse jog, 0x0005=Stop, 0x0006=Coast to stop, 0x0007=Fault reset, 0x0008=Jog stop. The template has FM_Fault_Reset device but its WriteButtonPressedState is empty so even the documented Fault Reset is not actually issued. There are no Run/Stop/Forward/Reverse buttons at all. Without these the VFD cannot be commanded from TapHome - this is the most significant gap.
  • H:0x2001 Frequency setpoint — 0-Fmax in 0.01 Hz units. Required to drive the motor speed via Modbus when P00.06=8 (frequency source = Modbus). Not exposed by template.
  • H:0x2100 Status word 1 (running state) — 1=Forward running, 2=Reverse running, 3=Stop, 4=Fault, 5=POFF, 6=Pre-exciting. The INVT manual prints '0001=Forward, 0002=Forward' which is a typo - the second value is Reverse. Without this register the user cannot tell from TapHome whether the drive is currently running, stopped, or in fault.
  • H:0x2102 Active (live) fault code — Same fault-table values as H:0x5000 but reflects the CURRENTLY active fault, not the latched one. The template uses the latched register (0x5000) instead. Both are valid; 0x2102 is more useful for live diagnostics, 0x5000 for keeping the last fault visible until reset.
  • H:0x2103 Documented VFD identification code — Returns 0x0106 = Goodrive series (Goodrive 20 vector VFD) for both GD20 and GD20-EU. The template reads 0x3016 instead, which is not documented. EU manual V1.6 has a typo stating 0x0110 in one paragraph - real-world devices return 0x0106.
  • H:0x3000 Running frequency (Hz) — 0-Fmax in 0.01 Hz units. The template reads RPM (0x3005) but not the underlying Hz value. Hz is more useful for VFD diagnostics and PID tuning.
  • H:0x3001 Set frequency (Hz) — Reflects the active frequency reference (0.01 Hz units). Useful to confirm the setpoint sent on 0x2001 is accepted.
  • H:0x3002 DC bus voltage — 0.0-2000.0 V in 0.1 V units. Not in template.
  • H:0x3003 Output voltage — 0-1200 V (1 V units). Combined with output current would allow approximate power computation.
  • H:0x3006 Output power — -300.0 to 300.0% of rated motor power (0.1% units). This is the correct register for 'Demand' / instantaneous power - the template's FM_Elektromer.Demand mislabels output current as power.
  • H:0x3007 Output torque — -250.0 to 250.0% (0.1% units).
  • H:0x3008 / 0x3009 PID setting / PID feedback — -100.0% to 100.0% (0.1% units). For PID control loops.
  • H:0x300C-0x300E Analog inputs AI1 / AI2 / AI3 — AI1/AI2 = 0.00-10.00 V, AI3 = -10.00 to +10.00 V. Useful when external sensors are wired to the VFD terminals.
  • H:0x300A / 0x300B Digital input / output state — Bit-encoded I/O state (0x000-0x1FF). Not in template.
  • — The GD20 does NOT expose a kWh totalizer over Modbus. The XML's FM_Elektromer.TotalConsumption fakes one by reading current and dividing by 100, which is meaningless as energy. For real consumption tracking add an external kWh meter (e.g. Eastron SDM630, Carlo Gavazzi EM24) on the VFD's input feed.
  • — The XML's FM_Elektromer.Demand reads output current and labels it as Demand (typically W). Real instantaneous power is at H:0x3006 (output power, % of rated) - not exposed by the template. To get watts the user must combine bus voltage (0x3002), output current (0x3004), and a power-factor estimate.

Sources

Found a problem with this device template?

Tell us what's wrong, what's missing, or how the template should behave. We rely on your feedback to keep the catalog accurate.

Verified by TapHome

Want to use this in your TapHome Core?

Open this template in the Customer Portal to apply it to one of your homes, or to draft a refinement and submit it back to the catalog.

Open in portal