Engine Torque Estimation

Applies to: IOcan · Standalone controller. What this means

Every transmission controller needs a live engine torque value: factory TCUs schedule shifts and set clutch/line pressure from it, and the standalone drivers use it to control clutch pressure. Aftermarket ECUs rarely broadcast torque in a usable form, so each driver includes the same torque-estimation block, selected with the Torque calculation method parameter.

This page describes the methods and what each one needs. The driver pages link here and list which methods that driver supports — not every driver implements all of them.

Choosing a method

Method Old name Torque comes from You must provide
ECU Reported Torque External Inputs The ECU's own torque broadcast The gateways take a set — No intervention (required) plus optional Intervention, Max, Min and Loses (reference); the standalone drivers take a single Engine torque input
Fuel + Air (arbitrated) Fuel Calculation v2 Injected fuel mass cross-checked against an air model — see Fuel and air arbitration Injector setup, Displacement, Cylinder count; VE tables refine it
Air Model Air only calculation Air-mass model from manifold pressure and intake air temperature Displacement, VE tables, a configured fuel type
Fuel Model Fuel Only Calculation Injected fuel mass alone, primary injector only — no air cross-check Injector setup, Cylinder count
Throttle + MAP Estimate Internal Calculation A quick estimate from throttle position and manifold pressure Throttle, MAP; atmospheric pressure and intake air temperature improve it
Measured Torque Tables Torque Tables Measured engine-torque tables (TPS·RPM scaled by MAP·RPM) Both torque tables

⚠️ Fuel + Air (arbitrated) is not a newer Fuel Model. These are two different methods, not two versions of one. Fuel + Air builds a fuel estimate and an independent air estimate, then takes the lower of the two — so an over-reading injector signal is caught by the air model. Fuel Model uses the fuel path alone, with nothing to catch it. Under their old names — Fuel Calculation v2 and Fuel Only Calculation — the first read as a revision of the second. It never was. If you want the cross-check, pick Fuel + Air (arbitrated).

Practical guidance:

  • If your ECU broadcasts engine torque on CAN, use ECU Reported Torque — it is the most accurate and needs no calibration.
  • Without a torque broadcast, Fuel + Air (arbitrated) gives the best estimate; it needs the injector pulse-width signal from the ECU.
  • If no injector signal is available, use Air Model.

Renamed in 2.1

The method names changed in release 2.1 to run on a single axis — what the torque is derived from. Existing configurations are unaffected: the stored value is numeric, so a configuration made before 2.1 loads and resolves to the same method as before, under its new name.

Old name New name
External Inputs ECU Reported Torque
Fuel Calculation v2 Fuel + Air (arbitrated)
Air only calculation Air Model
Fuel Only Calculation Fuel Model
Internal Calculation Throttle + MAP Estimate
Torque Tables Measured Torque Tables
Fuel Calculation (v1) removed in 2.1 — see below

Fuel Calculation (v1) has been removed. It was never implemented: the firmware carried no branch for it, so selecting it produced a constant −123 instead of a torque value. It is no longer offered in the configurator. If a configuration made before 2.1 selected it, the method field reads back blank — choose a real method from the table above before driving the car.

By engine type

The guidance above assumes a naturally aspirated, throttled piston engine. Where the engine breaks one of the assumptions the air model rests on, the choice changes.

Diesel. There is no throttle plate, so throttle position carries no load information, and manifold pressure sits near ambient across the load range — both of the air model's load signals are uninformative. Diesel torque is set by injected fuel quantity, so use ECU Reported Torque, or a fuel method with Fuel type = Diesel (built-in fuel data). With Fuel + Air (arbitrated) this works out correctly on its own: an unthrottled engine running lean has far more air than the fuel needs, so the air ceiling sits high and the fuel path governs. Leave the Throttle drag map empty and put the losses in the Engine speed drag map.

High-overlap cams. At low RPM, reversion breaks the relationship between manifold pressure and trapped air, so speed-density is unreliable there while throttle position still tracks load. Use the VE Blending map — it is indexed by MAP — to weight toward Alpha-N in the pressure regions where your engine's MAP-to-airflow relationship falls apart, and toward Speed-Density where it holds.

Rotary and two-stroke. The air path derives trapped air from half the configured displacement, which is a four-stroke reciprocating assumption. An engine that does not fill that way gets a geometrically wrong air ceiling no matter how the VE tables are filled. Prefer ECU Reported Torque, or Fuel Model Calculation — note that plain Fuel + Air (arbitrated) is a poor choice here, because its wrong air ceiling can still clamp an otherwise correct fuel-path estimate.

