Challenge

Project 2

AIM:- The aim of the project is to simulate the P1 hybrid vehicle and to plot for UDDS cycle & HWFET cycle

Procedure:- In oder to simulate the P1 hybrid vehicle we will modify the simulink model used in project 1  and attach the nessesary models to it and then we run the provided matlab file & then run the simulink file & then we load the output of simulink model to our work space & then run the post simulation file & obtain the desired results.

The steps to the above procedure are as follows:-

PART 1

INITAILIZATION FILE

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Skill-Lync -> Hybrid Drives Development
% Project 2 - P1 Hybrid Electric Vehicle Model
% By - Prajwal Kushwaha 

% 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
load Vehicle_Data/EM_Honda_Insight_10kW
load Vehicle_Data/ESS_NiMH6


ESS_init_soc = 0.8;
ESS_soc_max = 0.9;
ESS_soc_min = 0.6;


%% 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 MODEL

VEHICLE MODEL

DRIVER MODEL

CONTROLLER MODEL 

SUPERVISORY CONTROLLER MODEL

ENGINE CONTROL UNIT MODEL

IDLE SPEED CONTROLLER MODEL

TRANSMISSION CONTROL UNIT MODEL

SHIFT LOGIC MODEL

EM CONTROL UNIT MODEL

BRAKE CONTROL UNIT MODEL

POWER TRAIN MODEL

ENGINE MODEL

ELECTRIC MACHINE MODEL

CRANK HUB MODEL

TRANMISSION MODEL

TORQUE CONVERTER MODEL

DIFFERNTIAL MODEL

WHEEL MODEL

VEHICLE DYMANICS MODEL

BATTERY MODEL

SOC ESTIMATION MODEL

TERMINAL VOLTAGE ESTIMATION MODEL

PART 2

PROCESSING FILE

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Skill-Lync -> Hybrid Drives Development
% Project 2 - P1 Hybrid Electric Vehicle Model
% By - Prajwal Kushwaha 

% 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.EngTrq;                       % Engine brake torque [Nm]
Eng_Spd = out.EngSpd*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
Veh_Dist = out.Veh_Dist/1000;               % Distance traveled by vehicle [km]
Veh_Spd = out.Veh_Spd*18/5;                 % Vehicle speed [kmph]
Wheel_spd = out.Wheelspd*30/pi;             % Wheel Speed[rpm]
Desired_Vel = out.Desired_Vel;
EM_Spd = out.EM_Spd*30/pi;                  % E Motor Speed[rpm]
EM_Trq = out.EM_Trq;                        % E Motor Torque[Nm]
EM_Pwr = out.EM_Pwr;                        % E Motor Power[W]
V_batt = out.V_batt;                        % Battery Pack Voltage [V]
I_batt = out.I_batt;                        % Battery Pack Current [A]
SOC = out.SOC;                              % SOC[%]


%% 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] 


%% Fuel Economy 
fprintf('fuel_Economy = %f',kmpl);

%% Plotting vehicle characteristics time trace
figure(2)

hold on
grid on
plot(Time, Trans_In_Spd, 'linewidth', 1, 'Color', 'black');
plot(Time, Trans_Out_Spd, 'linewidth', 1, 'Color', 'red');
plot(Time, Eng_Spd,'linewidth', 1, 'Color', 'magenta');
plot(Time, Wheel_spd,'linewidth', 1, 'Color', 'green');
xlabel('Time[sec]')
ylabel('Speed [rpm]')
xlim([0, Time(end)]);
ylim([0, 6000]);
legend('Trans Input','Trans Output','Engine Speed','Wheel Speed');
title('Vehicle Characterstics(trasmission input, output & Vehicle speed)');


figure(3)

subplot(4,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');
title('Accelaration & Brake Padel Inputs');

subplot(4,1,2)
hold on
grid on
plot(Time, Gear_Cmd, 'linewidth', 1, 'Color', 'black');
xlim([0, Time(end)]);
xlabel('Time [s]');
ylabel('Gear');
title('Gear Cmd');

subplot(4,1,3)
plot(Time, Veh_Dist, 'linewidth', 1, 'color','red');
xlabel('Time [s]');
ylabel('Vehicle Distance');
title('Vehicle Distance');

subplot(4,1,4)
plot(Time, Veh_Spd,'linewidth', 1, 'color','b');
plot(Time, Desired_Vel,'linewidth', 1, 'color','b');
xlabel('Time [s]');
ylabel('Speed');
title('Vehicle Actual Speed vs Desired Speed');


%% Plot Engine Torque, Engine Power, Fuel Rate & Fuel Consumption
figure(4)
subplot(4,1,1)
hold on
grid on
plot(Time, Eng_Pwr, 'linewidth', 1, 'Color', 'red');
xlabel('Time [s]');
ylabel('Eng_Pwr');
title('Engine Power');

subplot(4,1,2)
hold on
grid on
plot(Time, Eng_Trq, 'linewidth', 1, 'Color', 'black');
xlabel('Time [s]');
ylabel('Eng_Trq');
title('Engine Torque');

subplot(4,1,3)
hold on
grid on
plot(Time, Eng_Fuel_Rate, 'linewidth', 1, 'Color', 'm');
xlabel('Time [s]');
ylabel('Eng_Fuel_Rate');
title('Engine Fuel Rate');

subplot(4,1,4)
plot(Time, Eng_Fuel_Consump, 'linewidth', 1, 'color','g');
xlabel('Time [s]');
ylabel('Eng_Fuel_Consump');
title('Engine Fuel Consumption');

%% 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]');
p4 = plot(Eng_Trq,'.','color','k');
p5 = plot(Eng_Spd,'.','color','m');
legend([p1 p4 p5],{'Max Curve','Operating Points','Operating Points'});
axis([Eng_map_spd(1)*30/pi Eng_map_spd(end)*30/pi 0 Eng_map_trq(end)]);


