Notices
ECU Flash

Still playing with boost, need some advice!

Thread Tools
 
Search this Thread
 
Old Sep 30, 2006 | 05:27 PM
  #16  
20psiMR's Avatar
Thread Starter
Evolved Member
iTrader: (6)
 
Joined: May 2006
Posts: 731
Likes: 0
From: From Vegas to Reno
JCS, im almost positive I got that map from you on the other forum. I'll email it you though to double check. Need to power up the laptop, so will be before end of tonight. I need to jump on there and do some tuning anyway hehe.
Reply
Old Sep 30, 2006 | 07:48 PM
  #17  
20psiMR's Avatar
Thread Starter
Evolved Member
iTrader: (6)
 
Joined: May 2006
Posts: 731
Likes: 0
From: From Vegas to Reno
Email sent John
Reply
Old Sep 30, 2006 | 10:17 PM
  #18  
JohnBradley's Avatar
Evolved Member
Shutterbug
Liked
Loved
Community Favorite
iTrader: (30)
 
Joined: Jan 2004
Posts: 11,406
Likes: 78
From: Northwest
Package is being delivered.
Reply
Old Sep 30, 2006 | 11:20 PM
  #19  
jmoudry's Avatar
Evolving Member
iTrader: (15)
 
Joined: Aug 2005
Posts: 287
Likes: 1
From: arizona
I gotta ask a newb question here: Why is the boost control load offset necessary? Why not the desired load cell value?

Thanks
Reply
Old Oct 1, 2006 | 02:50 AM
  #20  
jcsbanks's Avatar
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
Evo Kid, does this help? :

Most Evo ECUs don't know and can't know the boost level, so we probably need to stop thinking about boost and think about load, load targets and load errors. The closed loop control subject is load.

Target load = desired + offset. Wastegate duty is then ramped up or down using the difference between present and target load and looking up the adjustment from the error table. Maximum wastegate duty places an upper limit on how far it can ramp up.

Regarding the occasions where desired load is used, there are checks in the code that constrain the system related to coolant temperature and lots of other variables. I don't have an exact definition of when the system is used or not, but if you had an unachievable load target for your present RPM and throttle position, then ramping up to the maximum duty for that RPM zone wouldn't matter too much. You can get "integral wind up" on some boost control systems if the maximum duty cycle is too high and you are at constant part throttle with a throttle unaware "boost" target, but seem to set the maximum wastegate and the restrictors to control overboost.

jmoudry, the offset is a way of keeping the tables to byte size whilst still having detail in there.

Last edited by jcsbanks; Oct 1, 2006 at 02:55 AM.
Reply
Old Oct 1, 2006 | 03:17 AM
  #21  
Evo_Jay's Avatar
Evolved Member
20 Year Member
Photogenic
Photoriffic
Shutterbug
iTrader: (17)
 
Joined: Jun 2005
Posts: 3,419
Likes: 14
From: Chico, CA (NOR-CAL)
so....

Load (car is experiancing) - 240 @ 3500rpm

# in desired load table - 159.4 @ 3500rpm
# in load offset - 80 @ 3500rpm
......................... = 239.4 @ 3500rpm

WG duty - 90

So with that equation the boost solenoid would run a WG duty of 90, right?

now if this happened..

Load (car is experiancing) - 260 @ 3500rpm

# in desired load table - 159.4 @ 3500rpm
# in load offset - 80 @ 3500rpm
......................... = 239.4 @ 3500rpm

Now the load is +8% off

Turbo error correction @ +8% is -5.3 WG duty

So a WG duty of 90, would actully be 84.7, right??


I now know why puttin all 159s in the desired load table make taper go away..

Say you hittin 240 load @ 3500 and 200 load @ 7000.
If all you tables say 159 + the offset, 80, that mean from 3500-7000, you target load is 240.
Now at 3500 you hit that, so the WG duty doesnt change but at 7000 your @ 200, which is 17% under target
Turbo error corr. @ -17% is +8 WG duty.
Reply
Old Oct 1, 2006 | 04:15 AM
  #22  
jcsbanks's Avatar
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
Generally the right idea, but my understanding is that the WG duty is a modification on the previous WG duty rather than being based directly on maximum duty and the error - it integrates or ramps up and down. You can say that if the boost error is zero it will stay the same.

The error is load-(desired+offset) rather than load/(desired+offset).

"Now at 3500 you hit that, so the WG duty doesnt change but at 7000 your @ 200, which is 17% under target" 40 load under target. The boost correction table doesn't go to 40 so it will just go to the end and apply the steepest ramp rate.
"Turbo error corr. @ -17% is +8 WG duty." It will quickly ramp to maximum duty cycle and not dip below until the boost exceeds target. This is why the maximum duty cycle controls overboost.
Reply
Old Oct 1, 2006 | 04:26 AM
  #23  
Evo_Jay's Avatar
Evolved Member
20 Year Member
Photogenic
Photoriffic
Shutterbug
iTrader: (17)
 
