VG30DETT warm crank issues after injectors swap
Moderator: Matt
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
VG30DETT warm crank issues after injectors swap
BEFORE:
740cc Deatschwerks (370cc redrilled)
E85 for 8 years
Never had crank issues in all engine conditions from very cold (-10°C) to very hot (100°C)
CRANK_ENRICH 120 120 75 65 50 40 22 12 10 8 8 8 8 8 8 8
AFTER_START_ENRICH 200 200 200 140 125 110 90 70 55 45 35 30 30 30 30 30 (yes, 30 when high temp to counteract evaporation)
CRANK_TIMING 30 30 30 30 28 25 25 25 25 25 25 25 25 25 25 25 (yes 25° !)
K was in the range from 208 to 240 (auto adaptation) depending on ethanol % (from ~62 to ~76%)
Latency 1120us
NOW:
750cc 12 holes
Had to adapt:
_the fuel map a bit
_K is in the range from 184 to 196 at the moment (78% ethanol)_auto-adapt
CRANK_ENRICH deeply decreased (the old values prevented me from starting ...). These injectors throw out more more fuel when cranking compared to the previous ones.I suspect a vaporization issue.
Runs perfectly fine (cruising, WOT, etc ...)
At the moment:
CRANK_ENRICH 60 60 48 34 24 16 10 9 8 8 7 6 6 5 5 5
AFTER_START_ENRICH 160 160 140 115 100 85 70 60 50 40 30 20 10 10 10 10
CRANK_TIMING 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
I decreased a lot CRANK_TIMING to be in a better condition when cranking
Latency from 850 to 1120us, makes no change in warm cranking
Symptoms:
Cold crank from 10°C to 50°C: no problem (1second starter @10°C, 2seconds @50°C)
Mid warm crank from 30°C to 60°C: no problem (2s starter)
Warm crank @80°C or @90°C (even after having stopped 5mins): no problem
Warm crank from 60°C to 90°C after sitting half an hour ==> does not start. Here, this is hit&miss behaviour. Eventually, on the second attempt, it may start, or pumping the throttle will make it start after a while.
Cold crank phase 1 (perfect): crank pulse OK
Cold crank phase 2 (perfect): after start OK
Warm crank phase 1: crank pulse OK
To sum-up, the quick switch to the TP-based fuel map is a nightmare for me, the pulse is so big that it kills the RPM. I don't remember what controls the duration of the use of CRANK_ENRICH table (RPM threshold ? Time based ?), one way would be to use the crank table longer to delay the switch to the fuel map. Hope you got my concerns.
740cc Deatschwerks (370cc redrilled)
E85 for 8 years
Never had crank issues in all engine conditions from very cold (-10°C) to very hot (100°C)
CRANK_ENRICH 120 120 75 65 50 40 22 12 10 8 8 8 8 8 8 8
AFTER_START_ENRICH 200 200 200 140 125 110 90 70 55 45 35 30 30 30 30 30 (yes, 30 when high temp to counteract evaporation)
CRANK_TIMING 30 30 30 30 28 25 25 25 25 25 25 25 25 25 25 25 (yes 25° !)
K was in the range from 208 to 240 (auto adaptation) depending on ethanol % (from ~62 to ~76%)
Latency 1120us
NOW:
750cc 12 holes
Had to adapt:
_the fuel map a bit
_K is in the range from 184 to 196 at the moment (78% ethanol)_auto-adapt
CRANK_ENRICH deeply decreased (the old values prevented me from starting ...). These injectors throw out more more fuel when cranking compared to the previous ones.I suspect a vaporization issue.
Runs perfectly fine (cruising, WOT, etc ...)
At the moment:
CRANK_ENRICH 60 60 48 34 24 16 10 9 8 8 7 6 6 5 5 5
AFTER_START_ENRICH 160 160 140 115 100 85 70 60 50 40 30 20 10 10 10 10
CRANK_TIMING 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
I decreased a lot CRANK_TIMING to be in a better condition when cranking
Latency from 850 to 1120us, makes no change in warm cranking
Symptoms:
Cold crank from 10°C to 50°C: no problem (1second starter @10°C, 2seconds @50°C)
Mid warm crank from 30°C to 60°C: no problem (2s starter)
Warm crank @80°C or @90°C (even after having stopped 5mins): no problem
Warm crank from 60°C to 90°C after sitting half an hour ==> does not start. Here, this is hit&miss behaviour. Eventually, on the second attempt, it may start, or pumping the throttle will make it start after a while.
Cold crank phase 1 (perfect): crank pulse OK
Cold crank phase 2 (perfect): after start OK
Warm crank phase 1: crank pulse OK
To sum-up, the quick switch to the TP-based fuel map is a nightmare for me, the pulse is so big that it kills the RPM. I don't remember what controls the duration of the use of CRANK_ENRICH table (RPM threshold ? Time based ?), one way would be to use the crank table longer to delay the switch to the fuel map. Hope you got my concerns.
Last edited by RomChip200 on Fri Oct 08, 2021 5:54 am, edited 4 times in total.
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: VG30DETT warm crank issues after injectors swap
Warm crank phase 2: switch to TP-based injection map, 5.76ms injector pulse, RPM die !!! unable to start ( 2 attempts)
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: VG30DETT warm crank issues after injectors swap
RAM2:1432 warmup_counter: rmb 1 ; ...
Starts to count from 0 as soon you kick in the starter.
Starts to count from 0 as soon you kick in the starter.
Re: VG30DETT warm crank issues after injectors swap
Crank enrich used whilst start key on, but IIRC then it starts adding more fuel the longer the crank time (hence the crank timer used)
After crank, the after start table is used and quickly dissipates (about 5 seconds with a quick decline) whilst at the same time switching to reading the fuel map
See page 6 of the attached documents from GMH for the VL RB30 (better documentation than Nissan) for a general description how the crank tables work. Should be similar for Z32
The issue with after half an hour is strange. Like one of the injectors is leaking into the cylinder making it hard to start? You could put a endo camera into the spark holes to see if that is the case?
After crank, the after start table is used and quickly dissipates (about 5 seconds with a quick decline) whilst at the same time switching to reading the fuel map
See page 6 of the attached documents from GMH for the VL RB30 (better documentation than Nissan) for a general description how the crank tables work. Should be similar for Z32
The issue with after half an hour is strange. Like one of the injectors is leaking into the cylinder making it hard to start? You could put a endo camera into the spark holes to see if that is the case?
- Attachments
-
- RB30E description.pdf
- (959.17 KiB) Downloaded 139 times
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: VG30DETT warm crank issues after injectors swap
Not exactly.
When start key on, the initial crank pulse is used (according to engine temp initial) and then decreased stepwise.
If you start with 12ms and RPM don’t rise, the ECU will decrease it stepwise, 12 10 8 6 …. till a certain point.
When warm and big injectors (my case), I start with 2ms pulse (that is enough to start a warm engine with 750cc injectors) but there’s no room to decrease.
This corresponds to Equation 2 in document.
Probably I meet quickly the conditions (rotational speed) to switch to TP-based fuel map (I’m still in start phase with start key on !). This corresponds to Equation 1 in document.
Then, the injector pulse keeps increasing (related to TP) and this is definitively too rich and this kills my rotational speed.
This is too rich probably because the enrichment value/tables are adequate for 370cc OEM injectors, but not for my bigger injectors.
I’m pretty sure a 370cc redrilled and flowing about 740cc @3bars will not flow the same (quantity and spray pattern) compared to a 750cc from factory, when triggered by the same 4ms pulse (= warm start conditions). This is the source of my problem, when engine is warm.
All what I describe is aligned with the document and the switch from Equation 2 to Equation 1 while cranking (while keeping start key on)
I attached some screenshots below, with successive attempts to start, I focused on the second attempt:
First is crank pulse 2ms (Equation 2)
Second is TP based (Equation 1)
Third is final pulse when RPM dies (too much fuel, engine dies)
No leaky injector, I have a pressure gauge that shows steady pressure and whatever, the fuel pump primes each time the key is put IGN on.
When start key on, the initial crank pulse is used (according to engine temp initial) and then decreased stepwise.
If you start with 12ms and RPM don’t rise, the ECU will decrease it stepwise, 12 10 8 6 …. till a certain point.
When warm and big injectors (my case), I start with 2ms pulse (that is enough to start a warm engine with 750cc injectors) but there’s no room to decrease.
This corresponds to Equation 2 in document.
Probably I meet quickly the conditions (rotational speed) to switch to TP-based fuel map (I’m still in start phase with start key on !). This corresponds to Equation 1 in document.
Then, the injector pulse keeps increasing (related to TP) and this is definitively too rich and this kills my rotational speed.
This is too rich probably because the enrichment value/tables are adequate for 370cc OEM injectors, but not for my bigger injectors.
I’m pretty sure a 370cc redrilled and flowing about 740cc @3bars will not flow the same (quantity and spray pattern) compared to a 750cc from factory, when triggered by the same 4ms pulse (= warm start conditions). This is the source of my problem, when engine is warm.
All what I describe is aligned with the document and the switch from Equation 2 to Equation 1 while cranking (while keeping start key on)
I attached some screenshots below, with successive attempts to start, I focused on the second attempt:
First is crank pulse 2ms (Equation 2)
Second is TP based (Equation 1)
Third is final pulse when RPM dies (too much fuel, engine dies)
No leaky injector, I have a pressure gauge that shows steady pressure and whatever, the fuel pump primes each time the key is put IGN on.
Re: VG30DETT warm crank issues after injectors swap
Thanks for the clarification. I've never looked into the ECU code and counters too closely, beyond that document.
We have adjustments for initial crank (by ethanol FP1.0, and now by voltage in FP1.1) but that is as far as I took it. R34 has quite a few different crank tables, to complicate things even further
This is worth a read
http://injectordynamics.com/articles/dr ... d-dipshits
We have adjustments for initial crank (by ethanol FP1.0, and now by voltage in FP1.1) but that is as far as I took it. R34 has quite a few different crank tables, to complicate things even further
This is the reason why I would go proper 740CC (I ran Nismos on my S14) rather than drilledI’m pretty sure a 370cc redrilled and flowing about 740cc @3bars will not flow the same (quantity and spray pattern) compared to a 750cc
This is worth a read
http://injectordynamics.com/articles/dr ... d-dipshits
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: VG30DETT warm crank issues after injectors swap
I'm still on it.
In my case, I need a 2ms crank pulse above 60°C but the ECU does not apply it correctly.
The problem is with 2ms, there's no room to decrease it stepwise with a step of 1ms (OEM does it from 4ms ... 3ms ... 2ms ... fire ....)
I need to decipher the formula that decreases the crank pulse to decrease with a smaller step.
If I try to crank with 4ms pulse, some cylinders are someway flooded, one of the wideband shows some unburnt fuel (very rich). I also suspect a problem of vaporization with short pulse, I mean the injector produces droplet rather than a steam.
In my case, I need a 2ms crank pulse above 60°C but the ECU does not apply it correctly.
The problem is with 2ms, there's no room to decrease it stepwise with a step of 1ms (OEM does it from 4ms ... 3ms ... 2ms ... fire ....)
I need to decipher the formula that decreases the crank pulse to decrease with a smaller step.
If I try to crank with 4ms pulse, some cylinders are someway flooded, one of the wideband shows some unburnt fuel (very rich). I also suspect a problem of vaporization with short pulse, I mean the injector produces droplet rather than a steam.
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: VG30DETT warm crank issues after injectors swap
Solved (injectors swap): viewtopic.php?f=8&t=3908&p=28662#p28662
As I digged a lot into the crank injection routine, I modded it deeply to be able to output injection values with decimal, not only integer (too much rough with big injectors).
Example:
P1 ... P10 are different patches.
P3 is decimal calculation
As I digged a lot into the crank injection routine, I modded it deeply to be able to output injection values with decimal, not only integer (too much rough with big injectors).
Example:
Code: Select all
Before (OEM):
Pulse=3
RPM 0000 0025 0050 0075 0100 0125 0150 0175 0200 0225 0250 0275 0300 0325 0350 0375 0400 0425 0450 0475 0500 0525 0550 0575 0600 0625 0650 0675 0700 0725
w=0 0300 0300 0300 0300 0300 0300 0300 0200 0200 0200 0200 0200 0200 0200 0100 0100 0100 0100 0100 0100 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000
AFTER (Patch P3):
Pulse=3
RPM 0000 0025 0050 0075 0100 0125 0150 0175 0200 0225 0250 0275 0300 0325 0350 0375 0400 0425 0450 0475 0500 0525 0550 0575 0600 0625 0650 0675 0700 0725
w=0 0300 0300 0300 0300 0300 0300 0300 0285 0271 0257 0243 0229 0215 0201 0187 0173 0159 0145 0131 0117 0103 0089 0075 0060 0030 0030 0030 0030 0030 0030
P3 is decimal calculation
Code: Select all
inj_compute_cold:
ifeq CP-1
clra
clrb
std inj_temp_coef_add
endc
ldaa engine_temp2 ; engine_temp*1.6+0.5
ldx #inj_temp_coef_map
jsr interp_16 ; X=table adress
; A=value to look up
;
; A=output value
staa inj_temp_coef
ldab rpm_lo ; rpm_lo=min(rpm,255)
cmpb #12 ; 150rpm
bls ice_3
ifeq P10-1
cmpb #40 ; 500rpm
else
cmpb #48 ; 600rpm
endc
bcc ice_1
subb #12
; PATCH P1 crank pulse slope
ifeq P1-1
xgdx
ldaa inj_temp_coef
ldab #128
mul
staa inj_temp_coef
xgdx
endc
; PATCH P1 crank pulse slope
; PATCH P2 crank pulse slope
ifeq P2-1
xgdx
ldaa inj_temp_coef
ldab TID
mul
std inj_crank_TID
ldab TIMdyn
mul
addd inj_crank_TID
staa inj_temp_coef
xgdx
endc
; PATCH P2 crank pulse slope
ifeq P10-1
ldaa 0xFF83
else
ldaa #6
endc
mul
negb
bra ice_2
ice_1:
ifeq P10-1
ldab 0xFF82
else
ldab 0xFF82
endc
ice_2: ; ...
ldaa inj_temp_coef
mul
staa inj_temp_coef
; b contains low part
; PATCH P8 crank pulse variation
ifeq P8-1
tim %1,cnt_100ms_copy ; every 100ms
beq ice_21
lsra ; we divide by 2
rorb
staa inj_temp_coef
ice_21
endc
; PATCH P8 crank pulse variation
; PATCH P9 crank pulse variation
ifeq P9-1
tim %01,cnt_100ms_copy ; every 100ms
bne ice_21
clra ; we cut injection
clrb
staa inj_temp_coef
ice_21
endc
; PATCH P9 crank pulse variation
; PATCH P5 crank pulse factor
ifeq P5-1
; b contains low part
; calc low part
ldaa INJ_CRANK_FACTOR_ADR
mul
staa inj_crank_low_part
; calc high part
ldaa inj_temp_coef
ldab INJ_CRANK_FACTOR_ADR
mul
staa inj_temp_coef
; load low part for next patch
ldab inj_crank_low_part
endc
; PATCH P5 crank pulse factor
; PATCH P6 crank pulse factor
ifeq P6-1
; calc high part
ldaa inj_temp_coef
ldab INJ_CRANK_FACTOR_ADR
mul
staa inj_temp_coef
; b contains low part
endc
; PATCH P6 crank pulse factor
; PATCH P7 crank pulse factor
ifeq P7-1
; b contains low part
; calc low part
ldaa INJ_CRANK_FACTOR_ADR
mul
tab
clra
std inj_temp_coef_add
; calc high part
ldaa inj_temp_coef
ldab INJ_CRANK_FACTOR_ADR
mul
staa inj_temp_coef
; b contains low part
clra
addd inj_temp_coef_add
adda inj_temp_coef ; in case of carry
staa inj_temp_coef
; b contains low part
endc
; PATCH P7 crank pulse factor
; PATCH P3 crank pulse decimal definition
ifeq CP-1
; b contains low part
ldaa #100
mul
tab
clra
std inj_temp_coef_add
endc
; PATCH P3 crank pulse decimal definition
ice_3: ; ...
ldab warmup_counter
subb #10
bls ice_4
ldaa #20
mul
negb
addb #100
bra ice_5
ice_4: ; ...
ldab #100
ice_5:
ldaa inj_temp_coef
mul
; PATCH P3 crank pulse decimal definition
ifeq CP-1
addd inj_temp_coef_add
endc
; PATCH P3 crank pulse decimal definition
xgdx
cpx inj_bb1
bcs ice_6
stx inj_bb1
ldaa #53
staa inj_bb1_crank_step
ice_6: ; ...
cpx inj_bb2
bcs ice_7
stx inj_bb2
ice_7
cpx inj_bb1_nocorrect
bcs ice_16
stx inj_bb1_nocorrect
ice_16: ; ...
cpx inj_bb2_nocorrect
bcs ice_17
stx inj_bb2_nocorrect
ice_17:
rts
Re: VG30DETT warm crank issues after injectors swap
Good stuff!
How are you patching this into your code? Do you have the whole (47P10?) ECU code disassembled, or compile the ASM and copy into the BIN?
How are you patching this into your code? Do you have the whole (47P10?) ECU code disassembled, or compile the ASM and copy into the BIN?
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: VG30DETT warm crank issues after injectors swap
IDAPro disassembly.
I move the ass routines I mod in different memory location (0xE000) to have extra space and then, patch all the jsr calls.
Then, I recompile in assembler and update 0xE000-0xEA00 area.
On top, here is the modelling of inj_compute_cold routine in C:
P7 gives a avalanche effect on crank injection times. It may be useful in winter where you need to pour the cylinders with E85 before reaching the 200rpm threshold (starter cruising speed):
I move the ass routines I mod in different memory location (0xE000) to have extra space and then, patch all the jsr calls.
Then, I recompile in assembler and update 0xE000-0xEA00 area.
On top, here is the modelling of inj_compute_cold routine in C:
P7 gives a avalanche effect on crank injection times. It may be useful in winter where you need to pour the cylinders with E85 before reaching the 200rpm threshold (starter cruising speed):
Code: Select all
$ ./P7.exe
Pulse=40
RPM 0000 0025 0050 0075 0100 0125 0150 0175 0200 0225 0250 0275 0300 0325 0350 0375 0400 0425 0450 0475 0500 0525 0550 0575 0600 0625 0650 0675 0700 0725
w=0 4000 4000 4000 4000 4000 4000 4000 1637 1557 1476 1396 1315 1235 1154 1074 0993 0912 0832 0751 0671 0590 0510 0429 0348 0174 0174 0174 0174 0174 0174