%% Plotting Motor Speed, Motor Torque, Motor Input Power
figure(5)

subplot(3,1,1)
hold on
grid on
plot(Time, EM_Spd, 'linewidth',1, 'color','black');
xlim([0,Time(end)])
xlabel('time[sec]')
ylabel('Speed[rpm]')
title('Motor Speed')

subplot(3,1,2)
hold on
grid on
plot(Time, EM_Trq, 'linewidth',1, 'color','black');
xlim([0,Time(end)])
xlabel('time[sec]')
ylabel('Torque[Nm]')
title('Motor Torque')

subplot(3,1,3)
hold on
grid on
plot(Time, EM_Pwr, 'linewidth',1, 'color','black');
xlim([0,Time(end)])
xlabel('time[sec]')
ylabel('Power[W]')
title('Motor Input Power')

%%Plotting Battery Pack Current, Voltage, SOC
figure(6)

subplot(3,1,1)
hold on
grid on
plot(Time, V_batt, 'linewidth',1, 'color','blue');
xlim([0,Time(end)])
xlabel('time[sec]')
ylabel('Voltage[V]')
title('Pack Voltage')

subplot(3,1,2)
hold on
grid on
plot(Time, I_batt, 'linewidth',1, 'color','blue');
xlim([0,Time(end)])
xlabel('time[sec]')
ylabel('Current[A]')
title('Battery Current')

subplot(3,1,3)
hold on
grid on
plot(Time, SOC, 'linewidth',1, 'color','blue');
xlim([0,Time(end)])
xlabel('time[sec]')
ylabel('SOC')
title('State of Charge(SOC)')

%% Plotting Electric Motor operating points on engine fuel map
figure('Name','Electric Motor Operating Points');
hold on
grid on
title('Electric Motor Operating Points','fontsize',12);
p1=plot(EM_map_spd*30/pi,EM_max_trq,'linewidth',2,'color','r');
p2=line([EM_map_spd(end)*30/pi EM_map_spd(end)*30/pi],[EM_max_gen_trq(end) EM_max_trq(end)]);
set(p2,'linewidth',1,'linestyle','--','color','k');
p3=line([EM_map_spd(1)*30/pi EM_map_spd(1)*30/pi],[EM_max_gen_trq(1) EM_max_trq(1)]);
set(p3,'linewidth',1,'linestyle','--','color','k');
p4=plot(EM_map_spd*30/pi,EM_max_gen_trq,'linewidth',2,'color','b');
[c,h] = contour(EM_map_spd'*30/pi,EM_map_trq,EM_inpwr_map');
clabel(c,h);
xlabel('Motor Speed [rpm]');
ylabel('Motor Torque [Nm]');
title('Motor in Power Map [W]');
legend([p1 p4 p3],{'Max Curve','Regen Curve','Operating Points'});
axis([EM_map_spd(1)*30/pi EM_map_spd(end)*30/pi EM_max_gen_trq(1) EM_max_trq(1)]);

RESULTS 

DRIVE CYCLE (1) URBAN CYCLE (UDDS)

FUEL ECONOMY NUMBER

Time trace for engine, transmission input, transmission output and wheel speed


Engine torque, engine power, fuel rate and fuel consumption 


Accelerator and brake pedal, gear command, vehicle desired and actual speed, vehicle distance.


The engine operating points on the engine fuel map.


Motor speed, torque, motor input power.


Pack voltage, current and SoC.


The motor operating points on the motor input power map, with the motor max motoring and generating torque curves.

DRIVE CYCLE (2) HIGHWAY CYCLE (HWFET)

FUEL ECONOMY NUMBER

Time trace for engine, transmission input, transmission output and wheel speed.


Engine torque, engine power, fuel rate and fuel consumption.


Accelerator and brake pedal, gear command, vehicle desired and actual speed, vehicle distance.


The engine operating points on the engine fuel map.


Motor speed, torque, motor input power.


Pack voltage, current and SoC.


The motor operating points on the motor input power map, with the motor max motoring and generating torque curves.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.