Project 1
PROJECT 1:
DESCRIPTION:
Project 1 deals with the development of a gas-powered fuel-efficient model for a conventional vehicle.
The main goal of this project is to familiarize yourself with the modeling process, to write scripts for Matlab, to model in Simulink, to analyze data and to produce episodes.
In this project, a medium-sized car with a 1.9L engine and a 4-speed automatic transmission is considered. Data taken from ADVISOR data developed by NREL, USA. The transfer map and controller are taken from the Matlab / Simulink example website.
The advanced model has the ability to simulate a car in different driving cycles such as UDDS, HWFET, FTP, NEDC, etc.
“Project1_InitFile.m” is a Matlab script used to load all the variables needed to use the Simulink model and background processing. Drive cycle selection is also done here. Before using Simulink
car model, use this startup script.
“Project1_VehicleModel.slx” is a Simulink car model. The model uses the 'Driver' block, which is a basic PI control that generates accelerator output and brakes to match what you want.
and the actual speed of the car. The 'Control' block is the car's brain, which represents the electronic control units. Based on the driver input, it produces the desired engine torque, the desired transmission gear
and the torque of the brake you want. This input is supplied with a 'Powertrain' block representing the vehicle's drivetrain. Contains' Engine 'connected to' Automatic Transmission 'by' Torque
Converter '. The transmission output is connected to the 'Differential', which enables 'Wheels', which provides gripping power to accelerate the vehicle. The longitudinal dynamics of the vehicle and the road load are shown in the block 'Vehicle Dynamics'. The selected solution is ode3 with a fixed step size of 0.01 sec.
After using this Simulink model, data from the model will be uploaded to the Matlab workspace.
"Project1_ProcessingFile.m" is a Matlab script used to analyze this data and create sites. This script needs to be launched after the Simulink model data is loaded into the workspace. Here we are
rename the loads loaded into the model (if you prefer), perform basic post-process calculations and generate results with sites.
Activity:
The task of this project is to calculate the fuel saving numbers of a given vehicle (kmpl) in the urban cycle (UDDS) and the high cycle (HWFET). Also, to analyze and understand a functional vehicle
points based on engine speed, torque, transmission speed, foot position, gear, distance traveled, etc.
To do this, the following steps must be followed:
1) Upload the Project1 folder as the current folder to Matlab.
2) Launch the Matlab script for “Project1_InitFile.m”.
3) The provided Simulink car model “Project1_VehicleModel.slx” is incomplete. The engine and content of the car dynamics block have been removed. Build Simulink blocks by referring to the lesson and example of the example block blocks provided. You can use the model and analyze the results using the ‘Wide’ debugging.
4) Add additional blocks to 'Workplace' to transfer the required Simulink drive data to the Matlab workspace.
5) Customize “Project1_ProcessingFile.m” according to the episodes you want and the statistics needed.
6) Write a project report containing the following:
a. Fill in the table to save fuel numbers (kmpl) for UDDS and HWFET cycles. This creates basic numbers for comparison with the hybrid version of the future.
b. Set engine timer, input power, transmission outlet and tire speed in one place.
c. Engine engine torque, engine power, fuel level and fuel consumption using small components.
d. Plot Accelerator and brake pedal, gear command, desired vehicle and real speed, distance of car using small sections.
e. Arrange engine areas in the engine oil map.
f. Write down the appropriate short comments for each of these episodes, describing the behavior of the car during the driving cycle.
g. Create your sites for both driving cycles
PROCEDURE:
- Load the Project1 folder as the Current Folder in Matlab.
- Run the “Project1_InitFile.m” Matlab script for drive cycle 1 i.e. UDDS
Code of the 'Project1_IntiFile':
clear all
close all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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 Engine_data_1_9L_Saturn_95kW.mat
load Trans_Shift_map.mat
%% 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 DFTP;
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);
Vehicle Model:
Driver:
Controller:
Power Train:
Engine:
Now, the Vehicle dynamics block is developed using statistics
Aerodynamic gravity, rolling, and gradient pull calculations are created and summarized to determine road load
Road load is removed from the grip strength for power
This force is then multiplied by the mass to obtain the acceleration fraction
Integrator is used to combine acceleration and gain part speed
Road load and speed are doubled to get the required power for the car
Power is then multiplied by the total amount of time to get the required energy
All blocks of speed, acceleration, road load, required power, and the required power are attached to the 'scope' block
see the output of the output in terms of time
Vehicle Dynamics:
Transmission:
Differential:
Wheels:
Code of 'Project1_ProcessingFile':
%% 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.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]
Eng_Speed = Eng_Spd*30/pi;
Veh_Distance = Veh_Dist/1000;
Veh_Speed = Veh_Spd*18/5;
Eng_Spd=0.1;
Eng_Trq=10;
%% 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()
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
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 p4],{'Max Curve','Operating Points'});
axis([Eng_map_spd(1)*30/pi Eng_map_spd(end)*30/pi 0 Eng_map_trq(end)]);
- Fuel economy number (kmpl) is found out from that program using formula
- Engine, transmission input, transmission output, and wheel speed are plotted on one graph with respect to the time
- Engine torque, engine power, fuel rate, and fuel consumption are plotted wrt the time using subplots
- Accelerator and brake pedal, gear command, vehicle speed, and vehicle distance are plotted wrt the time using subplots
- The engine operating points are plotted on the engine fuel map
- A similar procedure is followed by changing the drive cycle to 2 i.e. HWFET
Results:
Fuel economy numbers:
As we see, the fuel economy is high in HWFET compared to UDDS, it is because, in urban driving, the vehicle encounters more
traffic and it has to stop for fewer distances and it consumes more fuel at the starting. In HWFET, the vehicle encounters no
traffic and it moves without use of too much braking, so it will have more fuel economy number
Engine, transmission input, transmission output and wheel speed plot
UDDS drive cycle:
HWFET drive cycle:
We can see that the graph has more fluctuations in UDDS compared to the HWFET cycle because UDDS has more starts and
stops but HWFET does not have too many starts and stops Braking is high in UDDS when compared to HWFET due to traffic
Peak engine power reached in UDDS is nearly 4800 RPM and that in HWFET is 3800 RPM at the start, because, in UDDS, the vehicle requires more power to start from the initial condition.
Engine torque, engine power, fuel rate, and fuel consumption plot:
UDDS drive cycle:
HWFET drive cycle:
Vehicle consumed more power in the UDDS compared to HWFET cycle because it has too many starts and stops compared to
HWFET. When starting from the initial condition vehicle requires more power. Engine torque is also high in UDDS because while starting from rest, the vehicle requires more torque to overcome the static friction.
The fuel rate is high in HWFET because the vehicle will be in continuous movement, it consumes more fuel But, fuel economy will be high in HWFET compared to UDDS because there are many stops and starts in UDDS and more fuel is consumed when the vehicle is in an idle position.
Accelerator and brake pedal, gear command, vehicle speed, vehicle distance plot
UDDS drive cycle:
HWFET drive cycle:
For UDDS, the accelerator and the brake pedal have more fluctuations because of frequent starts and stops. But in HWFET, the brake pedal fluctuations are almost near to the zero line as there will be no frequent stops UDDS cycle mostly runs on 1st, 2nd gears, and uses 3rd, 4th gears very rarely as it does not achieve high speeds in that traffic. In the HWFET cycle, the vehicle mostly runs on 3rd, 4th gears as it will be moving at high speeds. It uses 1st, 2nd gears very frequently when braking is required
Obviously, the vehicle speeds will be high in HWFET compared to UDDS. UDDS also has more fluctuations in the speed due to frequent braking
The distance travelled in the given time will be high in HWFET than UDDS because of the traffic barrier in UDDS Engine operating points on the engine fuel map
UDDS drive cycle:
HWFET drive cycle: