Skip to main content

KPIs Module Glossary & Calculations

Updated over a month ago

Introduction

This document provides an informative reference for building custom KPI expressions in the Farsight® KPIs module. It covers the FQL syntax (context variables, functions, operators), signal availability by OEM manufacturer, and KPI expression examples for performance monitoring.

As a general rule, you should use the available KPIs provided by Farsight®. You can experiment with the Farsight® Query Language (FQL) and create your own custom KPIs as exemplified in this document.

What Are KPI Expressions?


The KPIs module lets you define custom calculated metrics using Farsight® Query Language (FQL). Unlike alarm triggers (which fire when a condition becomes true), KPI expressions compute a value for every data point, producing continuous time series that you can trend, compare across assets, and use for reporting.

Think of alarms as "tell me when something is wrong," and KPIs as "show me how things are performing over time." FQL is based on IEC 61850 and IEC 61400-25 standards. Expressions follow the signal format LogicalDevice.LogicalNode.DataObject[.attribute] and can reference context variables, use built-in functions, and combine signals with arithmetic and logical operators.

Creating a KPI


The Create KPI page follows a three-step flow:


1. Define KPI — Select the Technology (e.g. Wind), choose your Target assets, set the Output Unit for the calculated result (e.g. kW, °C, %, dimensionless), give the KPI a unique Name, and an Expression Name (following the Wind.Asset.namespace pattern), and a Description.


2. Define Logic — This step has two parts. The Conditions field allows you to define pre-filter criteria that determine when the expression should be evaluated (e.g. only when wind speed is above cut-in, or only during certain operational states). Data points that do not meet the conditions are excluded before the expression runs.
The Expression field is where you write the FQL formula that computes the KPI value.


3. Validate — Select any single Asset and a date range, then click Preview to see the KPI computed against historical data. This lets you verify the expression produces sensible results.

Expression Name (following the Wind.Asset.namespace pattern). This value is unique, and it is automatically populated according to the name of the KPI. You can change it at a later date, as long as the new name is also unique.

At the moment, only a single asset can be selected for each KPI.

Performance KPIs

KPI #1 — Load Factor (Capacity Factor per Interval)

OEMs: All OEMs

Expression:

ROUND((COALESCE(WTUR1.AvW, 0) / NominalPower) * 100, 2)

The percentage of rated capacity the turbine is actually producing at each data point. A value of 100% means performing at full rated power; 0% means idle. Over time, the average of this KPI gives the capacity factor — the single most-used metric in wind energy performance reporting. Typical onshore values range from 25–45%, depending on wind resource.

Why it matters: Load factor trending reveals long-term performance degradation (blade erosion, pitch calibration drift), seasonal patterns, and the impact of curtailment. Comparing load factor across turbines in the same wind farm at the same time isolates turbine-specific issues from site-wide wind variability.

KPI #2 — Power Coefficient (Cp)

OEMs: All OEMs

Expression:

ROUND( COALESCE(WTUR1.AvW, 0) / (0.5 * 1.225 * PI() * POW(RotorDiameter / 2, 2) * POW(WNAC1.AvWdSpd, 3) / 1000), 4 )

The ratio of electrical power extracted to the total kinetic power available in the wind passing through the rotor swept area. The theoretical maximum (Betz limit) is 0.593; modern turbines achieve peak Cp of 0.45–0.50 in the partial-load region.

Recommended Condition: This KPI should only be evaluated when wind speed is within the turbine's operational envelope. Set the following in the Conditions field:

WNAC1.AvWdSpd >= CutIn AND WNAC1.AvWdSpd <= CutOut

Without this condition, the expression produces mathematically invalid results: at very low wind speeds the denominator approaches zero, causing Cp to spike to extreme values; below cut-in the turbine is not designed to operate so the ratio is meaningless; and above cut-out the turbine shuts down, producing zero power regardless of available wind energy. Filtering to the operational range ensures every computed Cp value is physically meaningful.

How it works: The denominator estimates how much power is available in the wind. It uses a standard physics formula that multiplies air density (1.225 kg/m3 at sea level and 15 degrees C) by the rotor swept area (calculated from RotorDiameter) and the wind speed cubed. The result is divided by 1000 to convert from watts to kilowatts. The higher the wind speed, the more energy is available -- and because wind speed is cubed, even small changes in wind have a big effect on available power.

Why it matters: Cp is the purest measure of aerodynamic efficiency. A declining Cp trend at the same wind speeds indicates blade degradation, pitch calibration errors, or yaw misalignment.

Caution: Uses standard air density (1.225 kg/mN). At high-altitude or hot-climate sites, use the air density estimate (KPI #3) for correction.

KPI #3 — Air Density Estimate

OEMs: Enercon, Enercon UA, Vestas, Vestas UA, Nordex (requires WMET1.AvEnvTmp)

Expression:

ROUND(1.225 * (288.15 / (WMET1.AvEnvTmp + 273.15)), 3)

An approximation of air density based on ambient temperature, using the ideal gas law at constant pressure. Normalizes standard density (1.225 kg/mN at 15°C / 288.15 K) by the ratio of standard to actual temperature in Kelvin.

Why it matters: Air density directly affects available wind power (P µ r). On a 35°C summer day, density drops ~6.5%; on a -10°C winter day, it rises ~9.5%. Without density correction, power curve analysis and Cp calculations systematically misread seasonal performance.

Limitation: Ignores pressure variation (altitude, weather systems). For sites above 500m elevation, the approximation error grows.

KPI #4 — Specific Power Output

OEMs: All OEMs

Expression:

ROUND(COALESCE(WTUR1.AvW, 0) / (PI() * POW(RotorDiameter / 2, 2) / 1000000), 2)

Power output per unit of rotor swept area (kW/mC). Normalizes production across turbines of different sizes — a 3 MW turbine with a 126m rotor and a 2 MW with a 90m rotor can be directly compared.

Why it matters: The fairest cross-fleet comparison metric when your portfolio includes different turbine models.

A turbine with lower specific power than a neighbor of the same model in similar wind conditions has a turbine-specific issue.

KPI #5 — Curtailment Loss Ratio

OEMs: Vestas, Vestas UA (requires WAPC1.SetPlW)

Expression:

ROUND( (WAPC1.SetPlW - COALESCE(WTUR1.AvW, 0)) / NominalPower * 100, 2 )

The percentage of nominal capacity being curtailed — the gap between what the grid controller commands (SetPlW) and actual output. Quantifies curtailment per interval for energy loss accounting.

Why it matters: Curtailment is one of the largest energy loss sources after availability. This KPI enables comparison of curtailment patterns across turbines and verification against grid operator instructions.

Note: When SetPlW >= NominalPower (no curtailment), the value may go negative. Wrap in MAX_VALUE(..., 0) to floor at zero.

KPI #6 — Energy Yield per Interval

OEMs: All OEMs

Expression:

ROUND(COALESCE(WTUR1.AvW, 0) * (LogInterval / 60), 2)

Estimated energy production in kWh for each logging interval. Power (kW)A * time (hours) = energy (kWh). LogInterval is in minutes, so dividing by 60 converts to hours.

Why it matters: While WTUR1.TotWh provides the cumulative meter reading, this calculated KPI derives interval-level energy from power data — useful when the energy counter has gaps, resets, or isn't updating correctly.

Did this answer your question?