GridSpecLab

Closed-Loop BMS Communication Setup (CAN vs RS485): Pylontech Protocol Guide

•
Updated:
•
15 min read

In off-grid and energy storage systems, the communication link between the lithium battery management system (BMS) and the hybrid solar inverter is the single most critical factor determining battery longevity, charging efficiency, and system safety.

Yet, thousands of installers operate their multi-thousand-dollar battery banks in open-loop (lead-acid emulation) mode, relying solely on bulk and float voltage setpoints programmed into the inverter.

Within weeks, open-loop systems experience phantom State-of-Charge (SoC) drift, runner cell voltage cutoffs, and premature inverter shutdowns.

Switching to closed-loop BMS communication transforms the system. By connecting a simple twisted-pair data cable using the Pylontech protocol over CAN bus or RS485, the battery BMS takes command. The inverter becomes an intelligent slave, dynamically adjusting charge currents, cell balancing thresholds, and low-temperature protections millisecond-by-millisecond.

In this comprehensive technical manual, we break down why open-loop control fails, examine CAN versus RS485 physical layers, provide exact RJ45 pinouts for leading hardware brands, detail hardware DIP switch addressing, and share our calibrated laboratory diagnostic isolation protocol.

⚡ Core TakeawayProtocol: Pylontech CAN / RS485

Closed-loop communication eliminates the 30% SoC drift caused by open-loop voltage sensing. The BMS broadcasts real-time Charge Voltage Limit (CVL), Charge Current Limit (CCL), and Discharge Current Limit (DCL) telemetry packets. If any individual prismatic cell spikes above 3.55V, the BMS commands the inverter to throttle charging amps instantly—preventing high-voltage disconnect trips without user intervention.

Diagnostic Rule: CAN bus operates at 250kbps with a 60-ohm parallel termination resistance across CAN-H and CAN-L.

Read Cell Balancing Guide →


The Fatal Flaw of Open-Loop Voltage-Based Battery Management

To understand why closed-loop control is mandatory for modern energy storage, technicians must examine the chemical and electrical behavior of lithium iron phosphate (LiFePO4\text{LiFePO}_4).

The Ultra-Flat LiFePO4 Voltage Plateau

Unlike lead-acid chemistry—where open-circuit voltage declines linearly from 12.8V down to 11.8V as capacity drains—LiFePO4\text{LiFePO}_4 exhibits an extraordinarily flat discharge profile. Between 20% and 80% State of Charge, the open-circuit cell voltage barely moves, hovering between 3.28V3.28\text{V} and 3.32V3.32\text{V}:

Lead-Acid / AGMLinear Curve

Predictable Voltage Correlation

Every 10% change in capacity produces a noticeable 100mV100\text{mV} drop in terminal voltage. Inverters can reliably estimate remaining runtime simply by measuring battery bus voltage.

LiFePO4 ChemistryFlat Plateau

Severe Estimation Drift

A miniscule calibration drift of just 10mV10\text{mV} (0.01V0.01\text{V}) on an inverter voltage sensor represents an enormous 25% to 35% error in calculated State of Charge across the working plateau.

Dynamic Voltage Sag and False Low-Voltage Trips

When high-load appliances start up—such as a well pump, central air conditioner, or air compressor—battery current spikes to 100A−200A100\text{A} - 200\text{A}.

Internal cell impedance (RintR_{\text{int}}) and cable resistive drops cause immediate terminal voltage sag (Vterminal=VOCV−I⋅RV_{\text{terminal}} = V_{\text{OCV}} - I \cdot R). In open-loop mode, the inverter reads this instantaneous drop as an empty battery, triggering an audible alarm or shutting down the inverter completely, even when the battery is at 70% true capacity.

Conversely, during high-amperage solar charging, surface charge pushes terminal voltage up artificially, tricking an open-loop inverter into terminating absorption charging before the cells are fully energized.


Closed-Loop Architecture: The Inverter as a Commanded Slave

Closed-loop communication fundamentally changes the power flow relationship between hardware components. Instead of the inverter guessing battery state from bulk voltage, the battery’s internal microcontrollers send digital telemetry packets every 500ms500\text{ms} to 1,000ms1,000\text{ms}.

Dynamic Telemetry Broadcasting

The Four Master Control Parameters

CVLCharge Voltage Limit

The exact target charging voltage. When all cells are balanced, CVL is set to 56.8V56.8\text{V} (3.55V/cell3.55\text{V/cell}). If a single runner cell spikes, the BMS dynamically lowers CVL to 54.8V54.8\text{V} to hold absorption without tripping.

