Book a demo

01 / 07 — MDX · Live instrumentsRunning on real data

Six instruments. Three real logs.

One toolchain, running live in this page.

A measurement configuration is not one plot type. Two of these are strip oscilloscopes comparing runs sample by sample; the other four answer what a strip view answers badly — how often, against what, how much of the run, and why the controller did that.

Y-t scopes
Two runs overlaid, dual cursors, per-run time shift
Analysis
Event list, X-Y, histogram, controller decomposition
Reads
Hold-last-sample, each signal at its own raster
Data
Recorded MDF4 logs, LTTB-downsampled for the browser

01 — Y-t oscilloscope · transient fuelling

Two runs, eleven signals, one cursor pair.

The strip surface. A baseline fuelling run and a 30 % reduced-fuel run overlaid on a shared time base, every strip carrying its own axis, and a value pane that recomputes on every cursor move — hold-last-sample, never interpolated.

  • Base fuelbase_fuel.mf4 Reference
  • 30 % reduced fuelreduced_fuel_30pct.mf4 Comparison
MDXbase_fuel.mf4 · reduced_fuel_30pct.mf4 Live
Loading measurement…
[s]
StyleNameUnit AB ΔRaster
Drag the A / B flags to move the cursors — values recompute live. Click a strip or its row block to select that signal. Drag a strip to re-time run 2 against run 1; double-click to reset. Reads use hold-last-sample; * marks a held value.

Hotkeys — Transient fuelling

Ctrl + 1CursorsSwitch the active cursor
Arrow Left / RightCursorsMove the active cursor sample-wise, on the selected signal
Ctrl + Shift + BCursorsEnter a time for the active cursor; again for the other cursor
Ctrl + Alt + RCursorsDelete cursors (reset to the window edges)
Ctrl + Page Up / DownStripsMove between strips
Arrow Up / DownSignal listMove between signals
Ctrl + BNavigationEnter a time to centre the view on
Ctrl + ZGlobalUndo the last run-time nudge
Ctrl + F1GlobalShow this list
EscGlobalClose this list
Keys act on whichever scope you last clicked. Docking windows, Quick Switch, anchoring, sync cursor and EHANDBOOK live in the desktop application — they need chrome this single instrument does not have.

Enter a time

11 signals · 2 runs · 2.0 s window
  1. 01.1

    Hold-last-sample reads

    An ECU signal keeps its value until the next update, so a cursor reports the last sample at or before it — never an interpolation. A held read is marked with an asterisk so you can tell a measured value from a carried one.

  2. 01.2

    Per-run time shift

    Drag any strip horizontally and the whole of run 2 slides against run 1. A time offset belongs to the file, not to a signal, so every strip moves together. Undo with Ctrl + Z, clear with a double-click.

  3. 01.3

    Mixed rasters, one time base

    The strips carry 1 ms and 10 ms channels side by side. Nothing is resampled to a common rate — each signal keeps its own raster, and the cursor resolves each one independently.

  4. 01.4

    Sample-wise navigation

    Arrow Left / Right steps the active cursor across the samples of the selected signal only. The cursor line is solid on a sample and dashed between two.

02 — Y-t oscilloscope · cold start

Crank, enrichment, light-off — same instrument.

The same strip surface on a different question. Two real cold starts from one vehicle programme, soaked nine degrees apart. Ninety seconds from key-on: the crank voltage dip, the enrichment excursion, the ignition retard that heats the catalyst, and the thermal curves that follow.

  • 25 °C soakcoldstart_soak_25C.mf4 Reference
  • 34 °C soakcoldstart_soak_34C.mf4 Comparison
MDXcoldstart_soak_25C.mf4 · coldstart_soak_34C.mf4 Live
Loading measurement…
[s]
StyleNameUnit AB ΔRaster
Drag the A / B flags to move the cursors — values recompute live. Click a strip or its row block to select that signal. Drag a strip to re-time run 2 against run 1; double-click to reset. Reads use hold-last-sample; * marks a held value.

Hotkeys — Cold start

