Bewertungsmethoden: Basis & Kriterien

In dieser Blogreihe werde ich zu ergründen versuchen, was "gute" e-PKWs genau ausmacht und welche Methoden es ermöglichen diese Fahrzeuge in der stetig steigenden Anzahl an Modellen zu finden.

In diesem Blogeintrag wird es darum gehen, die Basisparameter für die weitere Bewertung zu klären und erste Analysen durchzuführen.

Grundsätzlich gehen als grundlegende Daten neben Marke, Modell und Variante die folgenden ein:

"Kbrutto" #Brutto-Kapazität des Akkus in kWh

"Knetto" #Netto-Kapazität des Akkus in kWh

"LadeleistungDC" #Gleichstromladeleistung des Fahrzeugs in kW

"MaxLeergewicht" #Maximales Leergewicht des Fahrzeugs in kg

"WLTP" #Normreichweite des Fahrzeugs laut WLTP-Prüfung

"EPA" #Normreichweite des Fahrzeugs laut EPA-Prüfung

"LPbrutto" #Österreichsicher Listenpreis inkl. MwSt.

Für das weitere Vorgehen ist die Berechnung einiger essentieller Kennzahlen (Key Performance Indicators) notwendig:

"RealeReichweite" #Berechnung der realistischen Reichweite in km

"AkkuPuffer" #Unterschied von Brutto- zu Netto-Akkukapazität in %

"EffizienzBrutto" #Verbrauch (also realistische Reichweite) bezogen auf die Brutto-Akkukapazität in kWh/100km

"EffizienzNetto" #Verbrauch (also realistische Reichweite) bezogen auf die Netto-Akkukapazität in kWh/100km

"Weightefficiency" #Maximales Leergewicht bezogen auf die realistische Reichweite (mal 10) in kg/km

"Reichweitenkosten" #Listenpreis durch realistische Reichweite in €/km

"Spitzenladeleistung" #Brutto-Effizienz bezogen auf die DC-Ladeleistung in km/h

"CRate" #DC-Ladeleistung bezogen auf die Brutto-Akkukapazität 1/h (Wikipedia 2021)

Diese Berechnung wird mittels folgendem R-Code durchgeführt:

#Setup & Import #################################################################

data <- read.csv2("data-in-PKW.csv")
#data <- data[, -1]

#Renaming and Tidying Up #################################################################

#Naming first column "Marke"

names(data)[1] <- "Marke"

#Merging Modell and Variante columns

data[2] <- paste(data$Modell, data$Variante)
#data <- data[-c(3,7,8)]

#Deleting "Variante" column
data <- data[-3]

#Converting EPA miles into EPA km and formatting as integer

data$EPA <- round(data$EPA * 1.61, digits = 0)
data$LPbrutto <- as.integer(data$LPbrutto) #needed?

#Starting########################################################

#Defining real range function

realrange <- function(wltp,epa) {
  
  if (is.na(epa) == TRUE) {
    
    wltp * 0.85
    
  } else if (is.na(wltp) == TRUE) {
    
    epa * 0.95
    
  } else {
    
    (wltp * 0.85 + epa * 0.95) / 2 
  }
}

data$RealeReichweite <- round(mapply(realrange, data$WLTP, data$EPA), digits = 0)

#Defining batt buffer function

battbuffer <- function(kbrutto,knetto) {
  
  if (is.na(knetto) == TRUE) {
    
    NA
    
  } else {
    
    ((kbrutto / knetto) - 1) * 100
     
  }
}

data$AkkuPuffer <- round(mapply(battbuffer, data$Kbrutto, data$Knetto), digits = 0)

#Defining gross efficiency function

grossefficiency <- function(kbrutto, realrange) {
  
  if (is.na(kbrutto) == TRUE) {
    
    NA
    
  } else {
    
    kbrutto / (realrange / 100)
    
  }
  
}

data$EffizienzBrutto <- round(mapply(grossefficiency, data$Kbrutto, data$RealeReichweite), digits = 0)

#Defining net efficiency function

netefficiency <- function(knetto, realrange) {
  
  if (is.na(knetto) == TRUE) {
    
    NA
    
  } else {
    
    knetto / (realrange / 100)
    
  }
  
}

data$EffizienzNetto <- round(mapply(netefficiency, data$Knetto, data$RealeReichweite), digits = 0)

#Defining weight efficiency function

weightefficiency <- function(baseweight, realrange) {
  
  if (is.na(baseweight) == TRUE) {
    
    NA
    
  } else {
    
    (baseweight / realrange) * 10
    
  } 
  
}

data$Weightefficiency <- round(mapply(weightefficiency, data$MaxLeergewicht, data$RealeReichweite), digits = 0)

#Defining range cost function

rangecost <- function(cost, realrange) {
  
  cost / realrange
  
}

data$Reichweitenkosten <- round(mapply(rangecost, data$LPbrutto, data$RealeReichweite), digits = 0)

#Defining peak charge rate function

peakcharge <- function(grossefficiency, chargepower) {
  
  ((grossefficiency / 100) / chargepower) ^ (-1)

}

data$Spitzenladeleistung <- round(mapply(peakcharge, data$EffizienzBrutto, data$LadeleistungDC), digits = 0)

#Defining c-rate function

crate <- function(chargepower, kbrutto) {
  
  chargepower / kbrutto
  
}

data$CRate <- round(mapply(crate, data$LadeleistungDC, data$Kbrutto), digits = 1)


#Exporting data #################################################################

library(xlsx)
write.xlsx(data, "data-out-PKW.xlsx", row.names = FALSE, showNA = FALSE)

###End of File###

Als Ergebnis der ersten Basisanalyse ergibt sich also eine Tabelle in welcher die einzelnen Fahrzeuge hinsichtlicher folgender Merkmale aufgelistet sind:

 [1] "Marke"               "Modell"              "Kbrutto"            
 [4] "Knetto"              "LadeleistungDC"      "MaxLeergewicht"     
 [7] "WLTP"                "EPA"                 "LPbrutto"           
[10] "RealeReichweite"     "AkkuPuffer"          "EffizienzBrutto"    
[13] "EffizienzNetto"      "Weightefficiency"    "Reichweitenkosten"  
[16] "Spitzenladeleistung" "CRate" 

Nachdem diese Arbeit nun getan ist, kann endlich die Bewertung der einzelnen Fahrzeuge beginnen!