EVAP purge valve stuck open
The EVAP purge valve is stuck open, so canister vapour flows into the manifold all the time, including at idle where the module commands none. With a loaded canister the trims take fuel away at idle, and the MAF reads short at idle because the purge stream is unmetered air as well as vapour.
Fingerprint
Trims negative at idle, near zero at cruise Must be present
Rule: Idle total trim at or below -6 percent and at least 5 points below cruise.
With the valve stuck open, canister vapour pours in at idle where the module expects none. That extra fuel is a big share of idle fuel and a small share of cruise fuel.
MAF short of the estimate at idle, fine at WOT Must be present
Rule: Airflow check at or below 94 percent at idle and at least 94 percent at WOT.
The purge stream is air as well as vapour, and it enters below the MAF, so the MAF reads short at idle while the trims go the rich way. That pairing separates it from a leaking injector.
Why the numbers move
The purge valve connects the charcoal canister to the manifold. Normally the module opens it on a duty cycle and accounts for the flow. Stuck open, it flows like a small vacuum leak whose air carries fuel vapour. At idle the module expects no purge at all, so the whole flow is a surprise; at cruise the module is purging anyway and only the excess is.
The vapour is fuel the module did not meter, so closed loop pulls fuel out and the trims go negative, most at idle. The air in the stream bypasses the MAF, so the airflow check is short at idle. That pairing, rich trims with missing air, is what a leaking injector cannot produce: an injector adds fuel but no air.
The reference numbers
Computed by the model at build time: the fault at its clean reference size on a 2.0 l inline four, narrowband upstream sensor, with no noise.
| Reading | Idle | 2,500 rpm, no load | Cruise | WOT snapshot |
|---|---|---|---|---|
| Total trim bank 1 (%) | -9.0 | -2.6 | -1.1 | open loop |
| Airflow check (%) | 90 | 96 | 98 | 100 |
| MAF (g/s) | 2.72 | 7.37 | 13.89 | 83.79 |
| MAP (kPa) | 30.0 | 22.0 | 42.0 | 97.0 |
| Upstream B1S1 | switching, avg 0.45 V | switching, avg 0.45 V | switching, avg 0.45 V | 0.90 V steady |
| Downstream B1S2 (V) | 0.66 | 0.66 | 0.66 | 0.90 |
| ECT (C) | 90 | 90 | 90 | 90 |
| Misfire per 1,000 revs | 0 | 0 | 0 | 0 |
Easy to confuse with
- Vacuum leak. Both leave the MAF short at idle, because both let air in below it. The trims split them: a leak brings air only and the trims add fuel; a loaded canister brings vapour too and the trims take fuel away.
- Leaking injector. Both put the trims negative at idle. The airflow check splits them: the purge stream enters below the MAF, so it reads short at idle; an injector drip adds no air, so the MAF agrees.
On a real car
- Command the purge valve closed with a scan tool and see whether the trims and idle change.
- Pinch or cap the purge line at the manifold, as the service information allows, and watch short term trim.
- Symptoms that follow a fill up point towards a loaded canister.
TrimCase is a training aid built on a simulated engine model. It is not a diagnostic instruction for any real vehicle. Follow the service information for the vehicle in front of you.
Where the model is simpler than an engine
The model assumes a loaded canister. With an empty canister the stream is nearly all air and a stuck valve looks like a small vacuum leak. The two faults are grouped in one family for exactly that reason.
The full model is on how the model works.
An example case
Case C-UA-H, clean tier. Open it in projection mode.
Case C-UA-H
- Engine
- 2.0 L inline four, narrowband upstream sensor
- Customer says
- Hard to start right after refuelling
- Check engine light
- Off
- Tier
- Single fault, clean
Warm engine, sea level, 100 kPa barometric pressure. Simulated data for training, not from a real vehicle.
Freeze frame
No code stored. Snapshot saved by the technician at warm idle.
- Codes
- None stored
- Captured at
- Idle
- Engine speed
- 744 rpm
- Vehicle speed
- 0 mph
- Calculated load
- 18.4 %
- MAP
- 30.1 kPa
- MAF
- 2.67 g/s
- ECT
- 90 C / 194 F
- IAT
- 37 C / 99 F
- Fuel system
- Closed loop
- STFT / LTFT bank 1
- -0.6 % / -8.3 %
Live data by load cell
| PID | Idle | 2,500 rpm, no load | Cruise | WOT snapshot |
|---|---|---|---|---|
| Engine speed (rpm) | 744 | 2504 | 2097 | 5005 |
| Vehicle speed (mph) | 0 | 0 | 60 | 45 |
| MAP (kPa) | 30.1 | 22.1 | 42.2 | 96.7 |
| MAF (g/s) | 2.67 | 7.41 | 13.80 | 82.97 |
| Airflow check, MAF as % of speed density estimate (%) worked out | 88 | 96 | 97 | 99 |
| Calculated load (%) | 18.4 | 15.2 | 33.8 | 85.1 |
| IAT | 37 C / 99 F | 34 C / 93 F | 30 C / 86 F | 29 C / 84 F |
| ECT | 90 C / 194 F | 90 C / 194 F | 90 C / 194 F | 89 C / 192 F |
| Fuel system | Closed loop | Closed loop | Closed loop | Open loop |
| STFT bank 1 (%) | -0.6 | -0.6 | +0.2 | 0.0 |
| LTFT bank 1 (%) | -8.3 | -2.4 | -1.0 | -1.0 |
| Total trim bank 1 (%) worked out | -8.9 | -3.0 | -0.8 | -1.0 |
| O2 sensor B1S1 | switching, avg 0.45 V | switching, avg 0.45 V | switching, avg 0.44 V | 0.90 V steady |
| O2 sensor B1S2 (V) | 0.65 | 0.66 | 0.65 | 0.90 |
| Injector pulse bank 1 (ms) | 3.78 | 3.36 | 6.88 | 19.32 |
| EVAP purge command (%) | 0 | 20 | 35 | 0 |
| Misfire count per 1,000 revs | 0 | 0 | 0 | 0 |
Rows marked worked out are arithmetic on the rows above them, done for you: total trim is STFT plus LTFT, and the airflow check divides the MAF by the speed density estimate on the model page.