BESS GADS Performance
Bazefield Core automates NERC GADS Storage Group Performance tracking for Battery Energy Storage Systems (BESS). Rather than requiring operators to manually assign operating states, a built-in Script Service job continuously reads device-level status signals, applies NERC priority rules, and writes the resulting allocations — ready for direct export to NERC's GADS submission tool.
Regional applicability: NERC GADS reporting applies to North American generation owners and operators subject to NERC Reliability Standards or voluntary GADS reporting programs. For a full introduction to GADS in Bazefield, see GADS Reporting in Bazefield.
How it works
Bazefield models a BESS plant using a two-level hierarchy: each GADS Energy Storage Group (the NERC reporting unit) contains one or more Power Conversion System (PCS) child objects. Each PCS carries a set of seven boolean EVENT-* data points that are continuously updated from the SCADA/historian to reflect the current operating state of that unit.
The GADS Energy Storage Performance Script runs on a recurring schedule against every GADS Energy Storage Group in the system. On each run it:
Reads the
EVENT-*boolean tags for all PCS children of the group over the configured look-back window.Applies NERC priority rules to determine the dominant state at each time step (see Operating states and priority below).
Creates or updates allocations in the
ESS_GADSallocation type on the storage group, segmented by NERC category (e.g.Charging/ChgHrs,Forced/StorageFOH).
These allocations are what the GADS Reporting application reads when generating the monthly Performance submission file. No manual time-booking is required — the script keeps the allocation record continuously up to date.
Script schedule
The script is installed as a per-object Script Service job and runs on every GADS Energy Storage Group object independently.
Trigger | Look-back window | Purpose |
|---|---|---|
Every 3 hours (continuous) | 25 hours | Near-real-time allocation maintenance. Keeps the current day current and provides a 1-hour overlap to catch any late-arriving historian data. |
Daily at midnight (00:00) | 744 hours (31 days) | Monthly reconciliation pass. Re-processes the full rolling month to correct any gaps or restatements from delayed data. |
Note: The cron expression is
25 10 */3 1/1 * ? *— runs at 10 minutes 25 seconds past the hour, every 3 hours. The midnight reconciliation is triggered by checking whether the run time falls at hour 0.
Operating states and priority
Each PCS unit reports its state through boolean data points. When multiple states are simultaneously active — or when different PCS units within a group report different states — the script resolves the conflict using the NERC-aligned priority table below. Lower priority number wins.
Data point | Priority | NERC category / GADS field | Description |
|---|---|---|---|
| 1 |
| System is actively charging energy from the grid or generation source. |
| 1 |
| System is actively discharging energy to the grid. |
| 3 |
| System is available but neither charging nor discharging (standby or ancillary service mode). |
| 4 |
| No reliable performance information is available for the group (e.g. communications loss). |
| 5 |
| Unplanned forced outage — the storage group is unavailable due to an unscheduled failure. |
| 5 |
| Scheduled maintenance outage — the group is out of service for planned maintenance. |
| 5 |
| Planned outage — the group is out of service for a pre-scheduled reason other than maintenance. |
Priority resolution: Charging and Discharging share priority 1 because they are mutually exclusive operating states. When Forced, Maintenance, and Planned all share priority 5, the first active signal in the time window is used. Outage states only take effect when none of the higher-priority operational or idle states are active.
Data model components
All components listed below are installed by the Core GADS package.
Component | Installed on | Type | Purpose |
|---|---|---|---|
GADS Energy Storage Group | Storage Group object (type 801) | Asset type | The NERC reporting unit. Carries |
| GADS Energy Storage Group | Point template (CPT) | Provides the seven |
| GADS Energy Storage Group | Event template | Maps each |
GADS Energy Storage Performance Script | GADS Energy Storage Group | Script Service job | Core automation. Runs on schedule, reads child PCS |
| GADS Energy Storage Group | Allocation type | Holds the resolved performance allocations across the seven NERC categories. This is the data source consumed by the GADS Reporting export. |
Calculated points on the storage group
The Core GADS ESG Calcs template installs three aggregate calculated points on the storage group that feed the performance export:
Point name | Unit | Interval | Description |
|---|---|---|---|
| MW | 5 min | Sum of active power across all child PCS units (aggregated from kW). Negative values indicate charging; positive values indicate discharging. |
| MWh | Monthly (daily sub-period) | Total energy charged into the storage group for the month. Sums |
| MWh | Monthly (daily sub-period) | Total energy discharged from the storage group for the month. Sums |
Prerequisites for submission
Before generating a BESS GADS Performance submission from the GADS Reporting application, confirm the following are in place:
Each BESS plant has a GADS Energy Storage Group object with
storageGroupID,plantID, rated capacity, and time zone attributes populated.Child PCS objects are linked to the storage group via the
GADSStorageGrpIdattribute.The
Core GADS ESG Calcspoint template is installed on the storage group, and all sevenEVENT-*boolean tags are mapped to the appropriate SCADA/historian source points for each PCS.The GADS Energy Storage Performance Script is active in Script Service and has completed at least one successful run. Verify in the Script Service log that allocations were written without errors.
The
ESS_GADSallocation type is present on the storage group and contains allocations covering the reporting month.Historian data for
ChargingEnergyandDischargingEnergyon each child PCS is available and flowing.
Generating the submission
Once the script has populated the ESS_GADS allocations, use the GADS Reporting application to export the monthly performance file. The application reads the ESS_GADS allocation hours and the calculated energy totals from the storage group, and formats them for direct submission to NERC.
For the step-by-step export workflow, see GADS Energy Storage Performance Submission.
For BESS event reporting (outage cause codes, system description, event files), see GADS Energy Storage Event Submission.
Troubleshooting
Symptom | What to check |
|---|---|
No allocations in | Confirm the GADS Energy Storage Performance Script is enabled and scheduled correctly in Script Service. Check the script run log for errors. Verify that child PCS objects have the |
Hours do not add up to the full period | Check whether any |
| Confirm that |
Allocations look wrong after a data correction | The midnight run re-processes 31 days and overwrites stale allocations automatically. If an immediate correction is needed, trigger the script manually from Script Service or wait for the next scheduled run. |