SystemPower Generation & Desalination

Solar PV Performance Monitoring

Solar PV performance monitoring that finds, explains and prices every lost megawatt-hour

Find the megawatt-hours the desert dust is taking.

See one case, screen by screen ↓
demo$6,816a dayof recoverable energy found in one day's waterfall — 284 of the 400 MWh short of expected, at $24/MWh
target1.5%more of the plant's energy delivered — about $750,000 a year on a 960 MWdc plant (estimated: 2,080 GWh × 1.5 % × $24/MWh)
demo$5,280accruedin liquidated damages under the O&M availability guarantee, October to date, with every outage classed the next morning
estimated≈ 25%less spent on crew cleaning — about 9 cleans a year when they pay back instead of 12 on a 30-day calendar (3 × $13,954)
The problem

Why a solar plant loses energy no alarm reports

Threshold alarms catch an inverter that stops. They miss the slow losses: dust building up 0.3–0.5 points a day, an inverter derating in the afternoon heat, tracker rows left flat after a storm stow, strings drifting apart. At Dunemark, the 960 MWdc sample plant, they come to 284 MWh on a normal day — $6,816 at a $24/MWh energy value — and most of that energy trips no alarm.

Cleaning runs on a fixed calendar, crew blocks every 30 days and robots every 3 nights, so after a dust storm the calendar is weeks late and in a calm month it cleans clean panels. The performance analyst rebuilds expected energy and the loss table by hand from SCADA exports, and by the time the monthly report shows the gap, the O&M contractor's response clock and the availability guarantee month have gone by.

typical3–5%of PV energy lost to soiling worldwide — about €3–5 billion a year (IEA PVPS Task 13, 2023)
typical5.77%underperformance from equipment issues across solar plants in 2024 (Raptor Maps, 2025 Global Solar Report)
typical≈ 0.5% a daysoiling loss measured in desert field tests, where the cost-optimal clean came near 10 % loss (QEERI)
Where a performance analyst's week goes, in hoursestimated
By hand20 days
With the solution3.5 days
  • Exporting SCADA and rebuilding expected energy from irradiance6 → 0.5 d
  • Building the loss table, cause by cause6 → 1 d
  • Working out soiling per block and when to clean3 → 0.5 d
  • Writing up faults for the O&M contractor3 → 1 d
  • Classing outages against the availability guarantee2 → 0.5 d

Estimated split of one analyst's week on one plant, in hours, by hand and with the solution.

How it works

How a morning's losses are found

Six specialist agents find, explain and price every lost megawatt-hour; the solar asset manager decides.

What comes in
Plant data in1.94 M readings a day · SCADA, irradiance, soiling stations, cleaning log
Agents at work
Expected energy modellerfrom the measured sun
Then
Loss attribution analyst
Soiling estimator
Then
Cleaning return plannercleans when it pays
Then
Fault case builder
O&M contract checker
A person decides
Solar asset managersets every plan, sends every case
What comes out
Loss waterfall
Cleaning plan
Fault cases to O&M
One case, step by step

One morning after a dust storm, from the waterfall to crews booked

