Die Hybridsystem-Anzeige und der aktuelle Verbrauch

Im folgenden Dokument versuche ich eine Beziehung zwischen der Hybridsystem-Anzeige und dem aktuellen Kraftstoffverbrauch herzustellen. Alle hier verwendeten Daten entstammen meinen Aufzeichnungen mit dem Hybrid Assistant und sind abhängig vom Fahrprofil und der persönlichen Fahrweise. Dennoch ergeben sich einige interessante Aspekte, die sich sicherlich auch auf andere HSD Fahrzeuge (im Speziellen dem RAV4 Hybrid) übertragen lassen.

Zur Darstellung meiner Ergebnisse verwende ich ein Jupyter Notebook. Hierin vermischen sich Dokumentation, Berechnungen und grafische Darstellungen. Um dennoch eine gewisse Übersichtlichkeit zu behalten, sind komplexere Berechnungen und Grafikdefinitionen in eine Hilfsdatei (helper.py) ausgelagert.

In [1]:
# Notwendige Bibliotheken importieren
import sqlite3
import pandas as pd

# Objekte und Funktionen importieren
from helper import EcoTypVerteilung
from helper import berechne_mittelwert_und_reicher_daten_an
from helper import plot_fuelflowh_verteilung
from helper import plot_hsi_verteilung
from helper import plot_hsi_verbrauch

# Inlinegrafik in diesem Dokument erlauben
%matplotlib inline
In [2]:
# Verbindung zur Hybrid Assistant Datenbank herstellen
dbconnection = sqlite3.connect('hybridassistant.db')
In [3]:
# Notwendige Daten aus der Datenbank einlesen
dfo = pd.read_sql_query("SELECT HSI, FUELFLOWH FROM FASTLOG", dbconnection)

# Was verbirgt sich hinter den Datenfeldern?
#    - HSI        Hybrid System Indicator
#    - FUELFLOWH  Der aktuelle Verbrauch zum Zeitpunkt der Messung in l/100km
In [4]:
# Wie sehen die eingelesenen Daten aus (hier am Beispiel HSI 60)
dfo[dfo.HSI == 60].head(3)
Out[4]:
HSI FUELFLOWH
532 60 5.234413
533 60 5.492689
534 60 5.645866
In [5]:
# Wie viele Einträge (Messpunkte) liegen für die Auswertung vor?
len(dfo.HSI)
Out[5]:
522177
In [6]:
# In welchen Wertebereich liegt HSI und FUELFLOWH?
print("min HSI.......: {}".format(min(dfo.HSI)))
print("max HSI.......: {}".format(max(dfo.HSI)))
print("min FUELFLOWH.: {}".format(min(dfo.FUELFLOWH)))
print("max FUELFLOWH.: {}".format(max(dfo.FUELFLOWH)))
min HSI.......: -512
max HSI.......: 511
min FUELFLOWH.: 0.0
max FUELFLOWH.: 58.65249706666666

HSI Verteilung

Schauen wir uns zunächst einmal die HSI Verteilung im Einzelnen an:

In [7]:
plot_hsi_verteilung(dfo)

Hierbei fällt auf, dass sich an einigen Positionen Ausreißer nach oben befinden. Außerdem gibt es zwischen -5nn und -1nn keine Werte. Dies möchte ich nun ein wenig genauer wissen und zoome heran:

HSI Bereich von -120 bis -120

In [8]:
plot_hsi_verteilung(dfo, von=-120, bis=120)

Meine bevorzugte Fahrweise scheint um die 50 bis 70 HSI zu pendeln.

HSI Bereich von -520 bis -500

In [9]:
plot_hsi_verteilung(dfo, von=-520, bis=-500)

Bei -512 HSI gibt es eine Häufung von Messpunkten. Da der Wert im negativen Bereich liegt, wird es sich vermutlich um Bremsungen handeln. Reine Vollbremsungen können es aber nicht sein, denn dafür sind es zu viele Einträge. Meine Vermutung liegt hier eher an "Restbremsungen" bis zum Stillstand.

