Challenge

Project 2

SIMULINK FILE :

Driver:

Controller:

Mode Selection:

Engine Control Unit:

Idle Speed Controller:

Transmission Control Unit :

Shift Logic:

Brake Control Unit:

EM Control Unit :

Powertrain:

Engine:

Electric Machine:

Crank hub:

Transmission:

Transmission Torque Convertor:

Differntial:

Wheels:

Vehicle Dynamics:

This block consists of the longitudinal dynamics of the vehicle which consists of Aerodynamics force, Rolling Resistance Force, Grade Force, etc..,

Formulas used:

           

where

ρ>ρa - Air Density

Af - Frontal Area

Cd-Drag Coefficient

M - Mass of a vehicle

g - Acceleration due to gravitational force

θ>θ - Slope angle

These variables have already been preloaded to the workspace using a MATLAB script

Battery System:

SOC Estimation:

Battery Voltage Estimation:

For UDDS:

Initial file fo UDDS:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Skill-Lync -> Hybrid Drives Development
% Project 1 - Conventional Vehicle Model
% By -Pranay Padamwar
�scription:

%% 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 Engine_data_1_9L_Saturn_95kW
load Trans_Shift_map
load EM_Honda_Insight_10kW
load 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 = 1;     % Drive cycle selection

% Drive cycle values in m/s

if Drive_Cycle_Select == 1
    load UDDS;
    
elseif Drive_Cycle_Select == 2
    load HWFET;
    
elseif Drive_Cycle_Select == 3
    load FTP;
    
elseif Drive_Cycle_Select == 4
    load US06;
    
elseif Drive_Cycle_Select == 5
    load NEDC;
    
elseif Drive_Cycle_Select == 6
    load WLTP;
 
end

time_end = cyc_time(end);
vel_end = cyc_vel(end);

DRIVER:

For HWFET:

Initial file for HWFET:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Skill-Lync -> Hybrid Drives Development
% Project 1 - Conventional Vehicle Model
% By -Pranay Padamwar
�scription:

%% 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 Engine_data_1_9L_Saturn_95kW
load Trans_Shift_map
load EM_Honda_Insight_10kW
load 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 UDDS;
    
elseif Drive_Cycle_Select == 2
    load HWFET;
    
elseif Drive_Cycle_Select == 3
    load FTP;
    
elseif Drive_Cycle_Select == 4
    load US06;
    
elseif Drive_Cycle_Select == 5
    load NEDC;
    
elseif Drive_Cycle_Select == 6
    load WLTP;
 
end

time_end = cyc_time(end);
vel_end = cyc_vel(end);

DRIVER

%% Skill-Lync -> Hybrid Drives Development
% Project 1 - Conventional Vehicle Model
% By - Pranay Padamwar

�scription:
% 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.
�sed on the project task, use commands in a similar format as given
�low, 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
%% Post-Processing File
%  File for post-processing the Conventional vehicle with P1 Hybrid simulation model data

%% Renaming variables
Time = out.tout;
Acc_Pdl = out.Acc_Pdl;          �celerator 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]
Wheel_Speed = out.Whl_Spd;     % Wheel speed [kmph]
Eng_Fuel_Rate = out.Eng_Fuel_Rate; % Engine fuel rate [%]
EM_Speed = out.EM_Spd*18/5;        % Electric Motor Speed
EM_Power = out.ElecPwr;            % Electric Motor Power
EM_Torque = out.EM_Trq;           % Electric Motor Torque
Ter_Volt = out.term_volt;        % Terminal Voltage of battery
Soc = out.soc;                    % State Of Charge
Pack_Current = out.pack_Current;   %Pack current of battery

%�ta Analysis
Eng_Pwr = Eng_Spd.*pi./30.*Eng_Trq./1000;   % Engine brake power [kW]
rho_petrol = 0.7197;                    �nsity of petrol [kg/L]
kmpl = Veh_Dist(end)/(Eng_Fuel_Consump(end)/1000/rho_petrol);    % Fuel economy [kmpl]


%% Plotting vehicle characteristics time trace transmission IN/OUT and Wheel Speed
figure(1)
hold on
grid on
plot(Time, Trans_In_Spd, 'linewidth', 1, 'Color', 'black');
plot(Time, Trans_Out_Spd, 'linewidth', 1, 'Color', 'red');
plot(Time, Wheel_Speed, 'linewidth',1, 'color', 'blue')
ylabel('Speed [rpm]')
xlabel('Timem [s]')
xlim([0, Time(end)]);
ylim([0, 6000]);
legend('Trans Input','Trans Output','Wheel Speed');

