Features / Battery Storage

Code-aware BESS design

PVX.AI designs utility-scale battery energy storage systems inside AutoCAD, alongside a PV plant or standalone. Container placement is checked against NFPA 855 and IFC fire-code rules with citation-level provenance, augmentation is planned with reserve pads, and every pad is graded and fire-laned, and the plant is noise-modeled. The design carries through cabling, the single line diagram, yield, and the Bill of Quantities.

Request a Demo + Free Trial

Last updated:

BESS areas and the enclosure catalog

PVX.AI treats a BESS area as a first-class site region: a closed polyline on the PVXAI_Boundary_BESS layer, named BESS-A1, BESS-A2, and so on, assigned once at creation and never renumbered even if you delete other areas later. Draw BESS Area draws a fresh polyline and designates it in one step; Convert BESS Area turns any existing closed polyline into a BESS area (self-intersections are sanitized automatically, though an outline overlapping an existing BESS area is rejected). PV build layout automatically excludes BESS areas, so no rack table is ever placed inside a battery zone, and PV racks already under the area are hidden rather than deleted, ready to reappear if you erase the area later.

Every battery container comes from the enclosure catalog, opened from BESS Enclosures on the Database panel. The catalog lists Manufacturer, Model, Block Type, Energy (kWh), Power (kW), Size L x W x H (m), and Origin; type in the search box to filter, then pick a row to place. Block Type decides how you place it: an AC block has the PCS (Power Conversion System) integrated, so placing it completes the unit, while a DC block is DC-only and needs a separate PCS skid paired to it afterward.

Product cycles move fast, so New Enclosure adds containers PVX.AI does not already carry: identity (Manufacturer, Model Name, Block Type), true dimensions and mass, Nameplate and Usable Energy (usable energy accounts for depth-of-discharge and reserve SoC, and is what totals sum), Rated Power, Duration, and Round-Trip Efficiency, degradation (Calendar Fade, Cyclic Limit, EOL Capacity), maintenance clearances, fire and noise data (a Has UL 9540A test data flag and Noise in dBA), and PCS specs for DC blocks. Custom enclosures are editable; cloud rows stay read-only. Either way, PVX.AI stamps the full specification into the drawing at placement time, so a saved design reopens complete on any machine, even offline or years later, and editing the cloud catalog afterward never changes what is already placed.

How does fire-code compliance work?

PVX.AI checks battery placement against a fire-code rule-set you choose in BESS Settings: NFPA 855 (2020, 2023, or 2026 edition), IFC (2018, 2021, or 2024 edition), or a Manufacturer-only preset that applies enclosure clearances with no code separation at all. A Validation gate controls how strictly the rule-set is enforced: Warn only surfaces violations without blocking an auto-place commit, while Block stops the commit outright while errors remain.

The code engine needs to know what surrounds the battery zone before it can apply the right setbacks, so you tag site geometry with Tag Exposure: Building, Tag Exposure: Lot Line, Tag Exposure: Public Way, or Tag Exposure: Combustible (each prompts you to select a polyline on any layer), and Clear Exposure removes a tag. Tags persist with the drawing and feed the Compliance Report directly. Units placed beyond the remote-location threshold, about 30.5 m (100 ft) by default, from every exposure qualify for an exemption from size and separation caps.

Compliance Report opens the BESS Code Compliance window and runs on load: a banner summarizes pass, warn, and fail counts, and findings are grouped by severity, each carrying the exact code citation in effect, for example NFPA 855-2023 section 9.5.2.6.1. Expand Rules in effect to see every rule value and its source, including any AHJ overrides you have entered in BESS Settings. Fix or accept findings, then click Re-run.

The code engine advises placement, it does not certify a design. Every clearance value is overridable and carries a source citation. Verify the applied rules with your Authority Having Jurisdiction.

Auto-placement with preview

Auto-Place Zone fills a BESS area for you: pick Fit capacity to stop at a target energy in MWh, with reserve pads placed in addition, or Maximize to fill the whole zone. Before anything commits, a preview window, BESS Auto-Placement, Preview, summarizes the run: unit count, usable MWh, rated MW, and reserve-pad count, alongside a validation badge and details. Click Place to commit the layout or Cancel (Esc) to abort and adjust settings first. If the Validation gate in BESS Settings is set to Block and errors remain in the preview, nothing is placed until you fix them or relax the gate to Warn only.

Place BESS Units hands you manual control: pick an enclosure, or use the default spec, then click to stamp units one at a time. A live clearance ghost follows your cursor and turns red the moment the effective spacing would be violated, so clicking only commits in a clear spot. Effective spacing is always the larger of the manufacturer maintenance clearance and the code separation from your chosen rule-set, whichever demands more room wins.

DC blocks need a PCS skid before they are complete: Place PCS Skid lets you pick a DC container, jig the skid onto it, and click to commit, pairing the two. AC blocks skip this step entirely, since their PCS is already integrated. Once units are down, Toggle Reserve Pad flips any single unit between energized and augmentation-reserve status in one undo group, re-layering, re-hatching, and updating totals and topology together.

Plan augmentation from day one

