Tachometer redline range is 4,700 – 5,500 rpm. All related subroutines are well known by now. Same source code in all diesel ROMs it seems.
Within normal driving conditions the ECU won’t allow any over-rev because it gradually reduces injected fuel (zero at 4,800 rpm ?). This way over-rev can only be reached by force (mis-shift or faults).
There are two over-rev counters, triggered by two different RPM levels. Both are considered important therefore saved into EEPROM.
|High RPM: Repeated incidents might damage engine.|
|High RPM Threshold||rpm||5,500|
|High RPM Hysteresis Low||rpm||5,250||4,900|
|Very high RPM: Might damage engine on single occasion.|
|Very High RPM Threshold||rpm||5,900|
|Very High RPM Hysteresis Low||rpm||5,650||4,900|
RPM must drop below hysteresis low value to allow next incident to be triggered. Prevents multiple counter increments on single incident.
Reaching five recorded “high” or a single “very high” incident might also turn on MIL.
DTC P0219 Engine Overrunning Failure
Triggered by RPM ≥ 5,150 (all models/ROMs so far, Euro 5, too). Also causes freeze frame(s) capture.
High RPM History
Diesel specific, basically meant to acquire additional info. Subaru’s warranty department will probably look at this.
Although diagnostic software lists names like “Highest Over-Rev RPM history”, these actually start tracking within redline already (allowed but to be avoided), obviously don’t mean real over-revs when rpm < 5,500.
Only when above DTC P0219 has been triggered, the high-RPM-history management subroutine activates, tracking highest RPM it sees during incident. Later when DTC condition is not set anymore (=RPM dropped below 4,900) it updates its records, filling in highest engine speed it had seen plus current odometer value.
There are four records: highest and last three incidents.
Each record consists of two parameters and can be retrieved using a Subaru specific protocol:
- RPM, UInt8:
x*20+4000 [rpm]→ lowest possible value is 4,000 meaning NO incident yet!
- Odometer1, UInt16:
Since history subroutine is separated from DTC checking subroutine and both use current RPM as input, it’s possible that when history sub gets to run, the RPM had already dropped < 5,150. So even though history needs the 5,150 rpm DTC threshold, remembered RPM values can be slightly lower, already seen that in practice.
1) It is actually ECUs internal odometer, does not have to match dashboard odometer driven by combination meter computer! Usually these two odometer values drift off over time, typically 1% or more. Reading ECU odometer may require internal software knowledge, in many ROMs there is no diagnostic protocol parameter implemented for this.