Joined: Jun 2005
Posts: 3,419
Likes: 14
From: Chico, CA (NOR-CAL)
Originally Posted by jcsbanks
Generally the right idea, but my understanding is that the WG duty is a modification on the previous WG duty rather than being based directly on maximum duty and the error - it integrates or ramps up and down. You can say that if the boost error is zero it will stay the same.

If you know that from disassabling the ECU, then I believe you. But I think that it is based on max WG duty and the error. This is just what I think, as I have played with WG duty and turned the error off and on many times.

The error is load-(desired+offset) rather than load/(desired+offset).

"Now at 3500 you hit that, so the WG duty doesnt change but at 7000 your @ 200, which is 17% under target" 40 load under target. The boost correction table doesn't go to 40 so it will just go to the end and apply the steepest ramp rate.
"Turbo error corr. @ -17% is +8 WG duty." It will quickly ramp to maximum duty cycle and not dip below until the boost exceeds target. This is why the maximum duty cycle controls overboost.
Two things..

1)^^

2) I think error is load/(desired+offset) because it says % in the side bar. Also if it was that way (a percentage), it would make it so the ECU could correct 40 under load target (since that would be about 17% and that is in the error correction table). ALso, I think that error correction controls over boost, not the max WG duty.

Last edited by Evo_Jay; Oct 1, 2006 at 04:28 AM.
Reply
Old Oct 1, 2006 | 06:01 AM
  #24  
jcsbanks's Avatar
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
The code does appear to update a previous WG duty value each cycle. The error is calculated using a subtraction not a division - the unit of load shows as % in ECUflash, so you could still have a % by subtracting one from the other. I've not spent a lot of time in this code, and I am a beginner, and the code is convoluted and does funny things, so I may well be wrong! Here is the code:

Code:
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B	R O U T	I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


