Challenge

Project 2

Project 2

Initialization Script

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

Driver

Controller

State Logic

Engine Control Unit

Transmission Control Unit

Shift Logic

PowerTrain

Engine

Post Processing Script

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Skill-Lync -> Hybrid Drives Development

% Project 1 - Hybrid Electric 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

 

clc;

close all;

 

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.Data(:,1);                     % Engine brake torque [Nm]

Eng_Fuel_Consump = out.totalfuel.Data(:,1);         % Engine fuel consumption [g]

Veh_Dist = out.VehDist.Data(:,1)/1000;              % Distance traveled by vehicle [km]

Veh_Spd = out.VehSpd.Data(:,1)*(18/5);              % Vehicle speed [kmph]

Eng_Fuel_rate = out.fuelflowrate.Data(:,1);         % Engine Fuel Rate %

Wheel_Spd = out.WheelSpd.Data(:,1)*30/pi;           % Wheel Speed

EM_Pwr = out.EM_Pwr.Data(:,1);                      % Electric motor power 

EM_Trq = out.EM_Trq.Data(:,1);                      % Electric motor torque

EM_Spd = (18/5)*out.EM_Spd.Data(:,1);               % Electric motor speed [kmph]

Term_volt = out.term_volt.Data(:,1);                % Terminal voltage

SOC = out.SOC.Data(:,1);                            % state of charge

Pack_Current = out.Pack_Current.Data(:,1);          % Pack Current

Eng_Spd = out.EngSpd.Data(:,1)*(30/pi);             % Engine Speed RPM

 

 

 

 

%% Data Analysis

 

Eng_Pwr = Eng_Spd.*Eng_Trq.*((pi/30)/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]

fprintf('fuel comsumption [Kmpl] = %f',kmpl);

 

 

%% Plotting vehicle characteristics time trace

 

figure('Name','transmission IN/OUT speed')

hold on

plot(Time, Trans_In_Spd, 'linewidth', 1, 'Color', 'black');

plot(Time, Trans_Out_Spd, 'linewidth', 1, 'Color', 'red');

plot(Time, Wheel_Spd, 'linewidth', 1, 'Color', 'green');

plot(Time, Eng_Spd, 'linewidth', 1, 'Color', 'blue');

ylabel('Speed [rpm]')

xlim([0, Time(end)]);

ylim([0, 6000]);

legend('Trans Input','Trans Output','Wheel Speed','Engine Speed');

 

 

 

%% Plotting Engine charactesticks

figure('Name','Engine charactesticks');

subplot(2,2,1);

plot(Time, Eng_Trq, 'linewidth', 1, 'Color', 'black');

xlabel('Time [s]');

ylabel('Engine Torque (Nm)');

legend('Engine Torque');

grid on;

 

subplot(2,2,2);

plot(Time, Eng_Pwr, 'linewidth', 1, 'Color', 'blue');

xlabel('Time [s]');

ylabel('Engine Power (kW)');

legend('Engine Power');

grid on;

 

subplot(2,2,3);

plot(Time, Eng_Fuel_rate, 'linewidth', 1, 'Color', 'red');

xlabel('Time [s]');

ylabel('Engine Fuel Rate (%)');

legend('Engine Fuel Rate');

 

subplot(2,2,4);

plot(Time, Eng_Fuel_Consump, 'linewidth', 1, 'Color', 'green');

xlabel('Time [s]');

ylabel('Engine Fuel Consumption');

legend('Engine Fuel Consumption');

 

 

%% Plotting Fuel Economy

figure('Name','Fuel Economy ');

plot(Time, Eng_Fuel_Consump, 'linewidth', 1, 'Color', 'r');

xlabel('Time [s]');

ylabel('Engine Fuel Consumption [kmpl]');

grid on;

 

 

%% Plotting Accelerator brake pedals and gear CMD

 

figure('Name','Accelerator,brake,gear');

subplot(2,1,1);

hold on;

plot(Time, Acc_Pdl, 'linewidth', 1, 'Color', 'black');

plot(Time, Brk_Pdl, 'linewidth', 1, 'Color', 'blue');

xlabel('Time [s]');

ylabel('Pedal(%)');

legend('Accelearator vs Brake pedal');

grid on;

 

subplot(2,1,2);

plot(Time(1:height(Gear_Cmd)),Gear_Cmd, 'linewidth', 1, 'Color', 'blue');

xlabel('Time [s]');

ylabel('Gear CMD');

legend('Gear CMD');

grid on;

 

 

 

%% Plotting Gear CMD wrt speed and distance

 

figure('Name','Gear command wrt Vehicle speed and distance');

 

subplot(2,1,1);

plot(Veh_Spd(1:height(Gear_Cmd)), Gear_Cmd, 'linewidth', 1, 'Color', 'blue');

xlabel('vehicle speed (kmph)');

ylabel('Gear CMD');

title('Vehicle Speed vs gear CMD');

grid on;

 

subplot(2,1,2);

plot(Veh_Dist(1:height(Gear_Cmd)), Gear_Cmd, 'linewidth', 1, 'Color', 'green');

xlabel('Vehicle Distance');

ylabel('Gear CMD');

title('Vehicle Distance vs gear CMD');

grid on;

 

 

 

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

 

 

%% Plotting SOC, pack Current and terminal voltage

 

 

figure('Name','SOC, Pack Current and Terminal Voltage');

 

subplot(3,1,1);

plot(Time, Pack_Current, 'linewidth', 1, 'Color', 'blue');

xlabel('Time[s]');

ylabel('Pack Current [A]');

title('Pack Current');

grid on;

 

subplot(3,1,2);

plot(Time, SOC, 'linewidth', 1, 'Color', 'red');

xlabel('Time[s]');

ylabel('State of Charge [%]');

title('State of Charge');

grid on;

 

subplot(3,1,3);

plot(Time, Term_volt, 'linewidth', 1, 'Color', 'm');

xlabel('Time[s]');

ylabel('Terminal Voltage [V]');

title('Terminal Voltage');

grid on;

 

 

 

%% Plotting Motor speed, motor torque , motor input power

 

 

figure('Name','Motor speed, motor torque , motor input power');

 

subplot(3,1,1);

plot(Time, EM_Pwr, 'linewidth', 1, 'Color', 'blue');

xlabel('Time [s]');

ylabel('Electric Motor Power [W]');

title('Electric Motor Power');

grid on;

 

subplot(3,1,2);

plot(Time, EM_Trq, 'linewidth', 1, 'Color', 'red');

xlabel('Time [s]');

ylabel('Electric Motor Torque [Nm]');

title('Electric Motor Torque');

grid on;

 

subplot(3,1,3);

plot(Time, EM_Spd, 'linewidth', 1, 'Color', 'm');

xlabel('Time [s]');

ylabel('Electric Motor Speed [RPM]');

title('Electric Motor Speed');

grid on;

 

 

%% Plotting engine 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],[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('Engine Speed [rpm]');

ylabel('Engine Torque [Nm]');

title('Electric Motor Input Power Map');

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)]);
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.