VG30DETT warm crank issues after injectors swap

If it isnt a problem or a suggestion it probably goes here.

Moderator: Matt

Post Reply
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

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
image.png
(47.13 KiB) Downloaded 1051 times

Cold crank phase 2 (perfect): after start OK
image (1).png
(47.62 KiB) Downloaded 1051 times

Warm crank phase 1: crank pulse OK
image (2).png
(46.88 KiB) Downloaded 1051 times


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.
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

Warm crank phase 2: switch to TP-based injection map, 5.76ms injector pulse, RPM die !!! unable to start ( 2 attempts)
image (3).png
(48.09 KiB) Downloaded 1050 times
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

RAM2:1432 warmup_counter: rmb 1 ; ...

Starts to count from 0 as soon you kick in the starter.
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: VG30DETT warm crank issues after injectors swap

Post by Matt »

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?
Attachments
RB30E description.pdf
(959.17 KiB) Downloaded 76 times
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

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.
Crank1.png
(143.92 KiB) Downloaded 1025 times
Crank2.png
(144.55 KiB) Downloaded 1025 times
Crank3.png
(145.09 KiB) Downloaded 1025 times
Crank3.png
(145.09 KiB) Downloaded 1025 times
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: VG30DETT warm crank issues after injectors swap

Post by Matt »

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
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
This is the reason why I would go proper 740CC (I ran Nismos on my S14) rather than drilled

This is worth a read
http://injectordynamics.com/articles/dr ... d-dipshits
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

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.
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

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:

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
P1 ... P10 are different patches.
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
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: VG30DETT warm crank issues after injectors swap

Post by Matt »

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?
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: VG30DETT warm crank issues after injectors swap

Post by RomChip200 »

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:
icc_P7.c
(4.31 KiB) Downloaded 50 times
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
Post Reply