Nachdem ich mir diese Werte einmal direkt in der Datenbank angesehen habe, möchte ich meine Annahme revidieren und komme zum Schluss, dass es sich vermutlich um das Betätigen der Bremse im Stillstand handelt. Auffällig ist das ein HSI von -512 immer am Anfang und Ende einer Reise (TRIP_DIST) entsteht und sich die Distanz nicht ändert.

HSI Bereich von -120 bis -80

In [10]:
plot_hsi_verteilung(dfo, von=-120, bis=-80)

Ein HSI von -100 kennzeichnet vermutlich den Bereich wo die maximale Energie durch Rekuperation zurückgewonnen wird und zusätzlich die mechanischen Bremsen einsetzen.

HSI Bereich von -20 bis 20

In [11]:
plot_hsi_verteilung(dfo, von=-20, bis=20)

Den Nullpunkt würde ich mal als "Fuß vom Gas" bezeichnen. Der Wagen rollt aus und wird allmählich langsamer. Die Rekuperation dürfte hier nur gering sein.

HSI Bereich von 30 bis 70

In [12]:
plot_hsi_verteilung(dfo, von=30, bis=70)

Bei HSI 50/51 schaltet sich der Verbrenner hinzu und dürfte für die entsprechende Lücke verantwortlich sein.

HSI Bereich von 80 bis 120

In [13]:
plot_hsi_verteilung(dfo, von=80, bis=120)

Da die Anzahl der HSI Werte über 100 deutlich weniger werden und zudem wieder eine Häufung bei HSI 100 auftritt, vermute ich hier den Übergang von ECO zu PWR.

Von HSI zur Hybridsystem-Anzeige

Um die HSI Werte mit der Hybridsystem-Anzeige in Einklang zu bringen, lege ich mal folgende Einteilungen für mich zu Grunde:

HSI Bereich vermuteter Eco Bereich Meine Erklärung
-512 BREAK Bremse getreten, Wagen steht
-100 bis -50 CHG HIGH hohe Rekuperation
-49 bis -1 CHG MEDIUM mittlere Rekuperation
0 CHG LOW keine oder nur geringe Rekuperation
1 bis 25 ECO 25% reiner EV Betrieb möglich
26 bis 50 ECO 50% --"--
51 bis 75 ECO 75% Verbrenner läuft mit
76 bis 100 ECO 100% --"--
101 bis 200 PWR 25% Leistung und Kraftstoffverbrauch steigen
201 bis 300 PWR 50% --"--
301 bis 400 PWR 75% Verbrenner wird "lauter"
401 bis 512 PWR 100% Höchster Leistungsbereich

FUELFLOWH Verteilung

Schauen wir uns nun mal die Verbrauche zu den Messzeitpunkten an:

In [14]:
plot_fuelflowh_verteilung(dfo)

Abgesehen von der Zeit wo der Verbrenner nicht läuft, pendelt der Verbrauch zwischen 1 bis ca. 15 l/100km. Die meisten Einträge liegen um die 4,5 l/100km und entsprechen mein "gemütliches Rollenlassen" bei 70 bis 90 km/h. Beschleunigungen liegen bei mir meist zwischen 6 bis 10 l/100km. Diese Werte zeigt mir auch der Hybrid Assistant an.

HSI und der aktuelle Verbrauch

Kommen wir nun zum spannenden Teil und setzen HSI und FUELFLOWH in Beziehung:

In [15]:
plot_hsi_verbrauch(dfo)

Wie man auf den ersten Blick erkennen kann, gibt ein HSI Wert nicht automatisch einen eindeutigen Verbrauch an. Die Werte können stark schwanken und sollten daher erst einmal gemittelt werden. Bei dieser Gelegenheit ergänze ich die Daten auch noch um den ECOTYP, die Anzahl der in diesen Bereich fallenden Messpunkte und der Ausgabefarbe für die Grafiken.