%% Plotting Engine speed, Engine Torque, Engine Power,Engine fuel rate,Engine fuel consumption wrt Time 
figure(2)
subplot(4,1,1)
plot(Time,Eng_Trq,'linewidth',1,'color','black')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Torque [Nm]')
legend('Engine Torque')
grid on

subplot(4,1,2)
plot(Time,Eng_Pwr,'linewidth',1,'color','blue')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Power [KW]')
legend('Engine Power')
grid on

subplot(4,1,3)
plot(Time,Eng_Fuel_Rate,'linewidth',1,'color','red')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Fuel Rate [%]')
legend('Engine Fuel Rate')
grid on

subplot(4,1,4)
plot(Time,Eng_Fuel_Consump,'linewidth',1,'color','green')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Fuel Consumption')
legend('Engine Fuel Consumption')
grid on

% Plotting fuel economy Vs Engine Fuel consumption 
figure(3)
plot(Eng_Fuel_Consump,Eng_Fuel_Rate,'color','r')
xlabel('Fuel consumption')
ylabel('Fuel Rate [%]')
title('Fuel economy Vs Fuel Consumption')
grid on

%% Potting Accelerator pedal, Brake pedal and gear command with respect to time
figure(4)
subplot(2,1,1)
hold on
plot(Time, Acc_Pdl, 'linewidth', 1, 'Color', 'black');
plot(Time, Brk_Pdl, 'linewidth', 1, 'Color', 'red');
ylabel('Pedal [%]')
xlabel('Time [s]');
xlim([0, Time(end)]);
grid on
legend('Accel','Brake');
title('Acceleration & Brake Pedal wrt Time')

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

% Plotting gear command vehicle desired with actual speed
figure(5)
subplot(2,1,1)
plot(Veh_Spd, Gear_Cmd, 'linewidth', 1, 'Color', 'black');
xlabel('Speed [rpm]');
ylabel('Gear');
grid on
title('Gear command wrt vehicle speed')

subplot(2,1,2)
plot(Veh_Dist, Gear_Cmd, 'linewidth', 1, 'Color', 'red');
xlabel('Distance [kmpl]');
ylabel('Gear');
grid on
title('Gear command wrt Distance')

%% 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]');
legend([p1 p3],{'Max Curve','Operating Points'});
axis([Eng_map_spd(1)*30/pi Eng_map_spd(end)*30/pi 0 Eng_map_trq(end)]);

%% State of Charge, Pack Current, And Terminal Voltage with respect to Time
figure(6)
subplot(3,1,1)
plot(Time,Pack_Current,'linewidth',1,'color','black')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Current [W]')
legend('Pack Current')
grid on

subplot(3,1,2)
plot(Time,Soc,'linewidth',1,'color','blue')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Charging [%]')
legend('State Of Charge')
grid on

subplot(3,1,3)
plot(Time,Ter_Volt,'linewidth',1,'color','red')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Voltage [V]')
legend('Terminal Voltage')
grid on

%% Motor Speed, Torque, Motor input power with respect to Time
figure(7)
subplot(3,1,1)
plot(Time,EM_Power,'linewidth',1,'color','black')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Power [W]')
legend('Electric Motor Power ')
grid on

subplot(3,1,2)
plot(Time,EM_Torque,'linewidth',1,'color','blue')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel(' Torque [Nm]')
legend('Electric Motor Torque')
grid on

subplot(3,1,3)
plot(Time,EM_Speed,'linewidth',1,'color','red')
xlim([0, Time(end)]);
xlabel('Time [s]')
ylabel('Speed [Rpm]')
legend('Electrical Motor Speed')
grid on

%% Plotting EM Operating Points on motor input power 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],[0 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],[0 EM_max_trq(1)]);
set(p3,'linewidth',1,'linestyle','--','color','k');
[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 Input Power Map [g/s]');
legend([p1 p3],{'Max Curve','Operating Points'});
axis([EM_map_spd(1)*30/pi EM_map_spd(end)*30/pi 0 EM_map_trq(end)]);

Conclusion:

The system-level analysis were done for the given Honda Insight P1 Hybrid model vs Convectional Vehicle.

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.