Dunemark Solar Park is Lumina Utilities' 960 MWdc, 800 MWac plant: 12 blocks, 48 inverter stations, 1,641,600 modules on single-axis trackers. On Friday 9 October a dust storm crossed its western half. It is Tuesday 13 October, 07:10. Here is what happens next, screen by screen, in the working solution.

  1. 0107:10

    Yesterday's energy, from expected to delivered

    Nadia Rahman · Solar asset manager

    Nadia owns yield and revenue for Dunemark. Her morning opens on one waterfall: 6,120 MWh expected from the 7.62 kWh/m² the plant actually received, 5,720 MWh at the revenue meter. The plant was 400 MWh short of expected (6.5 %), and 284 MWh of it is recoverable — $6,816 at $24/MWh. Soiling is the largest step down: 174 MWh, 2.8 %, $4,176, with blocks 4–7 at 5.3–5.6 % and the robot blocks at 1.4–1.7 %.

    Built between 05:40 and 05:46 by six agents from 1.94 M SCADA readings — pyranometer P-07 left out, 3.1 % low against its neighbours.

  2. 02One click

    Inverter faults: three causes, one the alarms missed

    Loss attribution analyst

    Behind the 67 MWh inverter loss ($1,608) are three causes. INV-09-3 tripped on a DC ground fault from 10:40 to 15:10 (48 MWh), with insulation still at 0.38 MΩ. INV-02-1 is derating 12 % above 41 °C on a failed cooling fan (14 MWh). Two combiner inputs, CB-05-11 and CB-07-04, have open string fuses (5 MWh). Each one links to its fault case.

    “Alarms caught the INV-09-3 trip. They did not catch INV-02-1: a derating inverter raises no alarm — it shows only against its sister inverters in the afternoon heat.”

  3. 03Excused, not lost

    Curtailment matched to the grid instruction

    Loss attribution analyst

    The 55 MWh curtailment step is hatched: by design or excused. The analyst matched it to grid instruction GC-1012-04 from Lumina Grid Control, which capped the plant at 720 MW from 12:10 to 13:40. Under the setting “Deemed energy, claimable”, the 55 MWh is paid as deemed energy, and Nadia can add it to the deemed-energy claim from the side panel.

    Unexplained: 12 MWh (0.2 %) — under the 0.5 % limit, so it stays unexplained rather than being moved into a named loss.

  4. 04The calculator

    Clean blocks 4 to 7 now — pays back in 6 days

    Cleaning return planner

    Blocks 4–7 are crew-cleaned, 547,200 modules, last cleaned 28 September and next due on the fixed date of 28 October. The dust is taking 100 MWh a day that a clean would return — $2,400 a day. A wet clean costs $13,954: crew labour $11,280, 219 m³ of desalinated water $679, vehicles and supervision $1,995. It pays back in 5.8 days and nets $20,846 by 28 October, when soiling would otherwise have reached 8.4 %.

    “The calculator re-runs every morning after the soiling estimate. A plan is proposed only when it pays back inside 10 days.”

  5. 05And when not to

    The robot blocks stay at every 3 nights

    Cleaning return planner

    The same calculator says when a clean does not pay. On blocks 8–12, an extra robot pass every sixth night would lower average soiling by 0.31 points: $190 a day returned for $205 a day of extra passes. The robots already ran two extra passes after the storm on 10 and 11 October. Block 3's higher soiling is robot RB-03-14 stuck on its rail — a fault case, not a schedule change.

    “Keep every 3 nights — every 2 nights would cost more than it returns.”

  6. 0607:24

    Nadia sets the plan, inside her limit

    Nadia Rahman · Solar asset manager

    The plan books Sandline crews A–D for the nights of 13–14 and 14–15 October, reserves 219 m³ of water and moves the fixed date from 28 October to 13 November. The confirmation shows the cost, the daily return, the payback and the net by 28 October. Nadia's limit is $25,000; above it, Hessa Karim, head of generation, co-signs.

    “It is under your $25,000 limit, so no co-signature is needed. It is written to the record with the calculator's inputs.”

  7. 07Plan set

    Crews booked for tonight, water reserved

    Cleaning return planner

    Only after Nadia sets the plan does the planner book: work orders WO-88412 for blocks 4 and 5 tonight and WO-88413 for blocks 6 and 7 tomorrow night, 219 m³ from Lumina Water on tankers T-4471 and T-4472, and the fixed date moved to 13 November. At 07:26 Sandline Services confirms: Ravi Menon, crews A and B on site at 19:30.

    The planner proposes only — it never books a crew or a robot run until the asset manager sets the plan.

  8. 08Fault cases

    Six open cases, each with the energy at stake

    Fault case builder

    Inverter, combiner, tracker and robot faults become cases for Sandline Services, the O&M contractor: 6 open, 111 MWh a day at stake ($2,664), 2 ready to send, 1.1 days average to fix in October. FC-2619 — 46 tracker rows in block 6 flat at 0° after the storm stow — has a crew on site. FC-2618, the INV-02-1 fan, and FC-2621, robot RB-03-14, wait for a person to send them.

    “Energy at stake = MWh a day the fault costs until it is fixed, at $24/MWh.”

  9. 09FC-2617

    The ground fault, with its evidence and a past case

    Ravi Menon · Site supervisor, Sandline Services

    The case shows INV-09-3's power against its sister inverters on 12 October, with the 48 MWh trip shaded. The evidence: alarm ALM 0412, DC insulation fault at 10:40; insulation resistance 0.38 MΩ after the 15:10 reset against a 1.00 MΩ trip limit; and a similar past case, FC-2533 on INV-09-1 in August 2026, a cracked DC cable — 86 % match. Ravi acknowledged it at 11:02.

    “The case closes only when SCADA shows the energy back for a full day. The contractor's word is not enough, and no agent closes a case.”

  10. 10October to date

    Availability against the O&M guarantee

    Hessa Karim · Head of generation

    The O&M contract checker classed all 12 outages from 1 to 12 October: 9 contractor-caused under clause 7.2, 3 excused under clause 7.3 — Lumina Grid's feeder and switch work and 7 grid instructions. Energy-based availability is 98.70 % against the 99.0 % guarantee: 954 MWh lost to contractor-caused outages, 220 MWh below the guarantee, $5,280 in liquidated damages accrued. The notice goes to Hessa for approval.

    The contract checker drafts only — the head of generation approves every notice.

