Conventional vehicle Development
UDDS data-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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
Simulink model-

There are three subsystems In this model. First one is driver subsystem, Second one is controller subsystems and last one is powertrain subsystems.
Driver subsystem-

Output-

Controller subsystem-

Plot-

Powertrain subsystem-

There are five subsystems in this powertrain subsystem. First one is Engine subsystem, second one is Transmission subsystem, Third one is Differential subsystem, Fourth one is Wheel subsystem and the last one is vehicle dynamics subsystems.
Engine subsystem-

Plot-


Transmission subsystem-

Plot-

Differential subsystem-

Wheel subsystem-

Vehicle Dynamics subsystem-

Plot-


After the simulation we have some output data in matlab workspace.

Then after we will plot the data through the given processing file code.
Matlab code-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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.FuelConsumption; % Engine fuel consumption [g]
Veh_Dist = out.Vech_Dist/1000; % Distance traveled by vehicle [km]
Veh_Spd = out.Vech_Spd*18/5; % Vehicle speed [kmph]
wheel_speed=out.wheel_speed;
%% 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('Name','Engine Operating Points');
hold 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)]);
%% PLotting Fuel Consumption vs Fuel Rate
figure(3)
hold on
grid on
plot(Time,out.FuelConsumption, 'linewidth', 1, 'Color', 'black');
plot(Time,out.Eng_Fuel_Rate, 'linewidth', 1, 'Color', 'red');
xlabel('Fuel Consumption')
ylabel('Fuel Rate')
xlim([0, Time(end)]);
legend('Fuel Consumption', 'Fuel Rate');
%% Plotting vehicle characteristics time trace engine torque, engine power, fuel rate and fuel consumption
figure(4)
subplot(2,2,1)
plot(Time, Eng_Trq, 'LineWidth',1,'Color','g')
xlabel('Time [s]')
ylabel('Torque [Nm]')
legend ('Torque')
subplot(2,2,2)
plot(Time, Eng_Pwr, 'LineWidth',1,'Color', 'black')
xlabel('Time [s]')
ylabel('Power [kW]')
legend('Engine Power')
subplot(2,2,3)
plot(Time, out.Eng_Fuel_Rate, 'LineWidth',1,'Color', 'red')
xlabel('Time [s]')
ylabel('Fuel Rate [%]')
legend('Fuel Rate')
subplot(2,2,4)
plot(Time, Eng_Fuel_Consump, 'LineWidth',1,'Color','blue')
xlabel('Time [s]')
ylabel('Fuel Consumption [kmpl]')
legend('Fuel Consumption')
%% Plotting vehicle characteristics time trace Engine, Transmission Input, Transmission Output and Wheel
figure(5)
subplot(2,2,1)
plot(Time, Eng_Spd, 'LineWidth',1, 'Color','g');
xlabel('Time')
ylabel('Engine speed')
grid on
legend('Engine speed')
subplot(2,2,2)
plot(Time, Trans_In_Spd, 'LineWidth',1,'Color','black');
xlabel('Time')
ylabel('Trans in speed')
grid on
legend('Trans in speed')
subplot(2,2,3)
plot (Time, Trans_Out_Spd, 'LineWidth', 1, 'Color', 'red');
xlabel('Time')
ylabel('Trans out speed')
grid on
legend('Trans out speed')
subplot(2,2,4)
plot(Time, wheel_speed, 'LineWidth',1,'Color','blue');
xlabel('Time [s]')
ylabel(' Wheel Speed [rpm]')
grid on
legend('Wheel speed')
%% plotting for drive cycle
figure(6)
plot(cyc_time, cyc_vel*(18/5), 'linewidth', 1, 'Color', 'green')
hold on
plot(Veh_Spd, 'linewidth', 1, 'Color', 'red')
xlabel('Time [s]')
ylabel('Vehicle Velocity (Km/h)')
legend('Vehicle Desired Velocity', 'Vehicle Actual Speed')
Plots-






HWFET Data-
Matlab code-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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 = 2; % 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);
Simulink plot scope of HWFET data-
Driver subsystem plot-

Controller subsystem plot-

Powertrain subsystem- In this powertrain subsystem there are five subsystems which is given below and also their plot.
Engine subsystem scope-


Transmission subsystem scope-

Vehicle dynamics subsystem scope-


Output data from simulation in matlab workspace.

Now plotting the data after getting output data from simulation.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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.FuelConsumption; % Engine fuel consumption [g]
Veh_Dist = out.Vech_Dist/1000; % Distance traveled by vehicle [km]
Veh_Spd = out.Vech_Spd*18/5; % Vehicle speed [kmph]
wheel_speed=out.wheel_speed;
%% 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('Name','Engine Operating Points');
hold 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)]);
%% PLotting Fuel Consumption vs Fuel Rate
figure(3)
hold on
grid on
plot(Time,out.FuelConsumption, 'linewidth', 1, 'Color', 'black');
plot(Time,out.Eng_Fuel_Rate, 'linewidth', 1, 'Color', 'red');
xlabel('Fuel Consumption')
ylabel('Fuel Rate')
xlim([0, Time(end)]);
legend('Fuel Consumption', 'Fuel Rate');
%% Plotting vehicle characteristics time trace engine torque, engine power, fuel rate and fuel consumption
figure(4)
subplot(2,2,1)
plot(Time, Eng_Trq, 'LineWidth',1,'Color','g')
xlabel('Time [s]')
ylabel('Torque [Nm]')
legend ('Torque')
subplot(2,2,2)
plot(Time, Eng_Pwr, 'LineWidth',1,'Color', 'black')
xlabel('Time [s]')
ylabel('Power [kW]')
legend('Engine Power')
subplot(2,2,3)
plot(Time, out.Eng_Fuel_Rate, 'LineWidth',1,'Color', 'red')
xlabel('Time [s]')
ylabel('Fuel Rate [%]')
legend('Fuel Rate')
subplot(2,2,4)
plot(Time, Eng_Fuel_Consump, 'LineWidth',1,'Color','blue')
xlabel('Time [s]')
ylabel('Fuel Consumption [kmpl]')
legend('Fuel Consumption')
%% Plotting vehicle characteristics time trace Engine, Transmission Input, Transmission Output and Wheel
figure(5)
subplot(2,2,1)
plot(Time, Eng_Spd, 'LineWidth',1, 'Color','g')
xlabel('Time')
ylabel('Engine speed')
grid on
legend('Engine speed')
subplot(2,2,2)
plot(Time, Trans_In_Spd, 'LineWidth',1,'Color','black')
xlabel('Time')
Plots-





