Project 1
AIM: Deals with the development of a forward energy-based fuel consumption model of a conventional vehicle.To get familiar with the modeling process, writing scripts in Matlab, modeling in Simulink, analyzing data and generating plots.
Objective: The task of this project is to compute the fuel economy numbers for the given vehicle (kmpl) on the urban cycle (UDDS) and highway cycle (HWFET). Also, to analyze and understand the vehicle operating
points in terms of engine speed, torque, transmission speeds, pedal positions, gear, distance traveled, etc.
Write a project report that contains the following:
a. Tabulate the fuel economy numbers (kmpl) for UDDS and HWFET cycle. This forms the baseline numbers for comparing with the future hybrid version.
b. Plot the time trace for engine, transmission input, transmission output and wheel speed on one plot.
c. Plot engine torque, engine power, fuel rate and fuel consumption using subplots.
d. Plot accelerator and brake pedal, gear command, vehicle desired and actual speed, vehicle distance using subplots.
e. Plot the engine operating points on the engine fuel map.
f. Write down appropriate brief comments on each of these plots, describing the vehicle behavior throughout the drive cycle.
g. Generate the plots for both drive cycles
ANSWER:
Theory: forward model of a conventional vehicle.
the forward simulation, the model determines the energy demand in the process of the driving cycle, to transmit the energy demand to the vehicle controller. This controller receives the signal and considers the current state of the vehicle components to optimize and determine power allocation, together with the output of each
power source. The movement flow is transferred from the driving system, passing through the transmission to the tire module. Then, by means of equations that model the driving module, the real speed that is transmitted to the driver is calculated to form a closed cycle.Figure 1 represents a simple scheme of the simulation process by the “forward” method.The driving cycle provides the speed to pass through the driver model, which controls the longitudinal interfaces of the vehicle (accelerator and brake pedal), based on the difference between the object and the vehicle speed. The battery supplies the motor with energy and the motor provides a torque that, through the kinematic chain, transfers the movement to the wheels, where the traction maintains the propulsion force. The position returns to the driving cycle to find a target speed, closing the calculation loop.
fig.(1)
Pre processing codes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Skill-Lync -> Hybrid Drives Development
% Project 1 - Conventional Vehicle Model
% By - Ullekh Gambhira
% Description:
%% Initialization File
% Initialization file for loading the variables for the Conventional vehicle simulation model
%% Vehicle Parameters
M = 1500; % Vehicle weight [kg]
Cr = 0.015; % Rolling resistance coefficient
Rw = 0.35; % Rolling radius [m]
Cd = 0.33; % Drag coefficientcl
Af = 2; % Frontal area [m2]
rhoa = 1.225; % Air density [kg/m3]
Vwind = 0; % Wind velocity [kmph]
g = 9.81; % Gravitational acceleration [m/s2]
theta = 0; % Slope [deg]
myu_road_tire = 1; % Coefficient of friction between tire - road interface
%% Powertrain Parameters
FDR = 3.73; % Final Drive Ratio / Diff Ratio
DiffEff = 0.99; % Differential efficiency (assumed independent of operating conditions)
NumGear = 4; % Number of gears in transmission
TransGear = [1:NumGear]; % Transmission Gears
TransRatio = [3.06, 1.62, 1, 0.7]; % Corresponding Transmission ratios
TransEff = 0.90; % Transmission efficiency (assumed independent of operating conditions)
TC_SR = [0, .5, .6, .7, .8, .87, .92, .94, .96, .97, 1]; % Torque Converter Speed Ratio (Matlab default) -> TurbSpd/PumpSpd
TC_TR = [2.232, 1.5462, 1.4058, 1.2746, 1.1528, 1.0732, 1.0192, 1, 1, 1, 1]; % Torque Converter Torque Ratio (Matlab default) -> TurbTrq/PumpTrq
TC_Cf = 1e-4 * [.72558, .66322, .63463, .59042, .51331, .4144, .29287, .22444, .12186, .04386, 0]; % Torque Converter Capacity Factor (Matlab default) -> PumpTrq/PumpSpd^2 [Nm/rpm^2]
load Vehicle_Data/Engine_data_1_9L_Saturn_95kW
load Vehicle_Data/Trans_Shift_map
%% Driver Parameters
Kp = 10; % P gain for driver PI model
Ki = 1; % I gain for driver PI model
Drive_Cycle_Select = 1; % Drive cycle selection
% Drive cycle values in m/s
if Drive_Cycle_Select == 1
load DriveCycles/UDDS;
elseif Drive_Cycle_Select == 2
load DriveCycles/HWFET;
elseif Drive_Cycle_Select == 3
load DriveCycles/FTP;
elseif Drive_Cycle_Select == 4
load DriveCycles/US06;
elseif Drive_Cycle_Select == 5
load DriveCycles/NEDC;
elseif Drive_Cycle_Select == 6
load DriveCycles/WLTP;
end
time_end = cyc_time(end);
vel_end = cyc_vel(end);
- Drive Cycles can be selecting by Drive_Cycle_Select number.
- UDDS
- HWFET
- FTP
- US06
- NEDC
- WLTP
Simulink Model: 
- The simulink model conssists of 3 blocks that contain Driver,Controller,Powertrain.
- The actual vehicle speed is the feedback of the driver block and the driver block gives the command to the controller as per the command input to the controller gives the signal to the power train and and the actual vehicle speed is maintaind or acceleration brake torque is generated.
Driver Model:

