Project 1
MATLAB PROGRAM
1) PROJECT FILE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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 coefficient
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);
2)PROJECT FILE POST PROCESSING
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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]
Veh_Dist = out.Veh_Dist/1000; % Distance traveled by vehicle [km]
Veh_Spd = out.Veh_Spd*18/5; % Vehicle speed [kmph]
%% 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(1)
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(2);
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]');
p4 = plot(Eng_Spd,Eng_Trq,'.','color','k');
legend([p1 p4],{'Max Curve','Operating Points'});
axis([Eng_map_spd(1)*30/pi Eng_map_spd(end)*30/pi 0 Eng_map_trq(end)]);
In matlab codes the missing codes and plots were added
VEHICLE DYNAMICS
Blocks used
1) Constant: used to input constant values.
2) Gain: used to multiply the values by a factor
3) Add: used to add up blocks
3) Go To & From: used to output a data from an input
4) To workspace: to transfer the data from simulink model to matlab workspace
5) Integrator: to integrate the values
6) Scope: Used to display result
SIMULINK MODEL

EQUATIONS USED
As we know the tractive force is the sum of acceleration force, rolling resistance force, aerodynamic drag force and gradient force. ie Ftr=Fa+Fr+Fd+Fg
m*a= Ftr-(Fr+Fd+Fg) --------(1)
1)FORCE DUE TO ACCELERATION
Fa=m*a where m is mass and a acceleration force
2)ROLLING RESISTANCE FORCE
Fr=cr*m*g*cos(theta) where cr is rolling resistance coefficent, theta is the inclination with ground & g gravitational constant
3) AERODYNAMIC FORCE
Fd=0.5*rho*Af*cd*v^2 where rho is density of air , af frontal area, cd coefficent of drag
4) GRADING FORCE
Fg=m*g*sin(theta)
Using equation (1) we create our simulink model
ENGINE
BLOCKS USED
1) Lookup table: Used for N dimensional interpolation
2) Saturation: Limit input signal to the upper and lower saturation values.
3) From: used to input data from other source
4) To workspace: to transfer the data from simulink model to matlab workspace
5) Integrator: to integrate the values
6) Scope: Used to display result
SIMULINK MODEL

Based on the torque requirement from the controller we check if the torque is between the maximum and minimum values and we saturate the torque and output the torque.
The torque and speed is used to compute the fuel consumption (FLOW RATE) using a lookup table. This is again integrated to obtain engine fuel consumption
Block parameters for Max and Min torque

Block parameter for fuel consumption

A) UDDS CYCLE
PLOT FOR
- time trace for engine, Acceleration and braking (subplot-1)
- time trace for engine, transmission input, transmission output and wheel speed (subplot-2)
- Time VS gear command (subplot-3)

here we can see the acceleration and braking happening, transmission input and output speed and also the gear change during this duration FOR UDDS Cycle
- Desired VS Actual speed

we can see we are tracing the desired speed inputted by the driver
- Fuel consumption and Fuel flow rate

Fuel flow rate shows the amound of fuel flowing each second and integrating the flow rate gives fuel consumption
- Fuel consumption map (with engine torque, speed, fuel rate and consumption)

here we can see the engine speed and torque at different operating points and the max curve region
fuel economy numbers (kmpl) for UDDS
17.69kmpl
B) HWFET CYCLE
PLOT FOR
- time trace for engine, Acceleration and braking (subplot-1)
- time trace for engine, transmission input, transmission output and wheel speed (subplot-2)
- Time VS gear command (subplot-3)

here we can see the acceleration and braking happening, transmission input and output speed and also the gear change during this duration for HWFET CYCLE
- Desired VS Actual speed

we can see we are tracing the desired speed inputted by the driver
- Fuel consumption and Fuel flow rate

Fuel flow rate shows the amound of fuel flowing each second and integrating the flow rate gives fuel consumption
- Fuel consumption map (with engine torque, speed, fuel rate and consumption)

here we can see the engine speed and torque at different operating points and the max curve region
fuel economy numbers (kmpl) for HWFET
33.26kmpl