sub_40570:				; CODE XREF: sub_40110+22p
		sts.l	pr, @-r15
		mov.l	r14, @-r15
		mov	r15, r14
		mov.l	r1, @-r15
		mov.l	r2, @-r15
		mov.l	r8, @-r15
		mov	r4, r1
		mov.l	@(h'128,pc), r2 ; [000406A8] = h'FFFF6EA8 ; WGduty
		mov.w	@r2, r2
		mov.l	@(h'120,pc), r10 ; [000406A4] = h'FFFF6BE4 ; gear ratio of some sort
		mov.w	@r10, r10
		mov.l	@(h'118,pc), r11 ; [000406A0] = word_1E04
		mov.w	@r11, r11
		cmp/hs	r11, r10	; unused high load low gear
		bf	loc_40596	; it will be false and branch
		mov.l	@(h'11C,pc), r13 ; [000406AC] = unk_1656
		mov.w	@r13, r13
		bra	loc_4059A
		nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_40596:				; CODE XREF: sub_40570+1Cj
		mov.l	@(h'118,pc), r13 ; [000406B0] = unk_1654
		mov.w	@r13, r13	; 000a loaded whatever

loc_4059A:				; CODE XREF: sub_40570+22j
		mov.l	@(h'118,pc), r0 ; [000406B4] = h'FFFF6BA6
		mov.w	@r0, r0
		tst	#h'11, r0       ; true if 11&R0 is 0
		bf	loc_405AA
		mov.l	@(h'114,pc), r0 ; [000406B8] = h'FFFF6E9C
		mov.w	@r0, r0
		tst	#h'20, r0       ; true if 20&R0 is 0
		bt	loc_405B0

loc_405AA:				; CODE XREF: sub_40570+30j
		mov.w	@(h'D8,pc), r2 ; [00040686] = h'80
		bra	loc_405B8
		nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_405B0:				; CODE XREF: sub_40570+38j
		mov.l	@(h'104,pc), r0 ; [000406B8] = h'FFFF6E9C
		mov.w	@r0, r0
		tst	#h'10, r0       ; true if 10&R0 is 0
		bt	loc_405C0

loc_405B8:				; CODE XREF: sub_40570+3Cj
		mov.l	@(h'2D8,pc), r10 ; [00040894] = h'FFFF6832
		mov.w	r13, @r10
		bra	loc_40672
		nop
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

loc_405C0:				; CODE XREF: sub_40570+46j
		mov.l	@(h'2D0,pc), r10 ; [00040894] = h'FFFF6832
		mov.w	@r10, r10
		tst	r10, r10
		bf	loc_40672	; branch if r10	not zero, 40672	doesn't change WG duty and exits
		mov.l	@(h'2C8,pc), r10 ; [00040894] = h'FFFF6832
		mov.w	r13, @r10	; move a in otherwise
		mov.l	@(h'2C0,pc), r10 ; [00040890] = h'FFFF6B18 ; load
		mov.w	@r10, r10
		extu.w	r10, r10
		shlr	r10		; half
		mov.l	@(h'2B4,pc), r11 ; [0004088C] = word_1670 ; boost load offset
		mov.w	@r11, r11
		extu.w	r11, r11
		mov.l	@(h'2E8,pc), r12 ; [000408C4] = h'FFFF6EAC
		mov.w	@r12, r12
		extu.w	r12, r12
		add	r11, r12
		add	#h'20, r10 ; ' '
		mov	r10, r4		; r4=$20+load/2
		mov	r12, r5		; r5=ram6eac+offset
		mov.l	@(h'29C,pc), r10 ; [00040888] = sub_F0C
		jsr	@r10 ; sub_F0C
		nop
		extu.w	r0, r0
		shll2	r0		; r0=2(($20+load/2)-ram6eac-offset)
		mov	r0, r4
		mov.l	@(h'28C,pc), r10 ; [00040884] = sub_590
		jsr	@r10 ; sub_590	; limit	r0 to word length
		nop
		mov.l	@(h'284,pc), r11 ; [00040880] = h'FFFF6996
		mov.w	r0, @r11
		mov.l	@(h'27C,pc), r4 ; [0004087C] = unk_62D6 ; Turbo dynamics error scaling
		mov.l	@(h'274,pc), r10 ; [00040878] = sub_CC6
		jsr	@r10 ; sub_CC6	; lookup, return result	at pointer at start of table
		nop
		mov.l	@(h'26C,pc), r4 ; [00040874] = unk_388E ; Turbo dynamics
		mov.l	@(h'264,pc), r10 ; [00040870] = sub_C28
		jsr	@r10 ; sub_C28
		nop
		extu.w	r0, r0
		extu.w	r2, r10
		add	r0, r10		; r10=wgduty+adj
		mov	r10, r4
		mov.w	@(h'6C,pc), r5 ; [00040686] = h'80
		mov.l	@(h'26C,pc), r10 ; [00040888] = sub_F0C
		jsr	@r10 ; sub_F0C	; corrected for	128 signed duty	adj
		nop
		mov	r0, r8		; save in r8
		mov.l	@(h'A4,pc), r4 ; [000406C8] = unk_6302 ; unknown
		mov.l	@(h'254,pc), r10 ; [00040878] = sub_CC6
		jsr	@r10 ; sub_CC6
		nop
		mov.l	@(h'98,pc), r4 ; [000406C4] = unk_387E ; unknown
		mov.l	@(h'244,pc), r10 ; [00040870] = sub_C28
		jsr	@r10 ; sub_C28
		nop
		extu.w	r0, r0
		mov.l	@(h'8C,pc), r10 ; [000406C0] = unk_1658
		mov.w	@r10, r10
		extu.w	r10, r10
		extu.w	r8, r4
		mov	r10, r5
		mov	r0, r6
		mov.l	@(h'7C,pc), r10 ; [000406BC] = sub_5A8
		jsr	@r10 ; sub_5A8
		nop
		extu.w	r0, r0
		extu.w	r1, r1
		add	r1, r0
		mov	r0, r4
		mov.w	@(h'36,pc), r5 ; [00040686] = h'80
		mov.l	@(h'238,pc), r10 ; [00040888] = sub_F0C
		jsr	@r10 ; sub_F0C
		nop
		extu.w	r0, r4
		mov	#0, r5
		mov.w	@(h'28,pc), r6 ; [00040684] = h'C8
		mov.l	@(h'60,pc), r10 ; [000406BC] = sub_5A8
		jsr	@r10 ; sub_5A8
		nop
		extu.w	r0, r0
		mov.w	@(h'20,pc), r10 ; [00040686] = h'80
		add	r10, r0
		mov	r0, r4
		mov	r1, r5
		mov.l	@(h'21C,pc), r10 ; [00040888] = sub_F0C
		jsr	@r10 ; sub_F0C
		nop
		extu.w	r0, r2

loc_40672:				; CODE XREF: sub_40570+4Cj
					; sub_40570+56j
		mov.l	@(h'34,pc), r10 ; [000406A8] = h'FFFF6EA8
		mov.w	r2, @r10
		mov.l	@r15+, r8
		mov.l	@r15+, r2
		mov.l	@r15+, r1
		mov.l	@r15+, r14
		lds.l	@r15+, pr
		rts
		nop
; End of function sub_40570
Reply
Old Oct 1, 2006 | 06:03 AM
  #25  
jcsbanks's Avatar
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
Bez Bashni is far more skilled and has disassembled much more. When I get chance I'll look how he has commented the equivalent areas in his ROM.
Reply
Old Oct 1, 2006 | 06:25 AM
  #26  
Evo_Jay's Avatar
Evolved Member
20 Year Member
Photogenic
Photoriffic
Shutterbug
iTrader: (17)
 
Joined: Jun 2005
Posts: 3,419
Likes: 14
From: Chico, CA (NOR-CAL)
^^ Yeah, I know nothing, and I mean nothing bout code.

My statements were just from my experiances messin with the boost control settings (I've probably flashed 20 different boost settings).
Reply
Old Oct 1, 2006 | 09:53 AM
  #27  
jcsbanks's Avatar
Evolved Member
 
Joined: May 2006
Posts: 2,399
Likes: 6
From: UK
I think we'll be able to log wastegate duty with the right request ID - hopefully without a change to the code. I think this would help us to see what is going on in real life better.
Reply




All times are GMT -7. The time now is 02:10 PM.