Foresight Engine Doctor
Deterministic, rule-based differential diagnosis for stationary reciprocating engines — reads the exhaust-gas signature, matches it against per-engine baselines, returns a ranked top 4.
lean-burnDOC
AlarmEngine health — Engine 1 — CAT G3516HLIVE
One or more channels out of spec or sensor faulted.
5 normal4 warning2 alarm
Alarm: CO₂ · Manifold air|Warning: CO · NO₂ · CH₄ · THC/VOC
Scenario
Load a preset or edit readings directly to see the differential diagnosis update in real time
Engine:
Baseline = this engine's captured normal (drifts if the engine is retuned — use Recapture per channel). Spec = permit / OEM limits (fixed). A reading can be far from baseline but still within spec — that just means the baseline is stale.
O₂ 7.8 %, NO 190 ppm, EGT spread 60 °F — MUST diagnose Lean/hot combustion, NOT misfire.
Live channels · Engine 1 — CAT G3516HLIVE
fill = value / full-scale · color = status · NOx is calculated (NO + NO₂)
NO + NO₂
208
ppm·NOx
opt 185 ±50
.
190
ppm·NO
opt 175 ±50
.
18
ppm·NO₂
opt 10 ±5
.
500
ppm·CH₄
opt 1500 ±700
.
700
ppm·THC/VOC
opt 2000 ±800
.
7.8
%vol·O₂
opt 8.0 ±1.5
.
180
ppm·CO
opt 350 ±150
.
9.2
%vol·CO₂
opt 6.0 ±0.8
Gauge binding verification8/8 OK
| Tile | ParamId | Value | Baseline | Unit | Status | OK |
|---|---|---|---|---|---|---|
| NOx (calc) | NOx | 208.00 result.calculated.NOx (NO + NO₂) | 185.00 NO.baseline + NO2.baseline | ppm fixed (NOx is ppm) | watch max(|NO.level|,|NO2.level|) + faults | ✓ |
| NO | NO | 190.00 levelByParam.get("NO").measured | 175.00 profile.baselines["NO"].mean | ppm profile.baselines["NO"].unit | healthy statusFromLevel(level["NO"]) | ✓ |
| NO₂ | NO2 | 18.00 levelByParam.get("NO2").measured | 10.00 profile.baselines["NO2"].mean | ppm profile.baselines["NO2"].unit | watch statusFromLevel(level["NO2"]) | ✓ |
| CH₄ | CH4 | 500.00 levelByParam.get("CH4").measured | 1500.00 profile.baselines["CH4"].mean | ppm profile.baselines["CH4"].unit | watch statusFromLevel(level["CH4"]) | ✓ |
| THC/VOC | THC | 700.00 levelByParam.get("THC").measured | 2000.00 profile.baselines["THC"].mean | ppm profile.baselines["THC"].unit | watch statusFromLevel(level["THC"]) | ✓ |
| O₂ | O2 | 7.80 levelByParam.get("O2").measured | 8.00 profile.baselines["O2"].mean | %vol profile.baselines["O2"].unit | healthy statusFromLevel(level["O2"]) | ✓ |
| CO | CO | 180.00 levelByParam.get("CO").measured | 350.00 profile.baselines["CO"].mean | ppm profile.baselines["CO"].unit | watch statusFromLevel(level["CO"]) | ✓ |
| CO₂ | CO2 | 9.20 levelByParam.get("CO2").measured | 6.00 profile.baselines["CO2"].mean | %vol profile.baselines["CO2"].unit | fault statusFromLevel(level["CO2"]) | ✓ |
Each tile resolves label/value/baseline/unit/status by ParamId — reordering the grid never re-wires a tile to another gas.
Exhaust-gas signature
Engine 1 — CAT G3516H · detailed channel readouts
Analyzer channels
Controller signals — fixed install (SCX / Modbus)
CH₄: track %LEL for safety, ppm for emissions. Doctor uses ppm.
Value at Risk
Engine 1 — CAT G3516H · avoidable loss
Avoidable Loss
Estimated loss · 30 days
$77.4k
if unresolved
Per day
$2.6k
Primary Diagnosis
Charge-air / high manifold air temp
$14.3k
- Oil production loss$12.6k$420/dayBased on: 4.0% compressor derate · 200 bbl/day gas-lifted production tied to engine · $75/bbl WTI
- Fuel penalty$240$8/dayBased on: 1.5% extra fuel · 9.9 MMBtu/hr · $3.20/MMBtu · 24 h
- HSE / equipment risk$1.5k$49/dayBased on: Elevated EGT — accelerated valve/turbo wear
Scaled to 70% by diagnosis confidence.
Also Contributing
- Lean / hot combustion — high NOx2.0% extra fuel · 9.9 MMBtu/hr · $3.20/MMBtu · 24 h$18.5k$618/day
- Detonation / knock10.0% compressor derate · 200 bbl/day gas-lifted production tied to engine · $75/bbl WTI$44.5k$1.5k/day
1.03 MW · 9.9 MMBtu/hr · $3.2/MMBtu·Sources: CAT G3516H TMI, EIA Henry Hub 2024, EPA GHGI (GWP100=28), SWPSC 2026-017 gas-lift compressor downtime, SPE 214879 Delaware Basin gas lift, EIA WTI 2024Edit in Settings → Economics
Differential diagnosis — top 4
Ranked by confidence · every result is explainable from the readings above
match 70%coverage 100%warning
Why this was selected
Charge-air / high manifold air temp scored 70% because 2 of 2 expected signals aligned with the observed readings. Pattern match 70%, coverage 100%.
Contributing rules: Manifold air ↑ +1.6σ · NO ↑ +0.3σ
Recommended next steps
- maintenanceService charge-air cooler: clean fins, verify coolant / jacket-water flow and setpoint.
- maintenanceCheck ambient inlet louvres and engine-room ventilation.
- hseVerify NO/NOx analyzer calibration and span-gas date before reporting.
- maintenanceTrim air-fuel ratio toward richer setpoint; recheck NOx after 15 min stabilisation.
- hseLog the excursion in the site Title V / 40 CFR 63 ZZZZ deviation register.
Derived from the top contributing rules for this diagnosis. Perform in the order shown; re-run diagnosis after each corrective action.
Evidence
- Manifold airmeas148 °Fbase126 °F↑ +1.6σ
- NOmeas190 ppmbase175 ppm↑ +0.3σ
Likely causes
- Aftercooler fouled (water or air side)
- Low jacket-water flow / high JW temp
- Ambient temp above design
Recommended checks
- Inspect aftercooler core / clean fins
- Jacket-water flow, pump, thermostat
- Verify fan / radiator condition
Confidence breakdown
Top 3 candidates plus nearest misfire alternative (Single-cylinder misfire)
1
Charge-air / high manifold air temp70%match 70%coverage 100%2 signals
2
Lean / hot combustion — high NOx64%match 64%coverage 100%5 signals
3
Detonation / knock55%match 55%coverage 100%3 signals
alt
Single-cylinder misfire36%match 36%coverage 100%0 signals
Not selected: pattern match (36%) and coverage (100%) fell below the leader Charge-air / high manifold air temp at 70%.
Charge-air / high manifold air temp leads Lean / hot combustion — high NOx by 6 pts. Confidence is the weighted alignment of expected vs measured signals; a fault only ranks high when its signature parameters move in the expected direction with enough σ deviation.
Operator actions
Acknowledge, dispatch, escalate, or export — all decisions are logged
Since last diagnosis
Compliance — CO corrected to 15% O₂
40 CFR 63 Subpart ZZZZ (RICE NESHAP)
CO measured
180.0
ppm
CO @ 15% O₂
81.1
ppmvd
Limit
47.0
ppmvd
40 CFR 63 Subpart ZZZZ (RICE NESHAP) — lean-burn 4SLB: 47 ppmvd CO @ 15% O₂ or 93% CO reduction
Failing sensors & dials
- CO₂CO2Fault
- Actual
- 9.2 %vol
- Expected (baseline)
- 5.2 – 6.8 %vol
- Healthy spec
- 5.0 – 8.0 %vol· class default
- Source
- Modbus
Suggested actions↑ above band- Verify combustion efficiency and confirm no post-combustion CO2 injection
- Manifold airManifoldAirFault
- Actual
- 148 °F
- Expected (baseline)
- 112 – 140 °F
- Healthy spec
- 90 – 145 °F· oem spec
- Source
- SCX
Suggested actions↑ above band- Verify charge-air cooler cleanliness and cooling water flow
- Check ambient/turbo compressor outlet temperature sensor
- COCOWarning
- Actual
- 180 ppm
- Expected (baseline)
- 200 – 500 ppm
- Healthy spec
- 0 – 600 ppm· permit limit
- Source
- Modbus
Suggested actions↓ below band- Watch for drift over the next 15 min; if it persists, run a calibration check
- NO₂NO2Warning
- Actual
- 18 ppm
- Expected (baseline)
- 5 – 15 ppm
- Healthy spec
- 0 – 25 ppm· class default
- Source
- Modbus
Suggested actions↑ above band- Check SCR / oxidation catalyst temperature window and residence time
- Verify urea/DEF dosing rate is not overshooting NOx setpoint
- CH₄CH4Warning
- Actual
- 500 ppm
- Expected (baseline)
- 800 – 2200 ppm
- Healthy spec
- 0 – 2800 ppm· class default
- Source
- Modbus
Suggested actions↓ below band- Watch for drift over the next 15 min; if it persists, run a calibration check
- THC/VOCTHCWarning
- Actual
- 700 ppm
- Expected (baseline)
- 1200 – 2800 ppm
- Healthy spec
- 0 – 3500 ppm· permit limit
- Source
- Modbus
Suggested actions↓ below band- Watch for drift over the next 15 min; if it persists, run a calibration check
Baseline = per-asset captured normal · Spec = permit / OEM / class default
Decision support for a qualified technician — not a control action.