scada-schema
Wind and PV SCADA data arrive in as many layouts as there are operators: columns named after a vendor's tag list, power in hectowatts or watts, time in local time or at the end of the interval, a status code that only the manual explains. This project fixes one schema, reads open datasets into it from their original files, checks the data, maps the status codes to IEC 61400-26 categories and hands the table to wind-up, OpenOA and pvlib, with a check that the tools give the same result either way. Code, specification.
The datasets and what the checks found
Every row below was loaded from the dataset's original files, validated against the schema and checked; the link opens the full HTML quality report of that table.
Findings by severity
A finding is one check, one signal and one device. It describes the data, not the sensor: a flat line of zeros is normal at night.
A unit change inside a record
PVDAQ system 34: AC power over plane-of-array irradiance, daily median (log10)
North offsets between turbines
Quality checks per dataset
Devices with at least one finding, by check
IEC 61400-26 mapping
The code tables translate a controller's status codes into the ten information categories. Where the operator also labels every stop, the table can be compared with the label (the Senvion table was written from the same logs, so that is a consistency check).
Converters and parity
The same source file goes into the target tool twice: through this library and by hand with plain pandas and the tool's own column names. The tool's own functions then run on both inputs.
The signals
Working material. The schema is a proposal, not a standard of any body; the IEC 61400-26 mapping is written from the public code texts of the open datasets and is not an OEM document or a reading of the standard. Data: Kelmarsh, Penmanshiel (Cubico, CC BY 4.0), Hill of Towie (RES, CC BY 4.0), La Haute Borne (ENGIE, Etalab open licence as stated by ENGIE), CARE to Compare (CC BY-SA 4.0), NREL PVDAQ (CC BY 4.0).