Batteries fade with age, and most projects add capacity in years three to five, so PVX.AI plans for that from the first placement rather than treating it as a future redesign. A reserve pad is a placed unit flagged as augmentation reserve, drawn hatched, and placed in addition to your energized capacity target. Reserve pads are excluded from energy and power totals, the Bill of Quantities, cabling, yield, and noise contours, but they are included in compliance checks and pad grading, so the civil work is done once and never has to be repeated when augmentation actually happens.

BESS Augmentation opens the planner, which runs on load and shows the augmentation year and the required additional MWh, sized at the end of your planning horizon (set in BESS Settings), alongside a count of reserve pads recommended versus reserve pads already present. A per-transformer projected loading table lists Transformer, Rated, Current loading, Reserve pads, and Projected loading including reserves, with any value above 100% highlighted so an undersized transformer stands out immediately rather than surfacing at construction.

The report also lists its assumptions, including any defaults it assumed for missing catalog data such as calendar fade or cyclic limit, so you know exactly where the numbers came from before committing to a transformer spec or a reserve-pad count. If the plan calls for more reserve capacity than you have placed, use Toggle Reserve Pad to adjust the reserve fleet, then Re-run the planner to update the year, MWh, and loading table together.

Pads, fire lanes, and noise

Grade BESS Pads, on the Earthworks panel, gives every container and PCS skid its own levelled pad with embankment side slopes, sized per the pad-grading settings in BESS Settings. The BESS Pad Grading report opens and grades on load, one row per pad (Pad, Type, Pad elevation, Cut, Fill, Net, Flood, Findings) plus a totals line. Cut and fill volumes are measured against the Initial, pre-construction terrain surface, so re-running grading reports the same volumes every time: the operation is idempotent, and one Ctrl+Z reverts an entire grading run across every pad at once. Reserve pads are graded too, since the civil work is done once regardless of when augmentation happens.

After you hand-edit the layout, moving or adding units, Regenerate Fire Lanes recomputes the lanes from the current unit positions, honoring equipment keep-offs and exposure setbacks from the compliance settings. Old lanes inside the zone are replaced, never duplicated, so re-running the tool never leaves stale geometry behind.

Vegetation Clearance draws a dashed green offset ring at the effective clearance distance (an AHJ-overridable value) around the battery zone, and re-running it redraws the ring without duplicating. Noise Contours draws labeled 45, 55, and 65 dBA rings computed from each enclosure catalog noise data using spherical spreading, and lot-line findings feed straight into the Compliance Report as a warning above 55 dBA. Any source without acoustic data is listed in the completion message rather than silently estimated, so you always know which numbers are measured and which are missing.

Standalone storage plants

A standalone battery site, with no PV at all, runs through the same PVX.AI workflow as a combined plant rather than a workaround. Import terrain first, since pad grading needs it, then draw a BESS area, tag exposures, and review BESS Settings. Run Auto-Place Zone to fill the area, skipping PV build layout entirely, then place transformers and inverters so every unit has an electrical parent. From there, compliance, cabling, grading, augmentation, noise, and yield all run exactly as they would alongside a PV plant.

Every placed unit parents by its coupling mode: AC-coupled units roll up into a transformer, and DC-coupled units share an inverter's DC bus. Cabling is computed by the cloud as part of the electrical workflow, and routes respect the battery zone: cables from other equipment detour around BESS areas, member batteries connect out of the area, and fire lanes serve as preferred cable corridors. Reserve units are excluded from cabling entirely.

Generate SLD includes the BESS and PCS clusters with their MW and MWh totals alongside any generation equipment on the same sheet. When you open Yield Analysis with units placed, the battery section auto-populates from the placed non-reserve units: total usable energy, rated power, duration, capacity-weighted round-trip efficiency, and depth-of-discharge and aging from the catalog, and the From placed BESS button re-runs that aggregation on demand if the layout changes.

Frequently asked questions

Which fire codes does PVX.AI support for BESS?

NFPA 855 editions 2020, 2023, and 2026, IFC editions 2018, 2021, and 2024, plus a manufacturer-only preset. Findings cite the exact code section, and every clearance value can be overridden with AHJ-approved values.

Does PVX.AI certify code compliance?

No. The code engine advises placement and documents every rule it applied with its source citation. Design certification remains with your engineer of record and your Authority Having Jurisdiction.

Can I design a standalone battery site without PV?

Yes. Standalone BESS plants use the same workflow with zero PV areas: terrain import, BESS area, exposures, auto-placement, compliance, cabling, pad grading, augmentation, noise, and yield.

How does PVX.AI handle battery degradation?

The augmentation planner uses calendar fade, cycle limits, end-of-life capacity, and your cycles-per-year assumption to size the required additional MWh at the end of the planning horizon, and recommends reserve pads so the civil work is done once.

Do BESS designs appear in the single line diagram and BoQ?

Yes. The SLD includes BESS and PCS clusters with MW and MWh totals, and the Bill of Quantities adds BESS sections plus a pad earthworks group with cut, fill, and pad counts.

See it on your site data

Book a 30-minute demo with your terrain file. Every demo includes a 2-week free trial.