Who it’s for

Built for everyone who answers for a plant's yield.

The same morning after a dust storm, seen by the four people who own the plant's energy — what their week looked like, and what it looks like now.

NR
Nadia RahmanSolar asset manager, Dunemark Solar Park · sets cleaning plans and sends cases
Solar asset manager
Before
Owns yield and revenue for 960 MWdc, with cleaning on a fixed calendar and losses explained weeks later. “I don't need another alarm. I need to know where yesterday's megawatt-hours went.”
Now
Opens a waterfall every morning with each loss in MWh and dollars, sets a cleaning plan when it pays back, and sends each case with the energy at stake.
OS
Omar SalehPerformance analyst · classes unexplained losses and keeps the plant model
Performance analyst
Before
Rebuilds expected energy and the loss table every morning from SCADA exports. “Half my week is the same loss table in a spreadsheet.”
Now
Gets the waterfall built at 05:46, reviews what is left unexplained — like the 4 % string spread in block 3 — and checks blocks by soiling and performance ratio.
RM
Ravi MenonSite supervisor, Sandline Services · cleaning crews, robots and inverter technicians
O&M contractor
Before
Runs four cleaning crews, the robot fleet and the inverter technicians on tickets that say what broke but not what it costs. “Give me the inverter, the fault and the hour, and my crew goes once.”
Now
Receives cases with the asset, the fault, the evidence, a similar past case and the MWh a day at stake, and crews booked by work order.
HK
Hessa KarimHead of generation, Lumina Utilities · co-signs above $25,000 and approves contract notices
Head of generation
Before
Approves spend above $25,000 and contract claims. “Every clean should pay for itself. Show me it does.”
Now
Sees each clean's cost, return and payback, and approves the availability notice with every outage classed and the damages worked out.
Built on the engine

6 agents. Each with one job, and hard limits.

Six specialist agents find, explain and price every lost megawatt-hour; the solar asset manager decides.

Expected energy modeller

Works out what each block should have produced from the sun it actually received — measured plane-of-array irradiance, module temperature, commanded tracker angles and the plant model with its module, inverter and cable losses and degradation.

  • Never uses forecast irradiance for a settled day
  • Flags a sensor that disagrees with its neighbours instead of using it