Forced induction. The air model works in absolute manifold pressure, so it scales into boost without special handling — but the estimate is directly proportional to that pressure, so the MAP input must be scaled to cover peak boost. A MAP input that saturates gives an air ceiling that saturates with it, and VE tables that stop short of the boosted region leave the ceiling extrapolated where it matters most. Measured Torque Tables are a good fit if you have dyno data across the boost range, since the MAP·RPM table scales the TPS·RPM one. The Maximum MAP value parameter is not the place to declare your boost ceiling — it is reserved and unused by the current firmware.

Verifying the estimate

Nothing in the driver checks whether the torque value is plausible. A badly calibrated estimate is accepted and used exactly like a good one, so verify it before you rely on the transmission.

Route the Engine torque output to a logger or a CAN object, then check it at each of these points:

Operating point Expect If it differs
Any — first look Any changing value A constant −123 means the configuration still selects the removed Fuel Calculation (v1) — see Renamed in 2.1
Warm idle, neutral Roughly 50–100 Nm, steady Outside that, or negative, or jumping — the drag maps or the torque source are wrong
Steady mid-RPM cruise Follows your reference curve in shape and magnitude A constant ratio error is a scaling input (injector size, displacement, cylinder count); a ratio that changes with load is a VE or drag-map problem
Near peak torque, full load Close to the engine's known peak See above — check the scaling inputs first
Overrun, closed throttle Negative — the drag maps are subtracted from every calculated estimate A value stuck at or above zero means the drag maps are empty

Compare against the best reference you have, in this order: the ECU's own internal torque channel, a dyno curve for the same engine, or the manufacturer's published torque curve.

Failure signatures

Signature In the log In the car
Reads high Above the reference curve Clutch pressure is commanded higher than the load needs: abrupt engagement, harsh shift feel, aggressive creep and takeup
Reads low Below the reference curve Clutch capacity is set below the torque actually present: the clutch slips under load, heats, and wears

If the estimate is wrong

The torque value sets clutch pressure. On the standalone drivers that path is direct — the Clutch torque → pressure map converts the torque demand into a pressure — and the OEM gateways hand the value to a factory TCU that sets its own clutch and line pressure from it.

  • Over-reporting commands more pressure than the load requires. The transmission still works; it engages and shifts harshly.
  • Under-reporting sets the clutch capacity below the torque going through it. The clutch slips, and a slipping clutch generates heat and wears. This is the damaging direction — bias a rough estimate high rather than low until it is calibrated.

Two things worth knowing while you diagnose:

  • No fault is raised for an implausible torque value. The estimation block reports no faults of its own, in any method. On the standalone drivers the only automatic detection downstream is the clutch-slip watchdog, which sees the consequence (slip), not the cause.
  • Adaptation interacts with the error. The standalone drivers continuously adapt clutch pressure (microslip adaptation), so corrections learned against a wrong torque signal stay learned. After changing the torque method or its calibration, re-run the adaptation.

Fuel and air arbitration

Fuel + Air (arbitrated) does not use one model — it builds two estimates every cycle and takes the lower of them:

  • The fuel path is the torque the injected fuel could release: pulse width minus dead time, across every configured injector, converted to fuel mass and then to torque through the fuel's energy content.
  • The air path is the torque the trapped air could produce if all of it were burned at the fuel's stoichiometric ratio, scaled by VE. It is a ceiling set by airflow, not a measurement of what is being burned.

The two are compared before the lambda-efficiency map is applied and before the drag maps are subtracted; those corrections are then applied to whichever path won. The choice is re-made from scratch every cycle — there is no blending between the two and no hysteresis — and no configuration bypasses it while v2 is selected.

The observable property is that the estimate can never exceed what the trapped air could burn, nor what the injected fuel could release.

One practical consequence: the VE tables move the air ceiling. When they are not all present the air path runs at 100 % VE, which raises the ceiling and makes the fuel path win more often. Filling them changes which model governs in parts of the range — expect the estimate to shift, and re-verify it afterwards.

Worked example — Fuel + Air (arbitrated)

Engine: · Operating point:

What you enter:

Setting Where the value comes from This engine
Cylinder count Engine
Displacement Engine, in cm³
Rev limiter Your ECU's limit
Injector size Injector data sheet, cm³/min
Nominal injector pressure The pressure that flow rating applies at, kPa
Fuel type Gasoline — density, stoichiometric AFR and energy content are built in, so there is nothing to enter Gasoline
Deadtime mode See dead time
Injector pulse width Live input from the ECU, µs
VE tables Measured, or left empty — see arbitration

