Skip to content

Main Engine Performance

Main engine health, TSI-grade.

A 5% SFOC drift means several hundred dollars per day at sea — at scale, hundreds of thousands per year per vessel. A late cylinder overhaul means an engine failure at sea. The Main Engine Performance pipeline turns raw monthly data into something a Technical Superintendent can act on without reading every file.

cylinder uniformitySFOC varianceturbocharger healthoverhaul timingsix-month rollup

Three stages

Collect telemetry → Analyse deviations → Escalate to TSI
  • Collect — ERP monthly performance reports, engine register, PMS counter feed; two collector modes (standard and microapp-with-visuals).
  • Analyse — cylinder uniformity, SFOC variance, pressure deviation, turbocharger efficiency, overhaul countdown, and a six-month parameter rollup.
  • Escalate — composite verdict routes HIGH or CRITICAL cases to the Technical Superintendent with evidence and recommended actions.

Key concept — cylinder uniformity

Even cylinder loading is the single most important indicator of engine health. A cylinder running hotter than its neighbours points to a fuel-injector defect, a stuck exhaust valve, or piston-ring blow-by — usually weeks before the engine itself flags an alarm.

Deviation per cylinder against the engine mean:

ΔTᵢ = Tᵢ − mean(T)
OK |ΔTᵢ| ≤ 30 °C
WARNING 30 °C < |ΔTᵢ| ≤ 50 °C
CRITICAL |ΔTᵢ| > 50 °C

A cylinder that is hot and has low Pmax is the classic exhaust-valve signature. A cylinder that is hot and has high Pmax usually points to fuel-injector overdelivery.

Worked example — MV ONE ATLAS

IMO 9290127, MAN 8K90 MC-C. After a refresh:

MAN Energy Solutions
DomainFinding
Cylinder uniformityCylinder 5 exhaust temp 38 °C above mean — WARNING
SFOC6.8% variance over design at 75% MCR, sustained 3 months
PressureCylinder 5 Pmax 12 bar below mean, Pcomp normal — fuel-injector overdelivery
Turbochargerη_tc down 9% over 3 reports — cleaning recommended
OverhaulCylinder 5 top-end overhaul in 380 hours — escalate

Composite verdict: HIGH. The pipeline sets the escalation flag, updates the case to awaiting-tsi-review, and sends an A2A message to the TSI inbox:

  1. Schedule cylinder 5 fuel-injector replacement at next port — coordinate spares.
  2. Schedule turbocharger water wash within 7 days; wet-cleaning at next port.
  3. Plan cylinder 5 top-end overhaul at the next docking window — book superintendent attendance.

Under the hood

Data collected per report
DomainData
Engine stateRunning hours, RPM, load, power output
Per-cylinderPmax, Pcomp, exhaust temp, FW inlet/outlet temp, PCO outlet
CombustionMean indicated pressure, peak pressure, scavenge pressure
AspirationTurbocharger speed, boost pressure, exhaust back-pressure
MaintenanceHours since last cylinder, top-end, and major overhaul
AlarmsActive alarms with severity at sample time

The standard collector pulls the latest performance entry from the ERP feed. The microapp collector additionally captures polynomial baseline curves, shop-trial overlays, and tab-by-tab screenshots — used when a review will be referenced by a charterer or in a Class dispute.

SFOC variance and overhaul timing — formulas

SFOC is load-dependent — comparing raw values across operating points produces nonsense. Variance is always normalised to the maker’s design curve at the current load:

Variance % = (SFOC_actual − SFOC_design(P)) / SFOC_design(P) × 100

A 3-point moving average smooths month-to-month noise. Persistent variance above 5% is flagged; above 8% triggers escalation.

Hours-to-next overhaul:

H_remaining = H_interval − (H_current − H_last_overhaul)
H_remainingStatus
< 0Overdue — CRITICAL
0 to 500Imminent — escalate
500 to 2000Port-call coordination
≥ 2000Healthy

Turbocharger efficiency ratio:

η_tc = P_boost / P_exhaust_back

A falling η_tc across three reports is flagged for cleaning regardless of whether either pressure is individually outside spec.

Pressure deviation — failure-mode map
PatternLikely cause
Pmax low + Pcomp normalFuel injector overdelivery / late timing
Pmax high + Pcomp highExcessive compression — piston ring overhaul candidate
Pmax normal + Pcomp lowCompression loss — exhaust valve or ring pack
Scavenge low + exhaust back-pressure highTurbocharger fouling
Scavenge low + cooler ΔT lowScavenge cooler fouling
Six-month rollup — code snapshot

Trend matters more than spot values. The analyzer builds a rolling six-month grid per cylinder per month, surfacing both missing reports and parameters whose mean is drifting.

# Build a six-month grid keyed by (cylinder, month)
for unit in sorted(all_units):
unit_row = {"units": unit}
for month_date, month_label in zip(six_months_dates, six_months_labels):
performance = performance_data.get(month_date)
if performance == "No Data Available":
current = (month_date.month == datetime.utcnow().month and
month_date.year == datetime.utcnow().year)
unit_row[month_label] = "Report yet to be submitted" if current \
else "Missing Report"
continue
unit_data = next(
(u for u in performance["data"]["parameter"]
if u.get("ENGPERTRANSLINENO") == unit),
None
)
unit_row[month_label] = (
round(unit_data[parameter_key], 2)
if unit_data and unit_data.get(parameter_key) is not None
else "No Data Available"
)

“Report yet to be submitted” = current month, expected gap. “Missing Report” = past month — a compliance problem.

Escalation triggers
TriggerSeverity
Cylinder deviation above 50 °CCRITICAL
Cylinder overhaul overdueCRITICAL
SFOC variance above 8% sustainedHIGH
Turbocharger boost low + exhaust highHIGH
Peak pressure outside maker specHIGH
Three or more missing monthly reportsHIGH

Why script-driven

Cylinder-deviation maths, SFOC-curve normalisation, and pressure-spec lookups all live in deterministic Python. The model interprets results into narrative; it doesn’t recompute. A review of ONE ATLAS this month and the same review next month produce identical numbers given identical inputs — the only way an audit trail holds up.