Loss attribution analyst

Splits the gap between expected and metered energy into soiling, inverter faults, clipping, tracker faults, availability, curtailment and unexplained, using alarms, power curves against sister inverters, tracker angles, grid instructions and the soiling estimate, and publishes the waterfall.

  • Never moves unexplained energy into a named loss
  • Every loss cites its source
  • Above 0.5 % unexplained, it asks the performance analyst
Soiling estimator

Estimates soiling per block from the daily soiling ratio of the six soiling stations and, for blocks without a station, from string current recovery after the last clean.

  • Reports each block's soiling with its basis
  • Says so when a block has no station and no clean in 45 days
Cleaning return planner

For each group of blocks, works out the energy a clean would return each day, the cost of a crew clean or of extra robot passes, and the payback; proposes a plan when it pays back within the limit, and says when not to clean.

  • Proposes only — never books a crew or a robot run until the asset manager sets the plan
  • Above $25,000 the head of generation co-signs
Fault case builder

Turns inverter, combiner, tracker and robot faults into cases with the asset, the fault, the evidence, similar past cases and the energy at stake a day, ready for the O&M contractor, and checks recovery from SCADA each morning.

  • Never closes a case
  • A case closes only when SCADA shows the energy back for a full day
  • A person sends every case to the contractor
O&M contract checker

Classes every outage as contractor-caused (clause 7.2) or excused (clause 7.3) under the O&M agreement, computes energy-based availability month to date and the liquidated damages, and drafts the monthly notice.

  • Drafts only — the head of generation approves every notice
Solar asset manager

Sets cleaning plans; head of generation co-signs above $25,000. The agents propose; a named person decides.

Ask in plain words

Ask about any loss, block or case, in plain words

Ask about yesterday's losses, a block, a fault case, cleaning or the O&M contract — or say what to change. Every answer points to its source.

Why is soiling so high in blocks 4 to 7?

The 9 October dust storm, on the four blocks that wait for crews. PM10 peaked at 1,850 µg/m³ from the west-north-west, and the soiling stations in blocks 4, 5 and 7 have read 5.3–5.6 % since. The robot blocks ran two extra passes and are back at 1.5–1.7 %; blocks 4–7 are not due until 28 October. A clean now pays back in 6 days.

What did INV-09-3 cost us yesterday?

48 MWh — $1,152. It tripped on a DC insulation fault at 10:40 and ran again only after the 15:10 remote reset. Insulation is still 0.38 MΩ against a 1.0 MΩ limit, so it can trip again. The same alarm on INV-09-1 in August was a cracked DC cable. Sandline acknowledged at 11:02.

Should the robots run every night this week?

No — keep every 3 nights. On blocks 8–12, every 2 nights would return about $190 a day for $205 a day of extra passes. Block 3's higher soiling is robot RB-03-14 stuck on its rail, not the schedule — that is case FC-2621.

Are we owed damages under the O&M contract?

Yes: $5,280 so far this month. Energy-based availability is 98.70 % for 1–12 October against the 99.0 % guarantee — 954 MWh lost to contractor-caused outages, 220 MWh below the guarantee. Curtailment and Lumina Grid's feeder work are excused and not counted. The notice needs Hessa Karim's approval.

Every screen

The working solution, as it ships.

13 screens from the working solution, on its sample data. Pick one to see it large.