- Driver model is a basic pi controller which generates the accelerator,brake to make the actual and desired speed of the vehicle.
- The pi controller controlls the error between the required drive cycle and the actual vehicle speed by providing the accelerator and brake pedal output to the controller.
Controller model:

- Controller model is the brain of the vehicle, here the acceleration and brake is the input of the controller and it controlls the signal from the driver and gives engine torque,gear command and brake torque required.
- controller model consist of three block engine control unit,transmission control unit,brake control unit.
- All the signals are scoped .
Engine control unit:

Idle Speed Controller:

- Engine control unit compares the engine speed and maximum torque curve of the lookup table andgives the required torque command to the engine block.The throttle input is combined with the idle speed controller and gained with the torque output from the lookup table for the required engine torque output.
Transmission control unit:

- Transmission control unit consist of gear shifting which takes the input as vehicle speed and throttle and gives output as gear shifting.
Brake Control Unit:

- Brake controller unit passes the brake torque given to the wheel block in the tansmission model and input is brake pedal.
Transmission Model/Powertrain:

- This includes engine,transmission,differential,wheeland vehicle dynamics.
Engine Block:

- Engine block takes the engine torque required as input and it compare the maximum torque curve limit to the saturation block and vomrs with a engine torque as output.
- one look table block is used to estimate the engine fuel rate by saturating the output of the lookup table and after integrating that we get fuel consumption
- here we use 3 to workspace block to store the result to the matlab workspace.
Transmission block:

Torque converter:

- The engine block is conected to the automatic transmission block via torque converter.Emgine toque is the input of transmission unit.
- The output is connected to the differential
- The gear selection from the transmission control block is multiplied by the engine torque and efficiency and engine dynamics of the torque converter are applied in this block.
Differential block:

- The transmission output torque is multiplied by the differencial ratio and gives the axle torque to the wheel as output.
Wheel block:

- The brake torque from the control unit is subtracted to the axle torque and rolling radius is dived from the axle torque to give the output as tractive force, and also the wheel speed.
Vehicle Dynamics block:

- Tractive force and road load are used to calculate the vehicle velocity.
- Variables are loaded on the workspace by using MATLAB script.
- To workspace blocks are used to store acceleration,velocity,distance in the workspace.
Tractive Force=[M*(d*Vv/d*t)]+[1/2*rhoa*Af*Cd*(Vv+Vw)^2]+[Cr*M*g*cos(theta)]+[M*g*sin(theta)]
Road load= 1/2*rhoa*Af*Cd*(Vv+Vw)^2+Cr*M*g*cos(theta)+M*g*sin(theta)
Where,M=mass
Vv=vehicle velocity
Vw=headwind
t= time
rhoa=density of air
Af=frontal area
Cd=drag coefficient
Cr=rolling coefficient
g=gravitational acceleration=9.81m/s^2
theta=angle of grade
Simulation Results:
FOR UDDS:
Actual velocityvs drive cycle

Control signal(Engine torque,gear transmission,Brake Torque)

Engine Fuel Rate and Fuel Consumption:

Engine Torque:

Gear ratio,transmission input and output speed:

Different road loads:

Tractive force,road load,acceleration:

FOR HWFET:
Actual velocityvs drive cycle

Control signal(Engine torque,gear transmission,Brake Torque)

Engine Fuel Rate and Fuel Consumption:

Engine Torque:

Gear ratio,transmission input and output speed:

Different road loads:

Tractive force,road load,acceleration:

