The high voltage battery of an electric vehicle (EV) is one of the most important components since it dictates the dynamic performance, range and charging time of the vehicle. In order to calculate the size of the battery we need two main inputs: the average energy consumption and the range of the vehicle.

This article is explaining how to calculate the energy consumption of a vehicle and it’s part of a **EV design** series:

- EV design – introduction
- EV design – energy consumption
- EV design – battery
- EV design – electric motors
- EV design – mode management
- EV design – vehicle systems and components
- EV design – simulation model
- EV design – simulation results and evaluation

### WLTC drive cycle

The average energy consumption of the vehicle E_{avg} [Wh/km] will be calculated on a homologation cycle. For our example we are going to use the WLTC drive cycle. The test procedure WLTP (Worldwide harmonized Light vehicles Test Procedure) contains several driving cycles:

- Class 1 – low power vehicles with PW
_{r}<= 22 - Class 2 – vehicles with 22 < PW
_{r}<= 34 - Class 3 – high-power vehicles with PW
_{r}> 34

Where PW_{r} [kW/Tonne] is the **power-to-weight ratio**, defined as the ratio between the rated engine power and kerb weight.

Our target is to convert the 16MY Jaguar F-type vehicle into a battery electric vehicle (BEV). Therefore we need to understand what is the current energy consumption of the vehicle. From the article EV design – introduction we can extract the maximum power and kerb weight and calculate the power-to-weight ratio:

\[PW_{r} = \frac{253.538}{1.741} =145.6278 \]Since the vehicle’s PW_{r} is bigger than 34, we are going to use the **WLTC Class 3** driving cycle to calculate the energy consumption.

The parameters of the WLTC Class 3 cycle are summarised in the table below:

Low | Medium | High | Extra High | Total | |
---|---|---|---|---|---|

Duration, s | 589 | 433 | 455 | 323 | 1800 |

Stop duration, s | 150 | 49 | 31 | 8 | 235 |

Distance, m | 3095 | 4756 | 7162 | 8254 | 23266 |

% of stops | 26.5% | 11.1% | 6.8% | 2.2% | 13.4% |

Maximum speed, km/h | 56.5 | 76.6 | 97.4 | 131.3 | |

Average speed without stops, km/h | 25.3 | 44.5 | 60.7 | 94.0 | 53.5 |

Average speed with stops, km/h | 18.9 | 39.4 | 56.5 | 91.7 | 46.5 |

Minimum acceleration, m/s^{2} | -1.5 | -1.5 | -1.5 | -1.44 | |

Maximum acceleration, m/s^{2} | 1.611 | 1.611 | 1.666 | 1.055 |

The method to calculate the energy consumption is straight forward and it makes use of the Scilab/Xcos simulation environment. The steps are as follows:

- Determine the mathematical expression of the energy consumption
- Create a Scilab script file (
`*.sce`

) for the vehicle parameters (input data) - Create the Xcos block diagram (
`*.zcos`

) - Run the simulation on the WLTC driving cycle
- Create a post-processing script (
`*.sce`

) and analyse the result

### Mathematical expression of the energy consumption

The energy consumption is calculated based on the road loads. The **total road load** F_{tot} [N] is the sum of the inertial force, road slope force, road load (friction) force and aerodynamic drag force.

where:

F_{i} [N] – inertial force

F_{s} [N] – road slope force

F_{r} [N] – road load force

F_{a} [N] – aerodynamic drag force

The **inertial force** is given by the equation:

where:

m_{v} [kg] – total vehicle mass

a_{v} [m/s^{2}] – vehicle acceleration

The vehicle acceleration can be calculated as:

\[a_{v} = \frac{\Delta v}{\Delta t} \tag{4}\]where:

Δv [m/s] – speed difference

Δt [s] – time difference

The **road slope** force is given by the equation:

where:

g [m/s^{2}] – gravitational acceleration

α_{s} [rad] – road slope angle

The **road load (friction)** force is given by the equation:

where:

c_{rr} [-] – road rolling resistance coefficient

The **aerodynamic drag force** is given by the equation:

where:

ρ [kg/m^{3}] – air density at 20 °C

c_{d} [-] – air drag coefficient

A [m^{2}] – vehicle frontal area

v_{v} [m/s] – vehicle speed

The **total power** P_{tot} [W] is calculated as the product between the total road forces and the vehicle speed:

By integrating the total power over time (for the whole duration of the cycle), we get the **total energy** consumption E_{tot} [J]:

All the equations above will be used in the Xcos block diagram in order to calculate the energy consumption of the vehicle over the drive cycle.

### Vehicle parameters (input data)

The main vehicle parameters used for the WLTC drive cycle are explained in the article EV design – introduction defined in a Scilab script (`*.sce`

).

