The interface stack, layer by layer
A BBU shelf is not one device with one port. It is a stack of four interfaces, each with a different job, a different poll owner and a different failure mode. Buyers who treat them as interchangeable end up splicing a CAN segment into a campus VLAN, or pointing a DCIM poller at a Modbus map that shifted at the next firmware release.
| Interface | What connects to it | Typical use | What it does not carry |
|---|---|---|---|
| CAN 2.0B, 250 or 500 kbps | Parallel shelves on the same supervised bus, plus the shelf controller | Primary intra-rack bus: current sharing, bridge coordination, per-cell-group data, node identity | Not routable across a campus network without a gateway. No native security layer, so it must not leave the cabinet. |
| RS485 Modbus RTU | Plant controllers, BMS and EMS layers, building management | Register-level reads of pack voltage, current, SOC, temperatures and alarm words | No spontaneous data. A master must ask, so an unpolled point is an unrecorded event. |
| SNMP v2c / v3 via the shelf controller | DCIM, capacity planning and workload scheduling systems | Aggregated shelf state, traps on state change, identity and firmware strings | Not a waveform. Cell-group detail and fast transients are lost in the polling interval. |
| PMBus on the 1U in-server module | The host node's BMC or power management controller | In-band telemetry inside the server: bridge events, module SOC, module temperature | Nothing outside the node. It is invisible to a rack-level DCIM until the BMC is polled. |
The stack is the same across the line. VB-5125, the 3U 51.2V shelf, and VB-H400, the 2U ±400VDC shelf, both expose CAN 2.0B, RS485 Modbus and SNMP; the difference is the point set, not the protocol. The VB-E3 1U module keeps a 48V/54V bus inside the node and reports over PMBus. One naming convention and one alarm vocabulary across all three is what makes a mixed fleet readable.
A published snapshot from the platform shows the shape of the data: BUS 51.18V, CUR -46.2A, CELL delta-V 18 mV, delta-T 2.1 C, SOC 87.4%, SOH 99.2%, STATE BRIDGE-READY. Six numbers and one state string. The negative current is the discharge sign convention in that snapshot; whichever convention your site adopts, write it into the integration document, because a flipped sign silently inverts every load-sharing calculation built on top of it.
Register maps: what "documented" has to mean
A register map is a contract. It has to be delivered with the sample, before the purchase order, and it has to contain seven things for every point: register address, data type and length, scale factor and unit, read or write permission, valid range, the meaning of every enumeration and bit position, and the defined behaviour on an out-of-range or failed read. A map missing any one of those turns into a support ticket during commissioning, when the DCIM integrator is on site and the rack is already powered.
| Point | Address (illustrative) | Type and length | Scale | Unit |
|---|---|---|---|---|
| Pack voltage | 0x0000 | uint16, 1 register | 0.01 per count | V |
| Pack current | 0x0001 | int16 signed, 1 register | 0.1 per count, sign convention stated in the map | A |
| State of charge | 0x0002 | uint16, 1 register | 0.1 per count | % |
| Cell group voltages, 1 to 16 | 0x0010 – 0x001F | 16 consecutive uint16 registers | 0.001 per count | V |
| Temperature probes, 1 to 8 | 0x0020 – 0x0027 | 8 consecutive int16 registers | 0.1 per count | C |
| Status word | 0x0030 | uint16 bit field | bit position per state, enumerated | — |
| Alarm word | 0x0031 | uint16 bit field | bit position per alarm, latched or live stated | — |
| Cycle count | 0x0032 – 0x0033 | uint32 unsigned, 2 registers, low word first | 1 per count | cycles |
| State of health | 0x0034 | uint16, 1 register | 0.1 per count | % |
| Contactor and protection state | 0x0035 | uint16 bit field | bit position per state, enumerated | — |
| Identity and firmware revision | 0x0040 – 0x0047 | 8 registers, ASCII packed two characters per register | none | — |
The addresses above illustrate the layout and the scaling conventions a usable map follows. They are not product facts, and they are not an extract from a shipped document. The map that arrives with your sample is the authority; treat any third-party address list, including this one, as a layout sketch until the signed map confirms it.
Two entries in that table deserve a rule of their own. Bit fields must be documented with every bit position, not only the ones currently used, so an integrator can tell an undefined bit from a cleared one. And any multi-register value must state word order, because a uint32 read with the wrong word order produces a cycle count in the sixty-five-thousand range that looks plausible on a trend line and is entirely wrong.
What to poll, and how often
Polling is a budget. Every point you add costs bus time, gateway CPU and storage, and buys nothing if nobody acts on it. Tier the point set by how fast the underlying physical quantity can actually change.
| Point | Interface | Interval | Why |
|---|---|---|---|
| Pack voltage | CAN or Modbus | 1 to 5 s | Bridge readiness and load sharing between parallel shelves. This is the number that tells you whether the bus is inside its window. |
| Pack current and state of charge | CAN or Modbus | 1 to 5 s | Current split across shelves and the energy remaining for a migration window. Read together, never separately. |
| Contactor and protection state | Trap or event, not a poll | On change | A contactor event is a discrete fact. Polling it at 1 s adds delay to something the shelf already knows instantly. |
| Cell group voltages and delta-V | CAN or Modbus | 30 to 60 s | Drift detection. Sixteen registers per shelf is the heaviest read in the map and the slowest quantity to change. |
| Temperatures and delta-T | CAN or Modbus | 30 to 60 s | Thermal margin against the charge and discharge windows. Thermal mass sets the floor on useful interval. |
| State of health and capacity fade | Modbus or SNMP | Daily | Fade moves over weeks. Daily reads build the trend without loading the segment. |
| Cycle count and event log | Modbus or SNMP | Daily, or on change | Feeds the replacement decision. Event logs are large, so pull the delta, not the whole log. |
| Firmware and identity strings | SNMP | On discovery, and on change | Asset records. A shelf that reports a different revision than the register says is a configuration finding. |
Now the arithmetic that decides whether this fits. A 250 kbps CAN segment carries 250,000 bits per second, and a standard 11-bit-ID frame with eight data bytes costs at most about 135 bits including stuffing and inter-frame space. Four frames per shelf per second across 15 shelves is 60 frames, or 60 x 135 = 8,100 bits per second, which is 3.2% of the segment. Push to 10 frames per shelf per second and 15 shelves produce 150 frames, or 20,250 bits per second, still 8.1% of capacity. CAN design guidance commonly keeps steady-state load below roughly 30% so the highest-priority frame still meets its deadline, so a 1-second poll of a small point set is not the constraint.
The same holds on the serial side. At 19,200 bps, 8N1, each byte costs 10 bit times. Reading 16 consecutive registers from one shelf is an 8-byte request plus a 5-byte header, 32 data bytes and a 2-byte CRC, about 47 bytes, or roughly 25 ms on the wire. Fifteen shelves polled sequentially with 20 ms of device turnaround each complete a full sweep in about 15 x 45 ms = 675 ms. A 5-second cycle therefore uses around 14% of the link and a 1-second cycle about 68%, which is why cell-group reads belong in the slow tier.
The real constraint is not bandwidth, it is ownership. Two systems polling the same shelf produce duplicate records, doubled bus load and conflicting alarm states in the DCIM. Name one owner per bus in the integration document, and let every other system read from that owner rather than from the shelf.
Telemetry is a deliverable, not a commissioning task. The register map, the SNMP MIB and the Modbus map ship with the sample, so the DCIM integration can be built and tested before the purchase order, and the alarm-to-ticket mapping can be agreed with operations while there is still time to change it.
State of charge and state of health: two numbers with different jobs
SOC answers tonight's question: can this shelf carry the load through the migration window if the transfer happens in the next minute. SOH answers the five-year question: when does this shelf leave the fleet. They are read on different schedules, they are interpreted by different teams, and confusing them is how a healthy-looking rack ends up short of energy during a bridge event.
SOC on this platform is estimated to 0.5%-class accuracy, and it is still an estimate. A coulomb count drifts, more so after partial cycles and long float periods, so the BMS corrects it at rest or against a full-charge anchor. Treat a SOC reading taken during a heavy discharge as indicative, and the corrected value after a rest as authoritative.
| SOC band | What it means | What it should trigger |
|---|---|---|
| Above 90% | Bridge-ready. Full energy available for the migration window. | No action. This is the design band for a shelf on standby. |
| 70% to 90% | Normal operating band after a partial discharge or an incomplete recharge. | Schedule a recharge check at the next maintenance window. Do not raise a ticket yet. |
| 50% to 70% | Below plan for a standby asset. | Investigate whether the bus is exporting power or a recharge cycle was missed, and confirm the charge path is enabled. |
| Below 50% | Degraded for backup purposes, even if the cells are healthy. | Treat as a degraded asset. Raise a ticket and hold the shelf out of any planned bridge test until recharged. |
| Below 30% | Insufficient for a committed migration window. | Block the planned maintenance window until the recharge completes, and check whether the load is drawing on the battery without a transfer event. |
SOH is trended against the per-cycle log rather than computed from a single reading, and it is the input to a replacement decision. The VB-5125 is rated for at least 6,000 cycles at 25 C and 80% DOD and carries a 5-year warranty; those two figures are a design envelope, not a service date. A fleet that replaces on the calendar discards cells with usable capacity, and a fleet that never replaces runs shelves past the point where the bridge window still closes. Plan the swap from the SOH trend and the cycle log, and let the warranty period bound the decision rather than set it.
Alarm thresholds and the ladder
Thresholds are only half the design. The other half is what the threshold does when it is crossed. A warning that lights a dashboard and nothing else is a log entry; a protection threshold that opens a contactor moves the load, and it needs to be worth the transfer.
| Parameter | Warning | Alarm | Action driven |
|---|---|---|---|
| Cell group over-voltage | 3.55 V per cell group, 56.8 V pack on a 16S string | 3.65 V per cell group, 58.4 V pack | Taper and stop charge; open the contactor if the group voltage holds above the alarm threshold |
| Cell group under-voltage | 2.80 V per cell group, 44.8 V pack | 2.50 V per cell group, 40.0 V pack | Derate the discharge, hand the load back, and open at the cut-off |
| Cell delta-V | 50 mV | 100 mV | Flag the shelf for cell-level review and block it from a bridge test until the spread is explained |
| Pack over-current | 90 A sustained, against the 100 A continuous rating | Above the 200 A peak held past its 10 s window | Derate first, open the contactor if the current does not fall back inside rating |
| High temperature | 45 C charging, 55 C discharging | 55 C charging, 60 C discharging | Inhibit charge at the top of the charge window, derate discharge at the top of the discharge window |
| Low temperature | 5 C charging, -10 C discharging | 0 C charging, -20 C discharging | Inhibit charge below the charge window floor until the pack warms; derate discharge toward the cold limit |
| Insulation and earth fault, where monitored | Site threshold agreed at commissioning | Confirmed fault at half the warning threshold | Lock-out rather than derate: an insulation fault is not a condition to operate through |
| Communication loss | 3 missed polls | 10 missed polls, or three times the poll interval, whichever is longer | Raise to the named alarm owner. Bridge behaviour and protection are local to the shelf, so a lost link costs visibility, not backup. |
The healthy reference for the spread matters as much as the threshold. The published telemetry snapshot sits at CELL delta-V 18 mV, delta-T 2.1 C, SOC 87.4% and SOH 99.2%, which is what a well-matched 16S string of graded 21700 LFP cells looks like in service. A 50 mV warning is roughly three times that reference, so it is a drift signal, not a nuisance alarm.
The ladder has four steps and every step is time-stamped and retrievable over any interface. Warning: logged, visible, no change to operation. Derate: charge or discharge current reduced, bridge capability retained. Open contactor: the protection trips and the load transfers. Lock-out: the shelf is held out of service until the condition is cleared and acknowledged. Underneath the ladder, over-charge, over-discharge, over-current and short-circuit protection are hardware-enforced, so they do not depend on software state, a live network link or a polling cycle. Anything reachable only through a register read is monitoring; anything that must happen in a millisecond is hardware.
The compliance context around those thresholds is covered in more detail in the compliance map for rack batteries: this platform is designed and tested to IEC 62619:2022, follows a UL 1973 certification path through accredited labs, and holds a -48V DC interface per ETSI EN 300 132-2 with a -40.5 to -57.0 VDC window. Thresholds should sit inside those declared windows, not inside whatever the first integrator found convenient.
Integration path: from CAN to the dashboard
The reference architecture is three hops. Inside the rack, up to 15 shelves sit on one CAN segment at 250 or 500 kbps with a documented register map, moving roughly 77 kW of backup power as one group on an 80kW-class bay. A shelf controller or protocol gateway concentrator-polls that segment and exposes Modbus TCP or SNMP northbound, so the DCIM never touches the CAN bus directly. The DCIM then reads one aggregated shelf object per rack position instead of fifteen device objects, which is what keeps point counts and licences manageable.
Identity is the part that gets skipped. A shelf is addressed by rack position and slot, not by node ID or serial number alone, so its name in the DCIM survives a move, a swap and a firmware update. Node IDs stay unique inside the segment; the position supplies the human-readable name; the serial number stays the join key to the per-batch QC records behind it, which are retrievable by serial number through the quality system.
Before go-live, the commissioning checklist is short and entirely mechanical:
- Termination and stub length on the CAN segment: 120 ohm at both physical ends, one contiguous trunk, stubs short enough that reflections stay inside the segment's margin.
- Unique node IDs across all shelves and the gateway, with the assignment recorded in the integration document rather than on a label that will be lost.
- Gateway poll timeout set longer than the slowest device response, so a busy shelf reads as slow rather than as failed.
- SNMP trap destination reachable from the management network, and confirmed with a test trap, not with a ping.
- Time synchronisation on the gateway and the DCIM, so an event timestamp lines up with the PDU, the switch and the workload scheduler.
- Alarm-to-ticket mapping agreed with operations before go-live, including which alarms page a human at 03:00 and which wait for the morning queue.
All six checks belong in the integration document that ships with the sample, alongside the register map, the SNMP MIB and the Modbus map. If you need the protocol selection logic behind this layout, Guide DG-05 covers choosing CAN, Modbus, SNMP or PMBus per layer rather than per fashion, and the BMS and telemetry layer covers how the points are generated in the first place.
The three integration mistakes that cost the most
Three patterns account for most of the rework we see on rack battery integrations, and all three are decisions rather than defects.
- Polling everything at 1 second. Sixteen cell-group registers plus eight temperature probes per shelf, read every second across fifteen shelves, buries the gateway in transactions and fills storage with flat trend lines. Fix: tiered polling. Keep voltage, current and SOC in the fast tier, put cell-group voltages and temperatures in the 30 to 60 second tier, and push SOH, cycle count and event logs to a daily pull.
- Mapping alarms to a dashboard nobody owns. When the alarm word reaches the DCIM, someone has to be accountable for acting on it, with an escalation path and a defined response time. Fix: a named alarm owner per alarm class, an escalation path agreed in writing, and a periodic test of the path itself rather than of the dashboard.
- Treating telemetry as a commissioning step instead of a day-one deliverable. Integration work discovered on site, after the racks are powered, is the most expensive hour in the project. Fix: integration documents shipped with the sample, so the register map, MIB and Modbus map can be loaded into the DCIM and tested against a bench unit well before the purchase order.
None of these are protocol problems. CAN 2.0B, Modbus RTU, SNMP and PMBus are all adequate for rack battery telemetry at the point counts described here. The failure is almost always in the tiering, the ownership and the timing of the integration work.
Sources
- IEC 62619:2022 — safety requirements for industrial secondary lithium cells and batteries; the design and test baseline for the pack layer.
- ANSI/CAN/UL 1973 3rd edition — stationary battery installation standard; the UL 1973 certification path for these packs runs through accredited labs.
- ETSI EN 300 132-2 — DC power interface at the equipment input, -40.5 to -57.0 VDC window for the -48V interface.
- Uptime Institute Annual Outage Analysis 2026 — outage cost distribution, 57% of operators' most recent significant outages above $100k and about one in five above $1M.
- arXiv 2407.21783 — Meta Llama 3 infrastructure paper: 466 interruptions over 54 days of pre-training, 419 unexpected, about 78% hardware-related.
