Skip to content

Geavanceerde berekeningen in Flux

Dit document behandelt geavanceerde berekeningen en wiskundige bewerkingen met Flux voor het analyseren van de Bries windturbine data.

TSR (Tip Speed Ratio) berekening

De Tip Speed Ratio (TSR) is de verhouding tussen de snelheid van de bladtip en de windsnelheid. Dit is een belangrijke parameter voor windturbines die aangeeft hoe efficiënt de turbine werkt.

Stap 1: Data ophalen

// Windsnelheid ophalen
windspeed = from(bucket: "Bries")
  |> range(start: minTime, stop: maxTime)
  |> filter(fn: (r) => r._measurement == "Wspeed" and r.runID == runID)
  |> filter(fn: (r) => r._field == "value")
  |> map(fn: (r) => ({ r with _value: float(v: r._value) })) 
  |> aggregateWindow(every: 100ms, fn: mean, createEmpty: true)
  |> fill(column: "_value", usePrevious: true)
  |> map(fn: (r) => ({_value: r._value, _time: r._time, _field: "Wind speed"}))

// Rotorsnelheid ophalen
rotorspeed = from(bucket: "Bries")
  |> range(start: minTime, stop: maxTime)
  |> filter(fn: (r) => r._measurement == "Rspeed" and r.runID == runID)
  |> filter(fn: (r) => r._field == "value")
  |> map(fn: (r) => ({ r with _value: float(v: r._value) })) 
  |> aggregateWindow(every: 100ms, fn: mean, createEmpty: true)
  |> fill(column: "_value", usePrevious: true)
  |> map(fn: (r) => ({_value: r._value, _time: r._time, _field: "rotor speed"}))

Stap 2: Berekening met transformatie

Vervolgens gebruik je deze queries in Grafana en pas je de volgende transformaties toe:

  1. 3.14159 * rotor speed = PI * rotorsnelheid
  2. 30 * Wind speed = Constante * windsnelheid
  3. 3.14159 * rotor speed * 0.94 = PI * rotorsnelheid * bladRadius
  4. TSR = (3.14159 * rotor speed * 0.94) / (30 * Wind speed)

De TSR formule is:

TSR = (Ω × R) / V
Waar: - Ω = Hoeksnelheid van de rotor in rad/s = (2π × RPM) / 60 - R = Bladradius in meters - V = Windsnelheid in m/s

Turbine vermogen berekening

Het vermogen van de windturbine kan worden berekend door het rotorkoppel te vermenigvuldigen met de hoeksnelheid.

Stap 1: Data ophalen

// Rotorsnelheid ophalen
rspeed = from(bucket: "Bries")
  |> range(start: minTime, stop: maxTime)
  |> filter(fn: (r) => r._measurement == "Rspeed" and r.runID == runID)
  |> filter(fn: (r) => r._field == "value")
  |> map(fn: (r) => ({ r with _value: float(v: r._value) })) 
  |> aggregateWindow(every: 100ms, fn: mean, createEmpty: true)
  |> fill(column: "_value", usePrevious: true)
  |> map(fn: (r) => ({_value: r._value, _time: r._time, _field: "Rotor speed"}))
  |> yield(name: "Rotor speed")

// Rotorkoppel ophalen
rtorque = from(bucket: "Bries")
  |> range(start: minTime, stop: maxTime)
  |> filter(fn: (r) => r._measurement == "Rtorque" and r.runID == runID)
  |> filter(fn: (r) => r._field == "value")
  |> map(fn: (r) => ({ r with _value: float(v: r._value) })) 
  |> aggregateWindow(every: 100ms, fn: mean, createEmpty: true)
  |> fill(column: "_value", usePrevious: true)
  |> map(fn: (r) => ({_value: r._value, _time: r._time, _field: "Rotor koppel"}))
  |> yield(name: "Rotor koppel")

Stap 2: Berekening met transformatie

Gebruik de volgende transformaties in Grafana:

  1. 2pi = 2 * 3.14159
  2. 2piRotor = 2pi * Rotor speed
  3. 2piRotor / 60 = 2pi * Rotor speed / 60 (omzetting van RPM naar rad/s)
  4. Power = (2piRotor / 60) * Rotor koppel

De vermogensformule is:

P = τ × ω
Waar: - P = Vermogen in Watt - τ = Koppel in Nm - ω = Hoeksnelheid in rad/s

Efficiency (Wach number) berekening

De efficiency berekent hoe efficiënt het voertuig de windenergie gebruikt door de voertuigsnelheid te vergelijken met de effectieve windsnelheid.

Stap 1: Data ophalen

Gebruik de queries voor windsnelheid en voertuigsnelheid zoals eerder beschreven.

Stap 2: Berekening met transformatie

  1. Real wind = Wind speed - Vehicle speed
  2. Efficiency = Vehicle speed / Real wind
  3. Efficiency [%] = Efficiency * 100

Gear Ratio berekening

De Gear Ratio geeft de verhouding weer tussen de rotorsnelheid en de voertuigsnelheid, wat belangrijk is voor het begrijpen van de mechanische transmissie.

Stap 1: Data ophalen

Gebruik de queries voor rotorsnelheid en voertuigsnelheid zoals eerder beschreven.

Stap 2: Berekening met transformatie

  1. WielDia/2 = Wieldiameter / 2 (straal)
  2. 30Vspeed = 30 * Vehicle speed
  3. WielDia/2*pi = Wielstraal * pi
  4. RightFormula = 30Vspeed / (WielDia/2*pi)
  5. Gear ratio = Rotor speed / RightFormula

Windsnelheid van stilstand berekening

Dit berekent de effectieve windsnelheid vanaf stilstand, wat belangrijk is voor het begrijpen van de werkelijke windbelasting op de turbine.

// Echte windsnelheid = Relatieve windsnelheid - Voertuigsnelheid
Wind speed stilstand = Wind speed - Vehicle speed

Join-operatie voor geavanceerde berekeningen

Als alternatief voor de Grafana transformaties kun je ook direct in Flux een join-operatie gebruiken voor berekeningen:

// Join rotorsnelheid en torque om vermogen te berekenen
joined = join(
  tables: {rspeed: rspeed, rtorque: rtorque},
  on: ["_time"]
)
  |> map(fn: (r) => ({
      _time: r._time,
      _field: "Power",
      _value: r._value_rtorque * (r._value_rspeed * 2 * 3.14159 / 60)  // Power = τ × ω
    }))
  |> yield(name: "calculated_power")

Deze methode voert de berekeningen uit in Flux in plaats van Grafana, wat soms voordelen kan hebben voor prestaties of herbruikbaarheid.