NREL / flasc

A rich floris-driven suite for SCADA analysis
https://nrel.github.io/flasc/
BSD 3-Clause "New" or "Revised" License
31 stars 18 forks source link

[Feature]: Add filtering based on rotor speed and blade pitch #132

Open paulf81 opened 10 months ago

paulf81 commented 10 months ago

Description

A useful way to filter non-nominal behavior is to filter based on the curve of rotor-speed (x) to blade pitch (y), should work similarly to power curve filtering.

Related URLs

No response

Bartdoekemeijer commented 10 months ago

This is (to a certain degree) already possible in FLASC since the generalized filtering class implementation in #78. For example, you can do this:

        # Filter for blade pitching while in region II
        ws_pow_filtering.filter_by_condition(
            condition=(
                (ws_pow_filtering.df[f"blade_pitch_{ti:03d}"] > 0.0) &
                (ws_pow_filtering.df[f"ws_{ti:03d}"] > 6.0) &
                (ws_pow_filtering.df[f"ws_{ti:03d}"] < 12.0)
            ),
            label="Blade pitch above 0.0 deg while wind speed between 6 and 12 m/s",
            ti=ti,
            verbose=True,
        )

and the plot the results with

        ax = ws_pow_filtering.plot_filters_custom_scatter(
            ti=ti,
            x_col=f"ws_{ti:03d}",
            y_col=f"blade_pitch_{ti:03d}",
        )
paulf81 commented 10 months ago

That is cool, thank you @Bartdoekemeijer ! I was thinking though, what if we made a version that worked on a similar principle as the power curve filtering, removing outliers along the pitch dimension?

Bartdoekemeijer commented 10 months ago

Like a curve estimation and then outlier detection? That sounds useful! I wonder if we can generalize the power curve function, because the principles are identical between the different variables (power, rotor speed, pitch).

paulf81 commented 10 months ago

I think it should be not too bad also if we use the approach of standard error from the median, binned by rotor speed and error long the pitch access?

aclerc commented 1 month ago

wind-up has a automated process for filtering based on RPM and pitch. You don't necessarily want to just filter outliers, I find it's better to understand how the turbine controller works (in wind-up for example you need to specify if the turbine pitches to stall or feather to regulate rated power) and then adjust filtering rules based on that knowledge. Happy to discuss more if it's of interest.