going off of the code of it.... it's intended for short-duration periods of rapid throttle/RPM change without being in PE. I don't know if it's intended use is for emissions, drivability or if it is trying to be predictive.
code flow:
test for RDSC enable bit, bypass if not selected
test for PE mode but, bypass if in PE
test for EGR diagnostics active, bypass if active
test coolant temp, bypass if below 49.1*F(hardcoded value, kind of weird)
test for knock retard being applied, bypass if so
test DFCO fuel ramp-out byte, if more than 3.1% of normally calculated fuel is being removed due to DFCO, bypass(hardcoded)
test RPM for upper/lower thresholds, bypass if outside
test N/V ratio, if above global limit, bypass
and that's just the code for entering into it. after that:
determine which "gear" range to use(1/2/3)
determine if launch-mode active(A1 seems to bypass the rest of the RDSC code if launch-mode active, even with launch-mode specific value for RDSC, 88 likely similar)
TPS thresholds tested against
positive D-TPS threshold tested against
RDSC allow timer is decremented if code has gone this far, if 0 is reached, jumps out of RDSC
A/C vs no A/C value is determined for "part throttle" RDSC
multiplier is grabbed for determined gear/AC/throttle scenario, as is the D-RPM X 12.5(positive or negative) since the last loop
D-RPM and determined multiplier are multiplied, if MSB is anything other than 0, max spark change allowed for situation is used
if MSB is 0, value is compared against max allowed change(and limited if necessary)
and that's most of the magic, the rest is cleanup:
compared against a minimum allowed RDSC change value, if less, everything just done is essentially undone
spark change as determined in the RDSC code is then added or subtracted from total spark
and that's it for RDSC. so, the faster RPM changes occur, the more advance change occurs. the multiplier values also play quite a role with the final amount of advance as well.
a quick calculation/scenario:
assume you have a vehicle that pulls a 0-60 time of 6 seconds and is a linear rise of RPM/MPH throughout, with no gear changes. 6000 RPM redline/shiftpoint/60MPH.
RDSC loop is done 80 times per second(there will be 480 loops throughout the acceleration to 60), so let's do this calc at 3000RPM/30MPH: in 1/80th of a second, MPH should rise by (60MPH / 480 loops) .125MPH. RPM should rise by (6000RPM / 480 loops) 12.5RPM. convenient seeing how that is the resolution limit of the value used in the RDSC calcs. using BFUZ(91-94 L-body 3.1/5 speed) values since it has RDSC enabled:
we're assuming 100% throttle and 1st gear, so KDSONS1 is being used, it has a value of 5. the 12.5RPM value will be a 1, multiplied with 5 is 5(and 5/(90/255) is 1.76*. D-RPM will be positive, so we check the max value of 13.06* and it passes. but then we look at the minimum allowed change of 2.12* and then all of this calculating gets undone. there would have been an additional 1.76* added to total spark, but it didn't meet the minimum change allowed.
if this pull were done in 2nd gear, and the same 0-60 time/etc, the multiplier is 7, which would have gotten us just above the minimum allowed value.
if this pull were done at lower throttle and the same 0-60/etc, the multiplier is 16, which would have gotten us to 5.6*.
also, "WOT" in this instance is actually less than 4% TPS.
with BFUZ, it seems like RDSC is actually pretty difficult to get/stay in. something like BCFA(w-body 3.4/5 speed), it's actually appears to be difficult to stay out of RDSC.
I wouldn't rely on it, it seems to add quite an element of extreme change that I can't really see a purpose for?
Bookmarks