CCLCharge Current Limit

Maximum allowable charging amperes. When battery temperature drops below 32°F (0°C), the BMS instantly broadcasts CCL = 0A, stopping solar charging to prevent irreversible lithium plating damage.

DCLDischarge Current Limit

Maximum continuous discharge amps. If a multi-pack bank of four batteries loses one module due to maintenance, the BMS reduces DCL proportionally from 400A400\text{A} to 300A300\text{A}, preventing overloading the remaining packs.

Alarms & FlagsReal-Time Protection

Broadcasts high cell voltage, low cell voltage, over-temperature, and short-circuit warning bits. The inverter throttles power smoothly seconds before hardware disconnect relays are forced to trip.

The De-Facto Industry Standard: Pylontech Protocol

While proprietary protocols exist (such as Victron VE.Direct or proprietary EG4/Growatt protocols), the Pylontech protocol (originally developed by Pylon Technologies for the US2000/US3000/US5000 series) has become the universal lingua franca of energy storage.

Almost every tier-1 off-grid and hybrid inverter manufacturer—including Victron Energy, Sol-Ark, Schneider Electric, Deye, Luxpower, EG4, Growatt, and SMA—includes native Pylontech protocol decoding firmware.


CAN Bus vs. RS485: Physical Layer Comparison

Closed-loop communication is physically implemented across one of two serial communication standards: Controller Area Network (CAN) or Recommended Standard 485 (RS485).

Engineering ParameterCAN Bus (ISO 11898-2)RS485 (TIA/EIA-485-A)
Signaling MethodDifferential Voltage (CAN-H & CAN-L)Differential Balanced Line (A / B or D+ / D-)
Common Mode Bias2.5V2.5\text{V} Nominal (Recessive)0V0\text{V} to 5V5\text{V} floating range
Dominant State VoltageCAN-H=3.5V, CAN-L=1.5V (ΔV=2.0V)\text{CAN-H} = 3.5\text{V},\ \text{CAN-L} = 1.5\text{V}\ (\Delta V = 2.0\text{V})Line A>BA > B by >200mV> 200\text{mV}
Standard Bit Rates250 kbps250\text{ kbps} or 500 kbps500\text{ kbps}9,600 bps9,600\text{ bps} or 115,200 bps115,200\text{ bps}
Bus ArbitrationNon-destructive bitwise (CSMA/CD + AMP)Polled Master-Slave (Token ring / Modbus)
Hardware Error Detection15-bit CRC, bit stuffing, frame checksSoftware-level parity / Modbus CRC16
Inverter PreferenceTier-1 Inverters (Victron, Sol-Ark, Deye)Budget Inverters (Legacy Growatt, MPP Solar)
Termination Requirement120 Ω120\ \Omega at each physical end (60 Ω60\ \Omega net)120 Ω120\ \Omega termination recommended on long runs

Why CAN Bus Is Superior for Critical Power Systems

CAN bus was originally engineered by Robert Bosch GmbH for high-noise automotive environments. It possesses three major technical advantages over RS485:

  1. Hardware-Level Message Arbitration: If two battery packs transmit telemetry simultaneously, the node with the highest-priority identifier (lowest binary ID) wins the bus without garbling the packet.
  2. Automatic Fault Confinement: If a noisy cable causes transmission errors, the CAN controller automatically isolates the faulty node, preventing the entire inverter comms network from locking up.
  3. High Bandwidth: Running at 250kbps250\text{kbps} (over 25 times faster than standard 9,600 baud RS485), CAN delivers instantaneous microsecond response during rapid load transitions.

RJ45 Cable Pinouts & Crimp Configurations

The single most frequent reason installers encounter communication errors is using a standard straight-through Ethernet patch cord when the inverter requires a custom pinout.

While both sides utilize standard RJ45 modular jacks, the internal pin assignments for CAN-H, CAN-L, RS485-A, and RS485-B vary significantly between equipment manufacturers.

Wiring Specifications

Standard Pylontech Battery BMS RJ45 Pinout

RJ45 PinT568B Wire ColorCAN FunctionRS485 Function
Pin 1White / OrangeReserved / NCRS485-B (Data-)
Pin 2OrangeGND / ShieldRS485-A (Data+)
Pin 3White / GreenReserved / NCReserved / NC
Pin 4BlueCAN-H (High)NC
Pin 5White / BlueCAN-L (Low)NC
Pin 6GreenGND / ShieldGND
Pin 7White / BrownNCRS485-A (Alt)
Pin 8BrownNCRS485-B (Alt)

Custom Cable Mappings for Major Inverter Brands

When fabricating a custom comms cable, follow these exact pin-to-pin wiring connections:

  • Victron Cerbo GX / GX Inverter (Type B Cable):
    • Battery Side (Pylontech): Pin 4 (CAN-H), Pin 5 (CAN-L), Pin 2 (GND).
    • Victron VE.Can Side: Pin 7 (CAN-H), Pin 8 (CAN-L), Pin 3 (GND).
    • Note: Victron uses Pins 7 & 8 on its VE.Can RJ45 port. Plugging a straight-through cable into a Pylontech battery connects Pin 4 to Pin 4, resulting in zero communication.
  • Sol-Ark 15K / 18K / Deye:
    • Uses standard straight-through cabling for CAN! Pin 4 is CAN-H and Pin 5 is CAN-L on both ends.
    • For RS485 Modbus, Sol-Ark reads on Pin 1 (B) and Pin 2 (A).
  • EG4 18kPV / 6000XP to EG4 LifePower4 / LL:
    • EG4 18kPV CAN port uses Pin 4 (CAN-H) and Pin 5 (CAN-L).
    • If using RS485 protocol, use Pin 1 (RS485-B) and Pin 2 (RS485-A).
  • Growatt SPF 3000TL / 5000ES:
    • Requires setting Inverter Program 05 to LI and Program 36 to L01 (Pylontech protocol).
    • Uses Pin 1 (RS485-B) and Pin 2 (RS485-A), or dedicated CAN pins depending on hardware revision.

Hardware DIP Switch Addressing for Multi-Pack Battery Banks

When multiple 48V server rack batteries are wired in parallel to a common DC busbar, only one single battery is permitted to communicate directly with the inverter. This battery acts as the Master (Pack 1).

All subsequent batteries act as Slaves (Pack 2, Pack 3, etc.). The Master battery aggregates the total capacity, current limits, and alarms from all slave packs across internal Link cables, and then broadcasts a single unified data packet to the inverter.

Hardware Configuration

Binary DIP Switch Addressing Matrix (4-Position Switches)

Configure the 4-pin binary DIP switch on the front panel of each battery module before powering up the bank:

Battery RoleAddressSwitch 1Switch 2Switch 3Switch 4Port Connections
Master (Pack 1)1ON (1)OFF (0)OFF (0)OFF (0)CAN to Inverter; Link Port 1 to Slave 1
Slave 1 (Pack 2)2OFF (0)ON (1)OFF (0)OFF (0)Link Port 0 to Master; Link Port 1 to Slave 2
Slave 2 (Pack 3)3ON (1)ON (1)OFF (0)OFF (0)Link Port 0 to Slave 1; Link Port 1 to Slave 3
Slave 3 (Pack 4)4OFF (0)OFF (0)ON (1)OFF (0)Link Port 0 to Slave 2; Link Port 1 Empty
  1. Connect the Master Battery’s CAN Port to the Inverter’s BMS/CAN Port using your custom pinout cable.
  2. Connect a short standard straight-through Ethernet patch cable from Master Link Port 1 to Slave 1 Link Port 0.
  3. Continue the daisy chain from Slave 1 Link Port 1 to Slave 2 Link Port 0.
  4. The final slave battery’s Link Port 1 remains unconnected.
  5. If your battery models feature an internal termination switch (e.g. Switch 6 on 6-position blocks), flip the termination resistor switch to ON only on the Master and the very last Slave module.

Systematic Diagnostic Protocol for Failed BMS Communication

When an inverter displays a communication fault—such as Victron Error #67 (BMS Connection Lost), Sol-Ark F28 (BMS Comm Loss), or Growatt Error 04—use this bench-tested isolation workflow to locate the fault in minutes.

Step 1Physical Bus Impedance

The 60-Ohm Parallel Termination Resistance Test

Turn off all battery breakers and inverter DC disconnects. Unplug the communication cable from the inverter. Using a digital multimeter set to Ohms (Ω), probe between Pin 4 (CAN-H) and Pin 5 (CAN-L) on the disconnected cable plug:

58 Ω – 62 Ω
Perfect. Both 120Ω terminators are active in parallel.

115 Ω – 125 Ω
Missing one terminator. Signals will reflect and cause errors.

