Home▸AI & Machine Learning▸Solar Panel Fault Detector — Power-Curve Anomaly (2D)

Solar Panel Fault Detector — Power-Curve Anomaly (2D)

A physics-informed expected-power model compares live against simulated panel-string output on a flat 2D chart and row view, flagging shading, soiling and degradation faults with rolling residual z-scores.

AI & Machine Learning2DModerate60 FPS📱 Mobile-adapted⇄ 3D version
2d-ai-solar-panel-fault-detection ↗ Open standalone

This 2D companion runs the same expected-power model and rolling residual z-score anomaly detector as the 3D version, laid out as a plain chart-and-rows view: a top panel plots expected versus actual power across the simulated day for the selected string, and six rows below show each string's panel cells colored by live status. Inject a shading, soiling or degradation fault on any string and watch its residual drift until the z-score crosses the threshold and the row turns red.

⚙ Under the hood

Expected power uses P_stc × (irradiance/1000) × (1 + tempCoeff × (panelTemp − 25)); the detector runs an exponentially-weighted rolling mean and variance on the actual-minus-expected residual and converts it to a z-score every simulated timestep.

solar panel fault detectionpv power curveanomaly detectionresidual z-scorepredictive maintenance

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install

How is the expected power computed?

Expected power for each string uses P_expected = P_stc × (irradiance/1000) × (1 + tempCoeff × (panelTemp − 25)), where P_stc is the rated string power at standard test conditions, irradiance is the simulated sensor reading in W/m², panelTemp is derived from ambient temperature plus irradiance-driven cell heating, and tempCoeff is a negative coefficient (about −0.4%/°C) capturing why panels lose output as they get hot.

How does the anomaly detector decide a string is faulted?

Each simulated timestep the residual (actual minus expected power) is fed into a rolling exponentially-weighted mean and variance for that string. The residual is converted into a z-score, and once the z-score drops below the negative anomaly threshold for long enough the string is flagged. This is genuine statistical process control, not a scripted trigger — it responds directly to whatever fault is injected.

What is the difference between shading, soiling and degradation faults?

Partial shading derates a fraction of a string's irradiance instantly and non-linearly because series-connected cells are limited by the weakest sub-string. Soiling is a slow multiplicative dust build-up that accumulates day by day. Degradation is a gradual efficiency decline simulating accelerated cell ageing, again compounding day over day. All three reduce actual output relative to the expected-power model, but with distinct time signatures.

What did you find?

Add reproduction steps (optional)