Coder Social home page Coder Social logo

shailavij / wt_fault_identification Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gcshawn/wt_fault_identification

0.0 0.0 1.0 2.45 MB

Wind Turbine Fault Identification using Machine Learning Techniques applied to SCADA data

Python 100.00%

wt_fault_identification's Introduction

Attention to those who previously forked this repo

It has come to my attention that the data that I used in this project was covered under NDA. Therefore, data has been removed from this project. If you have forked it, please remove the data from the public domain. Thank you.

Wind Turbine Fault Identification using Machine Learning Techniques applied to SCADA data

Due to the unscheduled maintenance, wind farms can loss precious time and that results in the loss of revenue. To this end, it is imporant to perform maintenance before it becomes too late. By continiously monitoring, turbine health, it is possible to detect the faults and schedule maintenance as needed. In this project, SCADA data collected from the wind farm in Ireland is used to evaluate the turbine performance. Fault and alarm data are filtered and analysed in conjunction with the power curve to identify periods of normal and faulty operation. Also, the specific fault is identified. The data consists of: Operational data, Status data, Warning data.

Description of Data

Operational Data:

The turbine control system monitors many parameters such as wind speed and ambient temperature, power characteristics and others. The data is collected every 10 minutes and stored as scada_data.

Status Data:

Number of normal and abnormal (faulty) operation states are saved in two separate datasets: WEC Status data and RTU Status data. The WEC (Wind Energy Converter) status data corresponds to status message directly related to the turbine itself. RTU data corresponds to power control data at the point of connection to the grid, such as active and reactive power. Each status has a "main status" and "sub-status" code associated with it. Any main WEC status code above 0 indicates a faulty behaviour, however that does not mean that there is fault, e.g. status code 2 indicates "lack of wind". In RTU, statuses exclusive deal with active and reactive power set-points, e.g., status 100:82 corresponds to limiting the active power output to 82% of its actual current output.

Warning Data:

This data corresponds to the general information about the turbine and are not directly related to the turbine operation or safety. Sometimes, warning messages correspond to a potentially developing fault on the turbine, as if the same warning message persists for a set amount of time and is not cleared soon, a fault might develop and a new status message is generated.

Description of .py Files

main.py - Run this file. At certain point you will be asked to decide if we want to classify all-faults or a specific fault. The options are: all faults, fault 62, fault 80, fault 228, fault 60, fault 9

data_labelling.py - labels datapoints as "all faults" or a specific fault

feature_selection.py - as not all of the features in the SCADA dataset (63 features in total) are useful, 27 features are chosen based on the author's domain expertise. In addition, 'CS101 : Blade B temp.', 'CS101 : Blade C temp.', 'RTU: ava. Setpoint 1', 'CS101 : Sys 1 inverter 1 cabinet temp.', 'CS101 : Sys 1 inverter 2 cabinet temp.', 'CS101 : Sys 1 inverter 3 cabinet temp.', 'CS101 : Sys 1 inverter 4 cabinet temp.', 'CS101 : Sys 1 inverter 5 cabinet temp.', 'CS101 : Sys 1 inverter 6 cabinet temp.', 'CS101 : Sys 1 inverter 7 cabinet temp.', 'CS101 : Sys 2 inverter 1 cabinet temp.', 'CS101 : Sys 2 inverter 2 cabinet temp.', 'CS101 : Sys 2 inverter 3 cabinet temp.', 'CS101 : Sys 2 inverter 4 cabinet temp.', 'CS101 : Sys 2 inverter 5 cabinet temp.', 'CS101 : Sys 2 inverter 6 cabinet temp.', 'CS101 : Sys 2 inverter 7 cabinet temp.' are combined to get the inverter average and inverted standard deviation. In addition, here the dataset is normalized.

dataset_split.py - The data is split into training and testing split with 80/20 ratio. The training data is balanced using undersampling technique.

model.py - The model is trained using either SVM or Decision Tree algorithms

wt_fault_identification's People

Contributors

iameminmammadov avatar shailavij avatar

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.