In [16]:
dfm = berechne_mittelwert_und_reicher_daten_an(dfo)

# Wie sehen die Daten nun aus?
dfm.head(3)
Out[16]:
HSI FUELFLOWH ECOTYP COUNT COLOR
0 -512 0.566160 BREAK 10417 black
1 0 0.532039 CHG LOW 24402 palegreen
2 25 1.194579 ECO 50% 2558 cyan

Nun kommt Farbe ins Spiel und es werden nur noch die gemittelten Werte verwendet.

HSI Bereich von -512 bis 512

Beginnen wir mit einen Überblick über das gesamte Spektrum:

In [17]:
plot_hsi_verbrauch(dfm)

Und arbeiten uns wieder Stück für Stück vor...

HSI Bereich -150 bis +250

In diesem Bereich findet man die meisten Messpunkte. Da der Verbrenner auch noch im CHG Bereich laufen kann, gibt es durchschnittliche Verbrauche oberhalb von 0 l/100km.

Im PWR fangen die Werte an zu streuen. Dies liegt vermutlich daran, dass weniger Messdaten vorliegen und somit der Mittelwert ungenauer wird. Oberhalb von PWR 50% sind keine vernünftigen Aussagen mehr möglich.

In [18]:
plot_hsi_verbrauch(dfm, von=-150, bis=250)

HSI Bereich zwischen 0 und +60

Zwischen 0 und 60 HSI erkennt man aber eine recht gute Linie, die bei HSI 50 unterbrochen ist. Wie bereits oben schon angedeutet, schaltet sich hier der Verbrenner hinzu und der Durchschnittsverbrauch steigt sprunghaft an.

In [19]:
plot_hsi_verbrauch(dfm, von=0, bis=60)

HSI Bereich zwischen +60 bis +130

Im oberen ECO Bereich, also von 50 bis 100%, erkennt man ebenfalls einen sehr gleichmäßigen Anstieg. Da der PWR Bereich von mir gemieden wird, kommt es dort wieder zu Sprüngen. Anderenfalls würde ich auch dort einen gleichmäßigen Anstieg des Verbrauchs vermuten.

In [20]:
plot_hsi_verbrauch(dfm, von=60, bis=130)

Fahrprofil nach ECO Bereich

Es folgen einige Grafiken, die mein persönliches Fahrverhalten verdeutlichen:

Fahrprofil allgemein

In [21]:
verteilung = EcoTypVerteilung(dfm)
verteilung.plot_gesamt()

Ich fahre überwiegend im ECO und komme selten in den PWR Bereich.

Verhältnis zwischen CHG und BREAK

In [22]:
verteilung.plot_chg_vs_break()

Im CHG Bereich bin ich hauptsächlich am Rekuperieren.

Verhältnisse im Bereich CHG

In [23]:
verteilung.plot_chg()

Innerhalb von CHG bewege ich mich meistens im MEDIUM Bereich und sorge somit für ein gemäßigtes Aufladung des Akkus.

Verhältnisse im Bereich ECO

In [24]:
verteilung.plot_eco()

34.6% meiner Fahrten liegen in der unteren Hälfte des ECO Bereichs und könnten theoretisch auch elektrisch bewältigt werden. Da der Akku aber nicht genügend Energie speichern kann, läuft auch hier des öfteren der Verbrenner mit.

Verhältnisse im Bereich PWR

In [25]:
verteilung.plot_pwr()

In den PWR Bereich verirre ich mich selten und bin dann auch nur im ersten Viertel zu finden. Leistungsabforderungen bis zur Hälfte des PWR Bereichs kommen noch seltener vor und darüber liegen sie weit unter einen Prozent. Aber dies ist auch kein Wunder, denn dort wird der Verbrenner deutlich lauter und für mich ein eindeutiges Zeichen eines Fahrfehlers ;-)