Project 2
INITIAL CODE:
%% 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);
DRIVER:

CONTROLLER:

STATE FLOW:

ENGINE CONTROL:

TRANSMISSION CONTROL:

SHIFT LOGIC:

THRESHOLD VALUE:

ELECTRIC MOTOR:

BRAKE CONTROL:

POWERTRAIN:

CRANKHUB:

ENGINE:

ELECTRIC MOTOR:
TRANSMISSION:

DIFFERENTIAL:

WHEELS:

VEHICLE DYNAMICS:

FINAL CODE:
%% 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]
Wheel_speed = out.Wheel_speed; % Wheel speed [kmph]
Eng_Fuel_rate = out.Eng_Fuel_Rate; % Engine Fuel Rate [%]
Veh_Desired_Spd = out.Veh_desired_spd; % Desired Vehicle Speed
EM_sped = out.EMspeed;
EM_torq = out.EMtorque;
EM_PWR = out.EMinpwr;
Pack_current = out.packcurnt;
Pack_volt = out.packVoltg;
S_OC = out.S_O_C;
%% 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 Fuel Consumption vs Fuel Rate
figure(1)
hold on
grid on
plot(Time, Eng_Fuel_Consump, 'linewidth', 1, 'Color', 'k');
plot(Time, Eng_Fuel_rate, 'linewidth', 1, 'Color', 'r');
xlabel('fuel consumption')
ylabel('Fuel Rate')
xlim([0, Time(end)]);
legend('fuel consumption','Fuel Rate');
%% Plotting vehicle characteristics time trace Engine, Transmission Input, Transmission Output and Wheel Speed
figure(2)
hold on
grid on
plot(Time, Eng_Spd, 'linewidth',1, 'Color', 'g');
plot(Time, Trans_In_Spd, 'linewidth',1, 'Color', 'k');
plot(Time, Trans_Out_Spd, 'linewidth',1, 'Color', 'r');
plot(Time, Wheel_speed, 'linewidth',1, 'Color', 'b');
xlabel('Time [s]')
ylabel('Speed [rpm]')
xlim([0, Time(end)]);
ylim([0, 6000]);
legend('Transmission Input','Transmission Output','Wheel Speed','Engine Speed');
%% Plotting vehicle characteristics time trace accelerator
figure(3)
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', 'k');
xlabel('Time [s]')
ylabel('Power [KW]')
legend('Engine Power');
subplot(2,2,3)
plot(Time, Eng_Fuel_rate, 'linewidth', 1, 'Color', 'r');
xlabel('Time [s]')
ylabel('Fuel Rate [%]')
legend('Fuel Rate')
subplot(2,2,4)
plot(Time, Eng_Fuel_Consump, 'linewidth', 1, 'Color', 'b');
xlabel('Time [s]')
ylabel('Fuel Consumption [Kmpl]')
legend('Fuel Consumption')
%% Plotting vehicle characteristics time trace accelerator
figure(4)
subplot(3,1,1)
hold on
grid on
plot(Time, Acc_Pdl, 'linewidth', 1, 'Color', 'k');
plot(Time, Brk_Pdl, 'linewidth', 1, 'Color', 'r');
ylabel('Pedal [%]')
xlim([0, Time(end)]);
legend('Accel','Brake');
subplot(3,1,2)
hold on
grid on
plot(Time, Veh_Desired_Spd, 'linewidth', 1, 'Color', 'k');
plot(Time, Veh_Spd, 'linewidth', 1, 'Color', 'r');
ylabel('Speed [rpm]')
xlim([0, Time(end)]);
legend('Vehicle Desired Speed','Vehicle Actual Speed');
subplot(3,1,3)
hold on
grid on
plot(Time, Gear_Cmd, 'linewidth', 1, 'Color', 'k');
xlim([0, Time(end)]);
xlabel('Time [s]');
ylabel('Gear');
%% 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_Spd,Eng_Trq,'.','color','k');
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 motor speed, torque, motor input power
figure(7)
subplot(2,2,1)
plot(Time, EM_torq, 'linewidth', 1, 'Color', 'g');
xlabel('Time [s]')
ylabel('Torque [Nm]')
legend('Torque');
subplot(2,2,2)
plot(Time, Em_PWR, 'linewidth', 1, 'Color', 'k');
xlabel('Time [s]')
ylabel('Power [KW]')
legend('Engine Power');
subplot(2,2,3)
plot(Time, Em_sped, 'linewidth', 1, 'Color', 'r');
xlabel('Time [s]')
ylabel('EM speed')
legend('EM SPEED')
%%Plotting pack voltage, current, and SOC
figure(8)
subplot(2,2,1)
plot(Time, Pack_currnt, 'linewidth', 1, 'Color', 'g');
xlabel('Time [s]')
ylabel('CURRENT')
legend('CURRENT');
subplot(2,2,2)
plot(Time, Pack_voltg, 'linewidth', 1, 'Color', 'k');
xlabel('Time [s]')
ylabel('Voltage')
legend('Voltage');
subplot(2,2,3)
plot(Time, S_OC, 'linewidth', 1, 'Color', 'r');
xlabel('Time [s]')
ylabel('SOC')
legend('SOC')
%% Plotting EM operating points on EM map
figure('Name','Motor 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');
p4=plot(Eng_map_spd*30/pi,Eng_max_gen_trq,'linewidth',2,'color','k');
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_inpwr_map');
clabel(c,h);
xlabel('EM Speed [rpm]');
ylabel('EM Torque [Nm]');
title('EM Input Power');
legend([p1 p4 p3],{'Max Curve','Regen Curve','Operating Points'});
PLOTS AND GRAPHS:
UDDS CYCLE:
- FUEL CONSUMPTION VS FUEL RATE:


- VEHICLE CHARACTERISTICS TIME TRACE ENGINE TORQUE, ENGINE POWER, FUEL RATE AND FUEL CONSUMPTION:

- VEHICLE CHARACTERISTICS TIME TRACE ACCELERATOR AND BRAKE PEDAL, GEAR COMMAND, VEHICLE DESIRED AND ACTUAL SPEED:

- ENGINE OPERATING POINTS ON ENGINE FUEL MAP:

- MOTOR SPEED, TORQUE, MOTOR INPUT POWER CHARACTERISTICS:

- PACK VOLTAGE, PACK CURRENT, SOC CHARACTERISTICS:

- EM OPERATING POINTS:

HWFET CYCLE:
- FUEL CONSUMPTION VS FUEL RATE:

- VEHICLE CHARACTERISTICS TIME TRACE ENGINE, TRANSMISSION INPUT, TRANSMISSION OUTPUT AND WHEEL SPEED:

- VEHICLE CHARACTERISTICS TIME TRACE ENGINE TORQUE, ENGINE POWER, FUEL RATE AND FUEL CONSUMPTION:

- VEHICLE CHARACTERISTICS TIME TRACE ACCELERATOR AND BRAKE PEDAL, GEAR COMMAND, VEHICLE DESIRED AND ACTUAL SPEED:

- ENGINE OPERATING POINTS ON ENGINE FUEL MAP:

- MOTOR SPEED, TORQUE, MOTOR INPUT POWER CHARACTERISTICS:

- PACK VOLTAGE, PACK CURRENT, SOC CHARACTERISTICS:

- EM OPERATING POINTS:

CONCLUSION:
The forward energy-based fuel consumption model of a Hybrid Electric Vehicle was developed and the plots have been plotted for UDDS and HWFET cycles.