The loss waterfallYesterday's energy from 6,120 MWh expected to 5,720 MWh delivered, each loss in MWh and dollars, soiling by block and the cleaning verdict beside it.
Behind the inverter lossThe three inverters and combiners behind 67 MWh, each with its fault case, including a derating that raised no alarm.
Curtailment, matched55 MWh matched to grid instruction GC-1012-04, paid as deemed energy, ready to add to the claim.
The cleaning return calculatorThe dust's cost day by day against a $13,954 wet clean: paid back on 20 October, $20,846 net by the old fixed date.
When not to cleanOn the robot blocks an extra pass would cost $205 a day to return $190, so the schedule stays at every 3 nights.
Set the cleaning planCrews, nights, water and the new fixed date on one screen, with the asset manager's $25,000 limit stated.
Plan set, crews bookedWork orders WO-88412 and WO-88413, water reserved from Lumina Water and the fixed date moved to 13 November.
The site mapTwelve blocks shaded by soiling after the 9 October storm, with performance ratio, delivered energy and open cases per block.
Fault casesSix open cases for the O&M contractor, each with the MWh a day at stake, its response clock and its status.
A fault caseINV-09-3's power against its sister inverters, the alarm, the insulation reading and a similar past case.
Performance trendWeather-corrected performance ratio and soiling over 30 days, the cleaning history, and degradation against the module warranty.
The O&M availability guaranteeEnergy-based availability month to date, every outage classed contractor-caused or excused, and the damages accrued.
Your rulesEnergy value, cleaning costs, thresholds, approvers and the O&M agreement's terms.
Governance

Proposed by agents, decided by people, on the record.

Every number cites its sourceEach loss, soiling figure and damage amount points to where it came from — the SCADA tag, the revenue meter, the soiling station, the grid instruction or the clause of the O&M agreement.
The asset manager sets every planThe solar asset manager sets each cleaning plan up to $25,000; above that, the head of generation co-signs. The planner proposes and books nothing until a person has set the plan.
A person sends every caseFault cases are built with their evidence and energy at stake, and the asset manager or the performance analyst sends them to the contractor. Every contract notice is approved by the head of generation.
Closed when the energy is backA fault case closes only when SCADA shows the energy back for a full day. The contractor's word is not enough, and no agent closes a case.
SCADA data is read-onlyThe agents read SCADA, the plant model and the cleaning log but never edit plant data. Unexplained energy stays unexplained until a person classes it.
Every step on the recordEvery waterfall run, cleaning plan, case and setting change is recorded with who and when — the agents' steps and each person's decision alike.
Configuration

Your plant's numbers and limits, not ours

The energy value, cleaning costs, thresholds, approvers and O&M terms are settings, chosen by the utility for each plant.

SettingDefaultChoose from
Energy value for losses$24.00/MWh$18.00 · $24.00 · $31.00 per MWh — the avoided generation cost used in every dollar figure
CurtailmentDeemed energy, claimableDeemed energy, claimable · Lost, not claimable
Unexplained loss that asks the analyst0.5 %0.3 % · 0.5 % · 1.0 % — the waterfall still publishes; the gap is sent to a person
Inverter derating to open a case5 %3 % · 5 % · 8 %, against its sister inverters over 2 hours
Propose a plan when it pays back within10 days7 days · 10 days · 14 days — the calculator stays quiet above this
Keep a fixed date as a backstopOnOn · Off — a clean at least every 45 days, whatever the return
Cleaning plans set by the solar asset managerUp to $25,000Up to $25,000 · up to $15,000 — above the limit, the head of generation co-signs
Availability guarantee99.0 %98.5 % · 99.0 % · 99.5 %, energy-based, each calendar month; inverter response 12 h · 24 h · 48 h
Connections

Works with the data a solar plant already produces

Inverter and string SCADAinverter, combiner, tracker and revenue meter readings at 1–5 minute resolution
Irradiance and weatherpyranometers, module temperature, met mast readings and dust events
Soiling stationsdaily soiling ratios from clean and soiled reference modules
Cleaning logsevery crew clean and robot pass, with its cost, water and soiling after
O&M ticketsfaults sent to the contractor, with evidence, energy at stake and recovery
O&M agreement and grid instructionsthe availability guarantee, excused events, response times and curtailment instructions
What it changes

The difference, in numbers.

Every figure is labelled: a target the solution is built to, an estimate, a typical published result, or a proven one.