post processing Codes For drive cycle:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Skill-Lync -> Hybrid Drives Development
% Project 1 - Conventional Vehicle Model
% By - Ullekh Gambhira
% Description:
% The following file is to used with the Initialization file and Simulink
% results for post-processing of the data.
% The file is incomplete, has some examples of how the data is imported
% into a readable format, data analysis and plotting examples.
% Based on the project task, use commands in a similar format as given
% below, to analyse the data and generate required plots.
% You can change variable names if desired
%% Post-Processing File
% File for post-processing the Conventional vehicle simulation model data
%% Renaming variables
Time = out.tout;
Acc_Pdl = out.Acc_Pdl; % Accelerator pedal [%]
Brk_Pdl = out.Brk_Pdl; % Brake pedal [%]
Gear_Cmd = out.Gear_Cmd; % Transmission gear
Trans_In_Spd = out.Trans_In_Spd*30/pi; % Transmission input speed [rpm]
Trans_Out_Spd = out.Trans_Out_Spd*30/pi;% Transmission output speed [rpm]
Eng_Trq = out.Eng_Trq; % Engine brake torque [Nm]
Eng_Spd = out.Eng_Spd*30/pi; % Engine speed [rpm]
Eng_Fuel_Consump = out.Eng_Fuel_Consumption; % Engine fuel consumption [g]
Eng_Fuel_Rate = out.Eng_Fuel_Rate; % Engine fuel rate [gKW]
Veh_Dist = out.Veh_Dist/1000; % Distance traveled by vehicle [km]
Veh_Spd = out.Veh_Spd*18/5; % Vehicle speed [kmph]
Whl_Spd=out.Whl_Spd*30/pi; % Wheel Speed [rpm]
%% Data Analysis
Eng_Pwr = Eng_Spd*pi/30*Eng_Trq/1000; % Engine brake power [kW]
rho_petrol = 0.7197; % Density of petrol [kg/L]
kmpl = Veh_Dist(end)/(Eng_Fuel_Consump(end)/1000/rho_petrol); % Fuel economy [kmpl]
%% Plotting vehicle characteristics time trace
figure()
subplot(3,1,1)
hold on
grid on
plot(Time, Acc_Pdl, 'linewidth', 1, 'Color', 'black');
plot(Time, Brk_Pdl, 'linewidth', 1, 'Color', 'red');
ylabel('Pedal [%]')
xlim([0, Time(end)]);
legend('Accel','Brake');
subplot(3,1,2)
hold on
grid on
plot(Time, Trans_In_Spd, 'linewidth', 1, 'Color', 'black');
plot(Time, Trans_Out_Spd, 'linewidth', 1, 'Color', 'red');
ylabel('Speed [rpm]')
xlim([0, Time(end)]);
ylim([0, 6000]);
legend('Trans Input','Trans Output');
subplot(3,1,3)
hold on
grid on
plot(Time, Gear_Cmd, 'linewidth', 1, 'Color', 'black');
xlim([0, Time(end)]);
xlabel('Time [s]');
ylabel('Gear');
%% Plotting engine operating points on engine fuel map
figure('Name','Engine Operating Points');
hold on
grid on
title('Engine Operating Points','fontsize',12);
p1=plot(Eng_map_spd*30/pi,Eng_max_trq,'linewidth',2,'color','r');
p2=line([Eng_map_spd(end)*30/pi Eng_map_spd(end)*30/pi],[0 Eng_max_trq(end)]);
set(p2,'linewidth',1,'linestyle','--','color','k');
p3=line([Eng_map_spd(1)*30/pi Eng_map_spd(1)*30/pi],[0 Eng_max_trq(1)]);
set(p3,'linewidth',1,'linestyle','--','color','k');
[c,h] = contour(Eng_map_spd'*30/pi,Eng_map_trq,Eng_fuel_map');
clabel(c,h);
xlabel('Engine Speed [rpm]');
ylabel('Engine Torque [Nm]');
title('Engine Fuel Consumption Map [g/s]');
% Plot the time trace for engine, transmission input, transmission output and wheel speed on one plot.
figure(3)
hold on
grid on
plot(Time,Trans_In_Spd,'linewidth',1,'Color','r')
plot(Time,Trans_Out_Spd,'linewidth',1,'Color','g')
plot(Whl_Spd,'linewidth',1,'Color','b')
xlabel('Time [s]')
ylabel('speed [rpm]')
xlim([0,Time(end)])
legend('Trans input','Trans output','Wheel speed')
% Plot engine torque, engine power, fuel rate and fuel consumption using subplots
figure(4)
subplot(4,1,1)
hold on
grid on
plot(Eng_Trq,'linewidth',1,'color','r')
xlabel('Time[s]')
ylabel('Engine torque [Nm]')
subplot(4,1,2)
hold on
grid on
plot(Eng_Pwr,'linewidth',1,'color','g')
xlabel('Time[s]')
ylabel('Engine Power [kw]')
subplot(4,1,3)
hold on
grid on
plot(Eng_Fuel_Rate,'linewidth',1,'color','blue')
xlabel('Time[s]')
ylabel('Engine fuel rate')
subplot(4,1,4)
hold on
grid on
plot(Eng_Fuel_Consump,'linewidth',1,'color','black')
xlabel('Time[s]')
ylabel('Engine fuel consumption [g]')
% Plot accelerator and brake pedal, gear command, vehicle desired and actual speed, vehicle distance using subplots
figure(5)
subplot(4,1,1)
hold on
grid on
plot(Time,Acc_Pdl,'color','r','linewidth',1)
plot(Time,Brk_Pdl,'color','g','linewidth',1)
xlabel('Time[s]')
ylabel('pedal [%]')
legend('acceleration','brake')
subplot(4,1,2)
hold on
grid on
plot(Time,Gear_Cmd,'color','black','linewidth',1)
xlabel('Time[s]')
ylabel('Gear')
subplot(4,1,3)
hold on
grid on
plot(Veh_Spd,'color','blue','linewidth',1)
xlabel('Time[s]')
ylabel('Vehicle speed [kmph]')
subplot(4,1,4)
hold on
grid on
plot(Veh_Dist,'color','blue','linewidth',1)
xlabel('Time[s]')
ylabel('Vehicle Dist [km]')
% Generate the plots for UDDS and HWFET drive cycles
figure(6)
hold on
grid on
plot(cyc_time,cyc_vel,'linewidth',1,'color','black')
xlabel('Time[s]')
ylabel('Velocity[mph]')
title('Drive cycle')
Results Of UDDS Drive Cycle:
1.Plot the time trace for engine, transmission input, transmission output and wheel speed on one plot.

