Professional Documents
Culture Documents
I. Abstract…………………………………………………………………………………………………………………………………………………4
i. Problem statement…………………………………………………………………………………………………5
ii. Objective………………………………………………………………………………………………………………………5
iii. Procedure………………………………………………………………………………………………………………………5
iv. Capability Analysis……………………………………………………………………………………………6
v. Results……………………………………………………………………………………………………………………………8
i. Introduction………………………………………………………………………………………………………………8
ii. Problem Statement…………………………………………………………………………………………………9
iii. Objective………………………………………………………………………………………………………………………10
iv. Analysis…………………………………………………………………………………………………………………………10
v. Synthesis………………………………………………………………………………………………………………………11
vi. Results……………………………………………………………………………………………………………………………13
i. Introduction………………………………………………………………………………………………………………14
ii. Problem Statement…………………………………………………………………………………………………14
iii. Objective………………………………………………………………………………………………………………………14
iv. Procedure………………………………………………………………………………………………………………………15
v. Result………………………………………………………………………………………………………………………………15
i. Introduction………………………………………………………………………………………………………………16
ii. Problem Statement…………………………………………………………………………………………………16
iii. Analysis…………………………………………………………………………………………………………………………17
iv. Results……………………………………………………………………………………………………………………………19
VI. Appendix……………………………………………………………………………………………………………………………………………20
VII. Reference…………………………………………………………………………………………………………………………………………30
2
List Of Figures and tables
3
ABSTRACT
4
OBD DIAGNOSTIC CAPABILITY ASSESMENT
Improvement Module-I
Problem Statement:
The biggest problem that we were facing was what we called
“False Faults”. This was a phenomenon when we used to have a
fault code stored in the engine management system when all the
engine parameters were within the threshold limits and were
functioning properly. This happened when the ECM received values
from the sensors on particular engine conditions such as driving
up a hill on cold winter days. These onetime events even though
not harmful to the engine performance caused the sensors to read
values that were only slightly off and they immediately made the
ECM to set a fault code. The customers who were within the
warranty period wanted us to conduct a service check as soon as
the light came on and this caused a lot of waste in terms of
money and time from our side of things.
Objective:
To make an assessment on the risk of false faults on the
truck by using the data from data loggers.
o Scheme out a method to monitor the data so that the
phenomenon of false faults becomes predictable.
Procedure:
Process field data from the trucks: The data basically was
in raw format. I had to write out a program in matlab to
get the data to us for analysis. The program is listed
below in the code section of the report
5
Capability Analysis
Steps in Capability:
1. Included the list of trucks that we were interested in
looking at.
2. Load the data into minitab window.
3. Test the data for the current product threshold values.
7
Fig.3 Capability Analysis result
Results: Thus the risk assessment for the problem of false faults was
successfully studied and countered using powerful software tools such as
matlab and minitab.
8
Diagnostic Addition-Fault Code Monitoring
Improvement Module-II
9
Problem Statement: Just like the catalytic converter on the car there is an
After-treatment module that is connected to the exhaust of the engine to
reduce particulate emissions. This device basically forces the exhaust to
pass through a porous ceramic material that captures the exhaust particles.
The surface of the ceramic is coated with a catalyst that oxidizes the
particles as they are collected within the catalyst. From here on a liquid
reductant ,typically a combination of urea and water is added to convert the
harmful nitrogen oxide gases to water and nitrogen thereby facilitating near
zero emissions. This Process is called selective catalytic reduction.
10
Analysis: This OBD Monitor sets the diagnostic trouble code on
the engine computer only during particular engine conditions.
The idea was to first predict the instances at which this fault
code would be set if this engine had to run on the field and
then proceed to predict the phenomenon of false faults. To
successfully predict the instance at which the fault was set we
needed to perform a logic analysis using simulink. All the
possible engine conditions that contributed to this phenomenon
were considered and a simulink model was generated. This model
basically captures the offset volume of the Nox volume that the
Nox Sensor on the aftertreatment module monitors and sends the
signal to the ECM . Once this was done I had to write a script
in matlab that would be compatible to the master data processing
program used for the capability analysis.
11
Synthesis: The issue we faced here was that one of the
parameters that formed a integral condition for this OBD monitor
to set a fault was not logged by the data loggers on some
trucks. In other words we did not monitor the efficiency of this
parameter and its effects on the engine performance earlier. To
include the Nox Sensor monitor to the capability, I validated
the data that was known to set this FC and we determined that
the above parameter was the only limiting factor that was
pulling the capability down.
12
Fig.7 Graph before fix & Fig.8 Graph after fix
13
capability analysis thereby increasing our efficiency when it
came to conducting an assessment for risk of fault faults.
OBD Charge Temperature Investigation
Improvement Module-III
14
Procedure:
Gathered data from the field.
Determined the maximum charge air temperature for a typical
truck “run-day” using matlab.
Pushed the threshold limit closer to the maximum value and
tuned it in the calibrations so that the ECM does not set a
fault.
Check for emissions compliancy and risk on false faults by
conducting trials on the field.
90
80
Daily Max Charge Temp
70
60
50
40
30
20
10
0
05/04/2009 05/29/2009 06/23/2009 07/18/2009 08/12/2009 09/06/2009 10/01/2009
15
OBD Calibrations tuning for Engine Stumble
Improvement Module IV
16
Fig.10 Engine stumble problem
Analysis:
Most of our engines were replaced with new sensors and the
engine hesitancy did stop but recurred after 4000 miles.
The new sensors had poor response to our baseline
calibration and over time minor errors accumulated and the
engine began misfiring because the computer did not receive
values within the specific threshold limits. I was
assigned the task of coming up with a revised calibrations
that would enhance the capabilities of the sensors. To fix
this issue I decided to slightly change the misfire tuning
table at specific engine speed. This was done on the
rationale that new sensors respond better to advanced
timing values. This was primarily done to get better
response from the sensors. We had the engine tested on a
dynamometer and a real time graph generator that was
plugged into the engine. After we tweaked the misfire table
we monitored the ramps on the signal generator and noted
the values for which the stumble disappeared and chalked
out a new table. Given below is the algorithm on which the
whole system works.
17
Fig.11 Flowchart sensor interface
Table changes:
18
Results: The table tune up was put to test on the field and the
stumble issue did not recur on the field.
19
Appendix
Protocol:
Comments in the code are green in color with the body being in black and conditional statements are in
blue.
Module I
%Check the Batch List to determine where the data was saved
TruckBatchList
% Change to the location of where the indivdual Truck analysis was saved
eval(['cd ','''',PathName,''''])
AllTruckData = dir('*mat');
20
for TrkLp = 1:length(AllTruckData)
%Capture the File Name Process list on the first pass in addition to
if obd==1
eval(['load(','''',AllTruckData(TrkLp).name,'''','
,','''',OBD_key_parms{obd},'''',',','''',
'FileNamesToProcess','''',',','''','TName','''',')'])
else
eval(['load(','''',AllTruckData(TrkLp).name,'''','
,','''',OBD_key_parms{obd},'''',',','''','TName','''',')'])
end
eval([cell2mat(OBD_key_parms(obd)),'_total(',num2str(Obdstr),':',num2str((New
Rows+Obdstr)-1),',1:',num2str(Clmns),')=',cell2mat(OBD_key_parms(obd)),';'])
Obdstr = NewRows+Obdstr;
end
%cleanup the data Rows First
eval(['RmvPts = find(isnan(',OBD_key_parms{obd},'_total(:,2))==1);'])
eval([OBD_key_parms{obd},'_total(RmvPts,:)=[];'])
eval([OBD_key_parms{obd},'_details(RmvPts)=[];'])
if exist(SavePath,'dir') == 0
mkdir(SavePath)
else
eval(['delete ','''',SavePathFile,''''])
end
eval (['save ','''', SavePathFile,'''',' ',OBD_key_parms{obd},'_total
',OBD_key_parms{obd},'_details'])
% Block warnings
system_dependent('DirChangeHandleWarn', 'Never');
%Call function which create File Name Paths for dates of interest
[FileNamesToProcess] =
OBDFilePathCreator(TName,FirstDayOfInterest,LastDayOfInterest);
if isempty(FileNamesToProcess)
disp(['No good data for ', TName])
continue
end
22
% Captures ECM Daily Time Span
ECMTimeRange = zeros(length(FileNamesToProcess(:,1)),2);
if BadFile == 0
eval(['load(',FileNamesToProcess{FNP,2},',','''','i_Calibration_Version',''''
,')'])
23
eval(['load(',FileNamesToProcess{FNP,2},',','''','ECM_Run_Time','''',',',''''
,'ECM_Run_Time_30000ms','''',',','''','ECM_Run_Time_5000ms','''',')'])
if
exist('ECM_Run_Time_5000ms','var') && exist('ECM_Run_Time_30000ms','var') &&
exist('ECM_Run_Time','var')...
&& isempty(ECM_Run_Time)==0 && isempty(ECM_Run_Time_5000ms)==0 &&
isempty(ECM_Run_Time_30000ms)==0
eval(['load(',FileNamesToProcess{FNP,2},')'])
%% Parameters to keep
Keep_sv= ['FileNamesToProcess',' TName ',' FNP',' OBD_key_parms','
TrucksToProcess',' SWVersion1',' SWVersion2',' SWVersion3',...
' CapabilityDate',' MnLp',' PathName',' FirstDayOfInterest','
LastDayOfInterest'];
for i=1:length(OBD_key_parms)
Keep_sv_temp=[' ',char(cell2mat(OBD_key_parms(i)))];
Keep_sv=[ Keep_sv , Keep_sv_temp];
clear Keep_sv_temp
24
end
eval(['keep ',Keep_sv])
%%
end
PathNameFileName=([PathName,TName,'_',num2str(FirstDayOfInterest),'_',num2str
(LastDayOfInterest),'_SWver',SWVersion1,'.mat']);
if exist(PathName,'dir')~=7
mkdir(PathName)
end
end
send_text_messageNRS('716-566-8487','cingular','','OBD Capbility
COMPLETED!!!!!!!!!')
% send_text_messageNRS('315-243-8152','verizon','','OBD Capbility
COMPLETED!!!!!!!!!')
25
Truck batch list
CapabilityDate =’110125’;
%% PacLiteTrucks
TrucksToProcess = { ‘ENG_T_112_9960’
‘ENG_T_132_7550’
‘ENG_T_133_9961’
’ENG_T_136_9958’
’ENG_T_261_9959’
’ENG_T_50113_9411’
’F_CFI_5922_0431’
’F_Penske_4478_0432’
’F_Swift_9627_0429’
’F_WalMart_4343_0428’
};
TrucksToProcess = {’F_AnRTransport_6980_8053’
’F_WasteMgtPCR_9474_0017’
‘F_WasteMgtATO_9448_0039’
‘F_DavisExpress_6896_8541’
‘F_AnRTransport_6981_0016’
‘F_StakerParsons_7409_0437’
‘F_EstesExpress_2611_8545’
‘F_KenanAdvantage_5851_9562’
‘F_EagleTransport_7986_0018’
‘F_EagleTransport_7985_0440’
‘F_Diamond_6805_6572’
‘F_DaytonFreight_0992_9568’
};
Monarch Trucks
TrucksToProcess = {%’F_Swift_9627_8738’
26
‘F_CFI_5922_8593’
‘F_Freightliner_231_8377’
‘F_HighMountain_5099_4127’
‘F_MesillaValley_5555_2888’
‘F_MillerBrothers_6849_9211’
‘F_VanWyk_2515_4404’
‘F_Freightliner_233_9182’
‘F_Carlile_8572_7360’
‘F_HighMountain_5099_9185’
‘F_PaccarLease_7149_9186’
‘F_Allison_1147_9181’
‘F_Knight_7653_0062’
‘F_Knight_7739_6310’
‘F_CFI_5922_8593’
‘F_Freightliner_231_8377’
‘F_Freightliner_232_4444’
‘F_Freightliner_234_2688’
‘F_MesillaValley_5555_2888’
‘F_MillerBrothers_6849_9211’
‘F_TriHi_6004_9185’
‘F_WindwalkerTransport_2915_9721’
};
TSlash = findstr(PathName,’\’);
SavePath = ([PathName,’CompiledData’]);
SavePathFile = ([SavePath,PathName(Tslash(end-1):Tslash(end)-
1),’_OBDCompiledData.mat’]);
27
Module-II Matlab code
MotEnable=zeros(size(Engine_Speed));
delayvec=zeros(size(Engine_Speed));
index=find(Engine_Speed>=1000&CBM_FdbkTorqueFuel<=0);
MotEnable(index)=1;
GoodNox=[];
ct=0;
delay=0;
for i=1:length(Engine_Speed);
if MotEnable(i)==1;
delay=delay+1;
ct=ct+1;
GoodNox(ct)=i;
end
else
delay=0;
end
delayvec(i)=delay;
end
figure
plot(EONOx_Comp_Value(GoodNox))
28
References
www.Wikipedia.org
www.enginecontrolsystems.com
29