target
1.5%
more of the plant's energy delivered: about $750,000 a year on a 960 MWdc plant
estimated
≈ 25%
less spent on cleaning: crews sent when a clean pays back, not every 30 days
Fixed 30-day cleans12 a year
Cleaned when it pays≈ 9 a year
target
100%
of availability shortfalls claimed under the O&M guarantee, classed the next morning
12 of 12
October outages classed

“demo” = seen in the working solution, on its sample plant data · “target” = the design goal, measured in the live solution · “estimated” = our arithmetic: 2,080 GWh a year × 1.5 % × $24/MWh ≈ $750,000; 3 fewer crew cleans × $13,954 ≈ $42,000 a year on blocks 4–7; the analyst's hours are an estimate · “typical” = published figures: IEA PVPS Task 13, Soiling Losses (2023) — soiling costs 3–5 % of PV energy worldwide, about €3–5 billion a year; Raptor Maps, 2025 Global Solar Report — 5.77 % underperformance from equipment issues in 2024; QEERI desert soiling tests — about 0.5 % loss a day, cost-optimal clean near 10 % loss. Lumina Utilities, Dunemark Solar Park, Sandline Services and the people named on this page are fictional — characters and sample data in the working solution.

Questions

What solar asset managers ask us.

What is solar PV performance monitoring software?

Software that compares what a solar plant should have produced from the sun it received with what it delivered, and explains the difference. Solar PV Performance Monitoring adds six agents that attribute every lost megawatt-hour to a named cause, estimate soiling block by block, price each clean against the energy it returns and turn faults into cases for the O&M contractor. The solar asset manager sets every plan and sends every case.

How does a PV loss waterfall work?

Each morning the expected energy modeller works out yesterday's expected energy from measured irradiance, module temperature, tracker angles and the plant model. The loss attribution analyst splits the gap to the revenue meter into soiling, inverter faults, clipping, tracker faults, availability, curtailment and unexplained. Recoverable losses are drawn solid, excused and by-design losses hatched, and each step opens the blocks, inverters and grid instructions behind it.

How does it decide when to clean solar panels?

The cleaning return planner weighs the energy the dust is taking each day against the cost of a crew clean or extra robot passes, and proposes a plan only when it pays back within the limit you set — 10 days in the sample plant. It also says when not to clean, and a fixed backstop date can stay in place.

How is soiling measured block by block?

The soiling estimator reads the daily soiling ratio from each soiling station, comparing clean and soiled reference modules. For blocks without a station it estimates from string current recovery after the last clean, and it says so when a block has no station and no clean in 45 days.

Can it check availability against our O&M contract guarantee?

Yes. The O&M contract checker classes every outage as contractor-caused or excused under the agreement, computes energy-based availability month to date and the liquidated damages, and drafts the monthly notice. In the sample plant that is 98.70 % against a 99.0 % guarantee and $5,280 accrued; the head of generation approves the notice.

Do people stay in control of cleaning plans and contractor cases?

Yes. The agents model, attribute, estimate, propose and draft — they never book a crew without a set plan, send a case, close a case or send a claim. The asset manager sets plans up to $25,000, the head of generation co-signs above that and approves every notice, and SCADA data is read-only to the agents.

Can we set our own energy value, cleaning costs and limits?

Yes. The energy value for losses, curtailment treatment, the unexplained-loss and inverter-derating thresholds, the morning run time, cleaning and water costs, the payback limit, the backstop date, the approval limits and the O&M guarantee and response times are all settings, with every change recorded.

How long does it take to go live?

The Agentic Solution Engine builds and deploys it from your requirements and documents — your plant model, SCADA tag list, cleaning rates and O&M agreement — and it goes live once every quality gate has passed. We will walk you through it on your own plant's data first.

See it on
your plants.

We'll run Solar PV Performance Monitoring on your own plant's SCADA, soiling and cleaning data.