> 1,000 Ω or Open
Broken wire, failed crimp, or pinout mismatch.

Step 2Common-Mode DC Voltage

Live CAN Bus Transceiver Bias Voltage Audit

Reconnect the cable and power on the master battery. Set your multimeter to DC Volts. Measure voltage from CAN pins to battery Ground (Pin 2 or metal chassis):

  • CAN-H to Ground: Should read between 2.6V2.6\text{V} and 3.0V3.0\text{V} DC.
  • CAN-L to Ground: Should read between 2.0V2.0\text{V} and 2.4V2.4\text{V} DC.
  • If both pins read 0V0\text{V}, the BMS transceiver chip is unpowered or fried. If both read identically (2.5V2.5\text{V} static), the bus is in recessive state with zero active transmissions.
Step 3Firmware Protocol Synchronization

Inverter Software Protocol Selection

Enter the inverter touchscreen or web interface. Under battery settings, change battery type from Lead-Acid / Voltage to Lithium / BMS. Select protocol profile: for Victron choose CAN-bus BMS (250 kbit/s); for Sol-Ark choose BMS Lithium 00 (Pylontech); for EG4 choose EG4-CAN or Pylon-CAN.

Step 4Sequential Cold Boot Protocol

Strict Order of Power-Up Sequencing

Microcontrollers negotiate addresses strictly upon boot. Power down the entire system completely. Power on Master Battery first and wait 10 seconds. Power on each Slave Battery sequentially. Verify slave RUN LEDs illuminate. Finally, power on the Inverter AC/DC breakers. Within 30 seconds, the inverter screen should display battery telemetry (SoC %, Temperature, Capacity).


Comprehensive Brand Compatibility & Protocol Matrix

Use this quick-reference matrix to pair popular hybrid inverters with common 48V server rack batteries:

Inverter ModelBattery ModelRecommended ProtocolPhysical PortRequired Cable Type
Victron MultiPlus-II / QuattroPylontech US3000C / US5000Pylontech CANVE.Can (RJ45)Victron Type B Cable
Victron Cerbo GXEG4 LifePower4 / LLPylontech CANVE.Can (RJ45)Custom Pin 4/5 → 7/8
Sol-Ark 12K / 15K / 18KPylontech US5000Mode 00 (Pylon)CAN PortStandard Straight-Through
Sol-Ark 15K / 18KTrophy / Ruixu / WattCycleMode 00 (Pylon)CAN PortStandard Straight-Through
EG4 18kPV / 6000XPEG4 LifePower4 / LL-SEG4 CAN / PylonCAN PortStandard Straight-Through
Growatt SPF 5000ESPylontech US3000CLI / Protocol L01RS485 PortCustom Pin 1/2 RS485 Cable
Deye SUN-12K-SG04LP3Pylontech / Seplos MasonPylontech CANCAN PortStandard Straight-Through
Schneider Conext XW ProPylontech / Discover AESXanbus / Conext CommsXanbus PortXanbus to CAN Gateway

Frequently Asked Questions

Can I mix batteries from different brands in a single closed-loop bank?

No. Different manufacturers utilize different BMS chipsets, internal communication baud rates, and cell voltage balancing algorithms. The internal link protocols between master and slave batteries are proprietary. Only parallel identical batteries with identical firmware versions under a single master BMS.

What happens if the communication cable is accidentally unplugged while running?

Tier-1 inverters enter a safety fault mode. If no telemetry packet is received for 60 continuous seconds, the inverter triggers a BMS Comm Loss alarm and automatically reverts to pre-programmed fallback voltage limits or stops charging and discharging completely to prevent overcharging unmonitored cells.

Why does my inverter show 100% SoC while battery cells are still balancing?

In Pylontech protocol, when any individual cell reaches the absorption threshold (3.50V−3.55V3.50\text{V} - 3.55\text{V}), the BMS resets its Coulomb counter and broadcasts 100% SoC to the inverter to initiate current tapering, while active/passive balancers continue bleeding current across high cells.

Is shielded CAT6 cable strictly necessary for closed-loop runs?

For cable lengths under 6 feet (2 meters) inside a metal battery cabinet, unshielded CAT5e/CAT6 is usually sufficient. However, for runs passing near high-frequency inverter DC cables or AC output conduits, Shielded Twisted Pair (STP / FTP) CAT6 with grounded metal RJ45 plugs is strongly recommended to eliminate electromagnetic switching noise interference.