All devices

Felicity Solar · Home battery

FLB48314TG1 / FLB48100 / LPBF48 / LPBA48 LiFePO4 battery Modbus register map

Default configuration

Protocol
RS485
Port
502
Unit ID
1
Addressing
0-based
Byte order
Big endian
Word order
High word first
Baud rate
9600
Parity
None
Data bits
8
Stop bits
1

This device has an RS-485 interface. Reach it through a Modbus RTU-to-TCP gateway, configured with the factory serial settings above.

Register map

AddressCountNameTypeUnitScaleAccess
11
Protocol type
Voltronic LIB protocol frame; every pack answers the same holding-register block.
UInt16-1R
21
Protocol version
Document default 0.
UInt16-1R
161
Number of cells
Cells beyond this count read 0.
UInt16-1R
371
Number of temperature sensors
UInt16-1R
381
Temperature sensor 1
Raw 3012 = 28.05 degC: degC = raw / 10 - 273.15. Sensor 6 is the MOSFET sensor; unused sensors read 0.
UInt16K0.1R
391
Temperature sensor 2
degC = raw / 10 - 273.15.
UInt16K0.1R
401
Temperature sensor 3
degC = raw / 10 - 273.15.
UInt16K0.1R
481
Charge current
0 while the pack is discharging. Verified as 0.1 A units (raw 19 = 1.9 A on the discharge register).
UInt16A0.1R
491
Discharge current
Signed in the source (s16, 0.1 A); the pack reports negative while discharging and the source says to use the absolute value. Temperature rows use degC = raw / 10 - 273.15.
Int16A0.1R
501
Pack voltage
Felicity firmware reports millivolts (53400 = 53.400 V); the Voltronic document says 0.1 V. The verified scale is used.
UInt16V0.001R
511
State of charge
UInt16%1R
522
Full-charge capacity
High word first; 0x0005 0x5730 = 350000 mAh.
UInt32Ah0.001R
541
Packs online
Number of packs answering on the bus.
UInt16-1R
551
Charge alarm
Bit field: b0 CHT (charge high temperature), b1 COV (cell over-voltage), b2 CLT (charge low temperature), b3 OCC (over-current charging).
Hex-1R
561
Discharge alarm
Bit field: b0 DHT, b1 DLT, b2 FETHT, b3 CUV.
Hex-1R
571
Charge protection status
Bit field: b0 PRES, b1 BoostNRDY, b2 AFEComm, b3 AFEOCC, b4 AFEOCD, b5 AFESCD, b6 FETHT, b7 SUV, b8 CHT, b9 CLT, b10 OCV, b11 OCC, b12 2NDOVP, b13 CANID, b15 OCC2.
Hex-1R
581
Charge protection status 2
Bit field: b0 ShutdownByCmd, b1 Shutdown, b2 OCCHw, b3 IDError.
Hex-1R
591
Discharge protection status
Bit field: b0 PRES, b1 BoostNRDY, b2 AFEOCC, b3 AFEOCD, b4 AFESCD, b6 IDError, b10 FETHT, b11 CUV, b12 OCD, b13 DLT, b14 DHT, b15 Shutdown.
Hex-1R
601
Discharge protection status 2
Bit field: b0 AFEComm, b1 Short, b2 OCD2, b4 2NDOVP, b5 DHT2, b6 ShutdownByCmd, b13 CANID.
Hex-1R
611
BMS state
Reserved, reads 0 in the documented firmware.
UInt16-1R
622
Design capacity
High word first.
UInt32Ah0.001R
1121
Charge voltage limit
Raw 576 = 57.6 V.
UInt16V0.1R
1131
Discharge voltage limit
Raw 480 = 48.0 V.
UInt16V0.1R
1141
Charge current limit
Raw 320 / 400 / 480 = 32 / 40 / 48 A; differs per pack model.
UInt16A0.1R
1151
Discharge current limit
Raw 1600 = 160 A.
UInt16A0.1R
1161
Charge / discharge status
b7 charge enable, b6 discharge enable, b5 charge immediately (SOC <= 9 %), b4 charge immediately 2 (SOC 10-14 %), b3 full-charge request, b2 small-current charge request. Observed 0xC0 when idle.
Hex-1R
1171
Run time to empty
UInt16min1R
1182
Remaining capacity
High word first.
UInt32Ah0.001R

Read this device live with Modbus Connect, free for Windows, macOS and Linux

Related guides

Notes

Secondary source (community document, not a vendor publication): "Felicity Solar LiFePO4 battery - RS485 register map" by Krzysztof Hajdamowicz, 2026-10-10, https://github.com/KrzysztofHajdamowicz/felicity-battery-modbus/blob/main/docs/felicity-battery-registers.pdf (human-readable protocol notes in docs/protocol.md of the same repository). It documents the Voltronic "LIB" BMS protocol as implemented by the Felicity FLB48314TG1 and the FLB48100 / LPBF48 / LPBA48 family, Modbus RTU 9600 8N1 at pack address 1 in its example frame, function 0x03, and states which rows are hardware-verified and which come from the Voltronic document. The source gives no factory pack address, so the unit 1 recorded here is a placeholder, not a cited value, and the user must set their pack's own address. Deliberate omissions: the cell-voltage array (17-36) and the per-module state arrays (64-105) - the point descriptions there are shifted against their register numbers in the source, so the rows could not be paired with confidence; and the BMS firmware/hardware version pair (3-6), whose encoding the source leaves open. Voltronic's error frames replace the Modbus byte count with a 16-bit register count, so a standard client rejects them; this affects error handling only, not the map. One master per bus, at least 500 ms between polls of a pack.