Ctrl + 1CursorsSwitch the active cursor
Arrow Left / RightCursorsMove the active cursor sample-wise, on the selected signal
Ctrl + Shift + BCursorsEnter a time for the active cursor; again for the other cursor
Ctrl + Alt + RCursorsDelete cursors (reset to the window edges)
Ctrl + Page Up / DownStripsMove between strips
Arrow Up / DownSignal listMove between signals
Ctrl + BNavigationEnter a time to centre the view on
Ctrl + ZGlobalUndo the last run-time nudge
Ctrl + F1GlobalShow this list
EscGlobalClose this list
Keys act on whichever scope you last clicked. Docking windows, Quick Switch, anchoring, sync cursor and EHANDBOOK live in the desktop application — they need chrome this single instrument does not have.

Enter a time

11 signals · 2 runs · 90 s window
  1. 02.1

    The crank is a voltage event

    Battery voltage collapses to roughly 8.8 V while the starter turns, then recovers past 15 V once the alternator picks up. Put cursor A in the dip and cursor B after recovery and the Δ column reads the whole event.

  2. 02.2

    The two runs start apart

    These are separate recordings, so run 2 cranks about 0.75 s earlier in its own file. Slide run 2 until the cranks line up and every comparison is read at the same point in the start.

  3. 02.3

    Retard is what heats the catalyst

    Ignition advance is pulled back hard after start and enrichment drives lambda rich — heat dumped into the exhaust, walking the catalyst up while the coolant is still cold.

  4. 02.4

    The thermal strips diverge

    Catalyst, exhaust, coolant and oil all separate between the runs — though these are different sessions, so soak is not the only variable. Step the cursor to read when each crosses a light-off threshold.

03 — Event list · fuel cut-off

Four cut-off events, found not eyeballed.

Deceleration fuel cut-off is an event question, not a trace question. The detector sweeps the run for windows where injection is zero while the engine is still turning, and hands back a table you can sort, total and export.

  • Fuel quantity = 0, speed > 700 rpmDetector
  • 4 events · 5.39 s · 10.6 % of runResult
MDX51 s engine test · recorded Live
Loading measurement…
Event list · overrun fuel cut-off

04 — X-Y oscilloscope · alternator

Alternator load, signal against signal.

Plot torque loss against engine speed instead of against time and the machine’s character appears as a shape. Colour carries a third channel — alternator current — and the signals behind the efficiency figure are calculated in the backend, not exported to a spreadsheet.

  • 4 signals, 0 exportsCalculated in backend
  • 59.3 %Median efficiency
MDX51 s engine test · recorded Live
Loading measurement…
X-Y oscilloscope · alternator efficiency

05 — Histogram · residence time

Where the run actually spent its time.

A trace tells you the engine reached 3,875 rpm. It does not tell you it spent under a second there. Residence time binned by engine speed answers that in one read, split by fuelling state.

  • 250 rpm, sample-wiseBinning
  • 5.4 s of 51 sFuel-free
MDX51 s engine test · recorded Live
Loading measurement…
Histogram · engine-speed residence

06 — Controller decomposition · idle regulation

What the idle controller asked for, and what it was allowed.

A calibration review of idle control asks how the controller got there. The regulated quantity sits over its setpoint, and the applied correction splits into the terms that produced it, drawn against the limits the loop may use. Where the applied line leaves the sum of its terms, the limiter is binding.

  • Engine speed to idle setpointRegulated
  • PI — derivative term is zeroLoop
MDX51 s engine test · recorded Live
Loading measurement…
Controller decomposition · idle speed regulation

About this data

Real logs. Nothing modelled, nothing simulated.

Three recorded measurement files feed these six instruments: a transient fuelling pair, a cold-start pair, and a 51 second engine test with pedal sweeps to 3,875 rpm and a loaded alternator. Signal names are generic throughout; the underlying programme-specific ECU labels appear nowhere on this page.

Traces are LTTB-downsampled for the browser. LTTB selects samples rather than averaging them, so every point a cursor lands on is a genuine recorded value, and the Raster column still reports each channel’s true source rate. Calculated signals are labelled as such, and the controller panel states plainly that its derivative term is zero in this dataset.

Next step

Bring your own measurement.

These are our files. Send one of yours and we will open it in the same instruments, on a call, with your engineers.