Coder Social home page Coder Social logo

lkev / wtphm Goto Github PK

View Code? Open in Web Editor NEW
65.0 2.0 17.0 28.72 MB

SCADA data pre-processing library for prognostics, health management and fault detection of wind turbines. Successor to https://github.com/lkev/wt-fdd

License: GNU General Public License v3.0

Python 100.00%
wind-turbine wind-energy fault-detection machine-learning scada

wtphm's Introduction

WTPHM

The Wind Turbine Prognostics and Health Management library processes wind turbine events (also called alarms or status) data, as well as operational SCADA data (the usually 10-minute data coming off of wind turbines) for easier fault detection, prognostics or reliability research.

Turbine alarms often appear in high numbers during fault events, and significant effort can be involved in processing these alarms in order to find what actually happened, what the root cause was, and when the turbine came back online. This module solves this by automatically identifying stoppages and fault periods in the data and assigning a high-level "stoppage category" to each. It also provides functionality to use this info to label SCADA data for training predictive maintenance algorithms.

Although there are commercial packages that can perform this task, this library aims to be an open-source alternative for use by the research community.

Please reference this repo if used in any research. Any bugs, questions or feature requests can be raised on GitHub. Can also reach me on twitter @leahykev.

This library was used to build the "batch creation" and "data labelling" steps of this paper.

Installation

Install using pip! :

pip install wtphm

Documentation

Full documentation and user guide can be found on readthedocs.

A local copy of the docs can be built by running docs/build_docs.bat with sphinx installed.

Is my Data Compatible?

The data manipulated in this library are turbine events/status/alarms data and 10-minute operational SCADA data. They must be in the formats described below.

Event Data

The event_data is related to any fault or information messages generated by the turbine. This is instantaneous, and records information like faults that have occurred, or status messages like low- or no- wind, or turbine shutting down due to storm winds.

The data must have the following column headers and information available:

  • turbine_num: The turbine the data applies to
  • code: There are a set list of events which can occur on the turbine. Each one of these has an event code
  • description: Each event code also has an associated description
  • time_on: The start time of the event
  • stop_cat: This is a category for events which cause the turbine to come to a stop. It could be the functional location of where in the turbine the event originated (e.g. pitch system), a category for grid-related events, that the turbine is down for testing or maintenance, in curtailment due to shadow flicker, etc.
  • In addition, there must be a specific event code which signifies return to normal operation after any downtime or abnormal operating period.

SCADA/Operational data

The scada_data is typically recorded in 10-minute intervals and has attributes like average power output, maximum, minimum and average windspeeds, etc. over the previous 10-minute period.

For the purposes of this library, it must have the following column headers and data:

  • turbine_num: The turbine the data applies to
  • time: The 10-minute period the data belongs to
  • availability counters: Some of the functions for giving the batches a stop category rely on availability counters. These are sometimes stored as part of scada data, and sometimes in separate availability data. They count the portion of time the turbine was in some mode of operation in each 10-minute period, for availability calculations. For example, maintenance time, fault time, etc. In order to be used in this library, the availability counters are assumed to range between 0 and n in each period, where n is some arbitrary maximum (typically 600, for the 600 seconds in the 10-minute period).

wtphm's People

Contributors

lkev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

wtphm's Issues

Grouping faults with different descriptions messes up their descriptions

The output description of the grouped events from get_grouped_event_data function of batch.py works fine when the different events to be grouped together have descriptions that only differ by one thing, e.g. an axis number.

However, when they are different, the output description gets mangled.

Should be a way to override the default behaviour and include a custom output description for these events.

Automatically add batch categories

In Leahy, Kevin, et al. "A robust prescriptive framework and performance metric for diagnosing and predicting wind turbine faults based on SCADA and alarms data with case study." Energies 11.7 (2018): 1738., a method for assigning labels to batches is given. Include this in the library.

This is actively being worked on in the add_batch_labelling branch

Hi

How can i reach you, i can be reached at [email protected] , we want to take your help to develop our predictive maintenance model for renewable energy.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.