vehMassKerb = 1741; // [kg] vehMassDriver = 80; // [kg] vehMassfm = 1.05; // [-] vehMass = vehMassKerb * vehMassfm + vehMassDriver; // [kg] vehg = 9.81; // [m/s^2] vehcd = 0.36; // [-] vehfa = 2.42; // [m^2] vehro = 1.202; // [kg/m^3] roadSlope = 0; // [rad] roadCrr = 0.011; // [-]

### Xcos block diagram (vehicle simulation over WLTC)

The Xcos block diagram model is run for `1800 s`

, which is to total duration of the WLTC drive cycle. A `Clock`

block is used to generate a time step of `1 s`

. This time step is set because the input data (WLTC speed profile) is sampled at 1 s. The speed profile is read with a `From workspace`

block. Before running the simulation we need to load the speed profile as a variable of type structure, containing the speed values and time (e.g. `WLTC.time`

and `WLTC.values`

).

Since the sample time is `1 s`

, which means Δt = 1, the vehicle acceleration will be calculated as the difference between the current speed value and the previous speed value. In the WLTC driving cycle, the road slope is considered `0 rad`

, therefore will not have any influence on the energy consumption.

Depending on the sign of the total power, we can distinguish between the acceleration and braking (deceleration) phases of the vehicle. The integration of the power, for a Δt = 1, gives the energy. The acceleration and braking energies are calculated separately and then summed up to give the total energy.

By dividing the last calculated value of the total energy (`3205.39 Wh`

) to the total length of the WLTC drive cycle (`23.266 km`

), we get the **average energy consumption** of the vehicle, `137.8 Wh/km`

.

The WLTC speed profile, total road load forces, total power, acceleration energy, brake energy and total energy are saved in the Scilab workspace for further visualisation and analysis.

### Data post-processing

Using a Scilab script we can plot the drive cycle simulation result. In this particular case we are going to plot only the acceleration, braking and total energy.

plot(WLTC_vehTotEgy_kWh.time, WLTC_vehTotEgy_kWh.values,'k') plot(WLTC_vehAccEgy_kWh.time, WLTC_vehAccEgy_kWh.values,'r') plot(WLTC_vehBrkEgy_kWh.time, WLTC_vehBrkEgy_kWh.values,'b') xgrid() xlabel('Time [s]','FontSize',2) ylabel('Energy [kJ]','FontSize',2) title('x-engineer.org','FontSize',2) legend('Total','Acceleration','Braking',2)

Running the script will generate the following plot.

The same model can be used for any other vehicle, the only change needed being the input parameters update. Also, the simulation can be run for different drive cycles, like FTP or NEDC or for custom cycles which can include also a road gradient.

The average energy consumption over WLTC drive cycle is **137.8 Wh/km**. This value will be used to calculate the total energy required for the high voltage battery.

## Samir darji

Thank you so much for your article, it is very useful for my study. But I need help to make Xcos block. In XCos block, I am confused in expression block. What is “ul^2”?

Please help as soon as possible

## Anthony Stark

Hi,

That is not “ul” but “u1” and is the input of block (vehicle speed).

## Georg

Hi!

Just tried to rebuild your work but I have to admit that I´m struggeling to load the WLTC data into a “variable” and then use it within the XCOS module.

Please could you help me out and explain how you load the cycle data into scilab?

Many thanks in advance!

@Ernesto: The WLTC data can be found here:

http://www.unece.org/fileadmin/DAM/trans/doc/2012/wp29grpe/WLTP-DHC-12-07e.xls

## Anthony Stark

Hi Georg,

I’ve wrote a new article explaining how to import the data from the *.xls file:

https://x-engineer.org/graduate-engineering/programming-languages/scilab/how-to-import-xls-data-into-scilab-and-xcos/

Enjoy!

## Georg Heym

Hi Anthony,

thanks for the additional info!

With your method everything works just fine.

Meanwhile I used:

M = csvRead(‘Doc1.csv’)

V.time=(1:1801)’;

V.values=(M);

B = csvRead(‘Doc2.csv’)

D.time=(1:1801)’;

D.values=(B);

whre M is the speed and B the accelartion.

## Shane Smith

Is it possible to get the SciLab files for research purposes ? (MPhil. Applied Physics)

## Shrikant

What is procedure to calculate energy consumption for low power vehicles PWr<22?

## Ernesto Tur

Dear

Great job you’ve published, I am a student of Mechanical Engineering in Argentina.

Would you be so kind as to give me the speed-time value of the WLTP, which you typed as WLTP.time WLTP.value ?

I have spent time looking for the information, but if you can provide it to me, it would help me a lot.

Kind regards

Erensto

## MM

hello,

this is really great & extensive article.

Is it possible to download the Xcos files?. Being a bigginer in X cos, i find it very difficult to do it quickly.