MGR - motorgenerator rear axle

Seit einiger Zeit speichert der Hybrid Assistant auch die Drehzahl und das Drehmoment des dritten Motorgenerators (MGR) in der e4x4 Version des RAV4h.

Für mich war es spannend herauszufinden, wann dieser zusätzliche Motorgenerator genutzt wird. Da man seine Aktivität nicht wirklich bemerkt, kommt man schnell zu dem Eindruck, er wäre überflüssig. Dem ist aber nicht so, wie ich im nachfolgenden kurz erläutern möchte.

Alle hier verwendeten Daten beziehen sich auf Aufzeichnungen mit dem Hybrid Assistant und spiegeln mein persönliches Fahrprofil und Fahrweise wieder. Sie sind sicherlich nicht allgemeingültig, können aber als Näherungswerte für andere Fahrzeuge (RAV4h) herangezogen werden.

Dieses Dokument basiert auf einem Jupyter Notebook und enthält sowohl Beschreibungen, Berechnungen und Grafikdefinitionen. Um es ein wenig Übersichtlicher zu halten, habe ich einiges hiervon in eine Hilfsdatei (helper.py) ausgelagert.

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

# Notwendige Funktionen aus helper.py importieren
from helper import add_geschwindigkeitsaenderung
from helper import ermittel_werte_bei_positiven_drehmoment
from helper import ermittel_werte_bei_negativen_drehmoment
from helper import kreisdiagramm_positives_drehmoment
from helper import kreisdiagramm_negatives_drehmoment
from helper import scatterdiagramm

# Inlinegrafik zulassen
%matplotlib inline

# Verbindung zu Hybrid Assistant Datenbank herstellen
db = sqlite3.connect("hybridassistant.db")
In [2]:
# Notwendige Felder aus der Datenbank einlesen
dfo = pd.read_sql_query("SELECT SPEED_OBD, MGR_TORQUE, MG2_TORQUE FROM FASTLOG", db)

Da die von mir verwendetet Datenbank auch noch ältere Einträge ohne die MGR-Felder enthält, möchte ich diese für die nachfolgende Betrachtung ausblenden.

In [3]:
dfo = dfo[dfo.MGR_TORQUE.notnull()]
dfo = dfo.reset_index(drop=True)

Als nächstes prüfe ich die Anzahl der Messpunkte die für die weitere Auswertung zur Verfügung stehen:

In [4]:
len(dfo)
Out[4]:
74087

Es folgt eine kurzer Auszug aus der eingelesenen Datenbank:

In [5]:
dfo[21:24]
Out[5]:
SPEED_OBD MGR_TORQUE MG2_TORQUE
21 10.0 0.0 3.0
22 9.0 0.0 13.0
23 9.0 0.0 13.0

Um festzustellen wie sich die Geschwindigkeit pro Eintrag in der Datenbank verhält, füge ich eine zusätzliche Spalte GESCHW ein und fülle diese mit den Werten "steigt", gleich", "fällt".

In [6]:
add_geschwindigkeitsaenderung(dfo)

Nach dieser Erweiterung gibt es ein zusätzliches Feld:

In [7]:
dfo[21:24]
Out[7]:
SPEED_OBD MGR_TORQUE MG2_TORQUE GESCHW
21 10.0 0.0 3.0 steigt
22 9.0 0.0 13.0 fällt
23 9.0 0.0 13.0 gleich

Beschleunigungen mit MGR

Nun beginne ich mit der Auswertung der positiven Drehmomente am MGR:

In [8]:
filter = dfo.MGR_TORQUE > 0

Verteilung von Geschwindigkeit und Drehmoment am MGR:

In [9]:
scatterdiagramm(dfo[filter].MGR_TORQUE, dfo[filter].SPEED_OBD, 'Nm', 'km/h')
In [10]:
ermittel_werte_bei_positiven_drehmoment(dfo, filter)
Folgende Werte wurden bei positiven Drehmoment am MGR ermittelt:
   - maximale Geschwindigkeit: 33.0 km/h
   - maximales Drehmoment MGR: 82.0 Nm
   - maximales Drehmoment MG2: 172.0 Nm

Verhältnis zwischen MG2 und MGR bei Beschleunigungen bis zu 33km/h:

In [11]:
filter = (dfo.GESCHW == 'steigt') & (dfo.SPEED_OBD > 0) & (dfo.SPEED_OBD <= 33)
kreisdiagramm_positives_drehmoment(dfo, filter)

Bremsen/Rekuperieren mit MGR

Es folgt die Auswertung der negativen Drehmomente am MGR:

In [12]:
filter = dfo.MGR_TORQUE < 0

Verteilung von Geschwindigkeit und negativen Drehmoment am MGR:

In [13]:
scatterdiagramm(dfo[filter].MGR_TORQUE, dfo[filter].SPEED_OBD, 'Nm', 'km/h')
In [14]:
ermittel_werte_bei_negativen_drehmoment(dfo, filter)
Folgende Werte wurden bei negativen Drehmoment am MGR ermittelt:
   - maximale Geschwindigkeit: 95.0 km/h
   - minimales Drehmoment MGR: -45.0 Nm
   - minimales Drehmoment MG2: -111.0 Nm

Verhältnis zwischen MG2 und MGR beim Bremsen/Rekuperieren:

In [15]:
filter = (dfo.GESCHW == 'fällt')
kreisdiagramm_negatives_drehmoment(dfo, filter)

Schlussfolgerung

Wenn man davon ausgeht, dass MGR bei etwa einem Vierten der Beschleunigungen aus dem Stand und Bremsungen/Rekuperation beteiligt ist, arbeitet er wesentlich häufiger als ich zunächst vermutet hatte. Da er für eine bessere Traktion und somit Sicherheit sorgt, halte ich ihn durchaus für sinnvoll.