What the driver does with them, in order:

  1. Subtracts dead time from the pulse width, then converts the remaining injection time to a fuel mass using the injector size and the fuel's built-in density. Where a Fuel pressure input is assigned and a nominal pressure is set, the flow rating is corrected for actual rail pressure.
  2. Turns that fuel mass into the fuel-path torque using the fuel's built-in energy content and the cylinder count.
  3. Builds the air-path ceiling from displacement, MAP, intake air temperature, VE and the fuel's stoichiometric AFR.
  4. Takes the lower of the two, applies the lambda-efficiency map, and subtracts the drag maps.

Result at that point: Cross-check:

Correction maps

The calculation methods share a set of correction maps. They refine the estimate — an empty map simply applies no correction. Maps are entered as described in Scaling and Maps.

Map Axis Corrects for
Engine speed drag map RPM Engine-braking / friction torque vs RPM
Throttle drag map TPS Pumping losses vs throttle opening
Manifold pressure drag map MAP Pumping losses vs manifold pressure
Lambda efficiency λ Torque loss from rich/lean mixture (needs the Lambda input)

The VE tables (used by Fuel + Air (arbitrated) and Air Model) describe how well the engine fills its cylinders:

Map Axes Meaning
VE Speed-Density MAP × RPM Volumetric efficiency vs load and RPM
VE Alpha-N TPS × RPM Volumetric efficiency vs throttle and RPM
VE Blending MAP (1D) Blend between the two — 100 % = Alpha-N, 0 % = Speed-Density

⚠️ Warning — the VE tables are all-or-nothing. VE is applied only when all three tables are present. Fill Speed-Density and leave Blending empty, and no VE is applied at all — the air model runs at 100 % VE. There is no fault, no warning, and no fallback to the one table you did fill; the only symptom is a torque estimate that reads high.

A 100 % VE also raises the air ceiling, which changes which model governs in Fuel + Air (arbitrated) — see Fuel and air arbitration.

Behaviour at the rev limiter

Set the Rev limiter parameter to your engine's actual limit. While the engine is above it, the value is held at its pre-limiter level and is not allowed to fall below it — otherwise the transmission would see the limiter's ignition and fuel cuts as wild torque swings and react to them mid-shift.

The hold applies to ECU Reported Torque (on the torque value itself) and to the fuel methods (on the injector pulse width). Measured Torque Tables, Internal Calculation and Air Model have no such hold — they follow their inputs straight through the limiter.

If an input drops out

The estimation block does no freshness checking. It reads each input every cycle and uses whatever that input reports, so what happens when a signal dies mid-drive is decided entirely by that input's timeout settings, not by the torque method:

  • UsePrevious holds the last value indefinitely. On a torque-critical signal this is the dangerous choice — the transmission keeps setting clutch pressure for an engine state that no longer exists, and nothing indicates the signal is stale.
  • UseDefault and UseFault substitute a value you choose, which is what makes the loss detectable and predictable.

Set a Timeout and a Timeout mode on every input feeding the estimate. What the estimate then does depends on the method:

What is lost Method The estimate becomes
CAN torque broadcast ECU Reported Torque Whatever the input reports — held, default or fault value
Injector pulse width Fuel methods Fuel mass falls towards zero, so the estimate collapses to the negative drag torque. In v2 the arbitration takes the lower path, so the collapsed fuel path wins outright
MAP Air Model Air mass falls towards zero, and the estimate collapses to the negative drag torque

Both collapses report less torque than the engine is producing, which is the direction that slips clutches — see If the estimate is wrong. Above the rev limiter a lost injector signal is masked instead, because the pulse width is held at its pre-limiter value.

Inputs that were never assigned are different: the driver substitutes a fixed internal value rather than failing.

Unassigned input Substituted with Used by
Intake air temperature 25 °C Throttle + MAP Estimate, Fuel + Air (arbitrated), Air Model
Atmospheric pressure 100 kPa Throttle + MAP Estimate only — which also replaces any live reading outside 80–120 kPa with 100 kPa
Fuel temperature 25 °C Fuel methods
Flex fuel 0 % ethanol Fuel and air methods, for the fuel-property lookups
Fuel pressure 350 kPa The dead-time lookup, when Deadtime mode is User defined