- in this graph the transmission input and output and wheel speed all are fluctuating by increasing the speed and time.
2. Plot engine torque, engine power, fuel rate and fuel consumption using subplots.

- In this plot we have 4 sub plotsEngine torque,Engine power and Engine fuel rate all are fluctuating with respect to time and also goes to negative.
- But the engine fuel consumption is increasing with respect to time.
3.Plot accelerator and brake pedal, gear command, vehicle desired and actual speed, vehicle distance using subplots.

- in this graph we have 4 subplot,first is for acceleration and brake which shows that as per the condition it fluctuate as increaging the time.
- gear shifting is in 2nd most of the time but also varying whith respect to time.
- Vehicle speed is also vairying with respect to time
- And vehicle distance is increasing continously with respect to time but not linearly.
4. Plot the engine operating points on the engine fuel map.

- Here the engine operating conditon is shown in max torque curve
- the torque range is variying between 110 to 170 aproxx.
5.plots for UDDS drive cycles

- Here the drive cycle is shown with actual data.
- It is varying with increasing the time.
Results Of HWFET Drive Cycle:
1.Plot the time trace for engine, transmission input, transmission output and wheel speed on one plot.

- in this graph the transmission input and output and wheel speed all are fluctuating by increasing the speed and time.
2. Plot engine torque, engine power, fuel rate and fuel consumption using subplots.

- In this plot we have 4 sub plotsEngine torque,Engine power and Engine fuel rate all are fluctuating with respect to time and also goes to negative.
- But the engine fuel consumption is increasing with respect to time.
3.Plot accelerator and brake pedal, gear command, vehicle desired and actual speed, vehicle distance using subplots.

- in this graph we have 4 subplot,first is for acceleration and brake which shows that as per the condition it fluctuate as increaging the time.
- gear shifting is in 2,3,4 most of the time but also varying whith respect to time.
- Vehicle speed is also vairying with respect to time,and is between 50 to 100 kmph most of the time.
- And vehicle distance is increasing continously with respect to time but not linearly.
4. Plot the engine operating points on the engine fuel map.

- Here the engine operating conditon is shown in max torque curve
- the torque range is variying between 110 to 170 aproxx.
5.plots for HWFET drive cycles

- Here the drive cycle is shown with actual data.
- It is varying with increasing the time,but it not going in between , most of the time it is between 12 to 26mph.