Shift Fork Control

This guide covers setup and calibration of the hydraulically actuated Shift Forks used to control gear selection in Dual Clutch Transmissions (DCT).

Shift Fork Log Shift Fork Log


Concepts

Axes

A DCT has two input shafts (“axes”), each carrying its own clutch. While one axis is transmitting drive, the other is free to pre-select the next gear so that the shift itself is just a clutch hand-off, with no torque interruption. Every gear (including Reverse) belongs to one of these two axes:

ClutchAxisTypical Gears
AAEven gears
BBOdd gears

The active axis is whichever axis currently has a gear engaged and is transmitting drive.
The inactive axis is free to move its fork(s) to pre-select the next gear.

Clutch Axes

The TCM will always assume that the clutch and axis are a matched pair:

  • Clutch A is on Axis A
  • Clutch B is on Axis B

Shift Forks

A shift fork is a physical selector that can sit in one of three positions (“slots”):

SlotMeaning
LowEngages the fork’s “Low” gear
CentreNeutral (no gear engaged on that fork)
HighEngages the fork’s “High” gear

Each fork belongs to one axis (or, for a shared Reverse fork, both axes) and is responsible for up to two gears, one on its Low side and one on its High side.
Up to 8 forks and 8 shift solenoids are supported.

While driving:

  • The active axis must already have its current gear’s fork engaged (all other forks on that axis in Neutral).
  • The inactive axis may have, at most, the pre-selected next gear’s fork engaged (all others in Neutral).

Only one fork is ever moved at a time. A fork on the active axis is never moved unless it’s explicitly required (e.g. a shift out of Neutral/Park), and a fork that needs to return to Neutral is always preferred over one that’s about to engage a new gear, so the way is cleared before a new gear goes in.

Fork Position Sensing

Each fork has a position sensor that is scaled and calibrated to report the fork’s measured position in millimeters. Some forks also have a secondary tracking sensor used purely for cross-checking / diagnostics.

Fork Position 1-8 inputs are configured in Input Setup.

The fork’s calibrated Low / Centre / High positions and tolerance bands are what translate this raw position into a slot (Low / Centre / High / Moving).


Fork Management

At all times the shift fork system is actively performing the following tasks:

  • Each fork’s target is set:
    • Active-axis forks target the current gear.
    • Inactive-axis forks target the pre-selected gear.
    • Everything else targets Neutral.
  • Each fork’s own position/slot state is updated.
  • Axis “binding” is detected if more than one fork on an axis reports being in gear at once.
  • An axis fault is raised if any fork on that axis is in a position error state.

Fork Movement

  • If a fork is currently moving, its movement is monitored until complete.
  • Otherwise, the next fork that needs to move is found (inactive axis first, unless an active-axis move is explicitly allowed) and its movement begins.
  • The physical shift solenoids are driven to move the current fork, or to hold the idle/default solenoid pattern when nothing is moving.
  • If Axis Pressure Control solenoids are in use, their pressure is modulated to control fork movement speed.

Shift Procedure

  1. The currently engaged gear and its axis are marked as active.
  2. The Preselection system predicts the next shift direction (up or down) and selects the next gear on the inactive axis.
  3. On a shift request, the next gear’s fork is determined and pre-selected (if it’s not already) on the inactive axis.
  4. Once the pre-selected gear’s axis is ready (fork in target slot, no axis error), the clutch hand-off for the shift can proceed.
  5. After the shift completes, the new gear’s axis is marked as active, the offgoing axis is marked inactive.
  6. The Preselection system resumes prediction of the next shift on the newly inactive axis.

Configuration & Calibration

Shift Fork Setup (Global)

These apply to whichever fork is currently moving, regardless of which fork it is.

SettingDescription
Shift Fork Stable Velocity (+/-)Fork velocity threshold (± mm/s). Once a fork is inside its target slot’s tolerance band and below this velocity, its “stable” timer starts. Set to 0 to disable the velocity check (stability then depends only on being in-slot)
Shift Fork Stable TimeTime (ms) the fork must remain in-slot and stable before the move is considered complete

Shift Fork Setup (Per-Fork)

Each fork (numbered 1–8) is independent and must be configured individually. Below, “#” stands for the fork number, eg: “Shift Fork 3 Axis”.

SettingDescription
Shift Fork # AxisParent axis: Disabled / Axis A / Axis B / Both (shared, e.g. Reverse)
Shift Fork # LabelFree-text label for the fork (shown in the tuning software UI)
Shift Fork # Position L GearGear engaged when the fork is in its Low slot. OFF = slot unused.
Shift Fork # Position H GearGear engaged when the fork is in its High slot. OFF = slot unused.
Shift Fork # Position LTarget fork position for the Low slot (mm)
Shift Fork # CentreTarget fork position for the Centre (Neutral) slot (mm)
Shift Fork # Position HTarget fork position for the High slot (mm)
Shift Fork # Position L Tolerance (+/-)Position tolerance (± band) around the Low slot (mm)
Shift Fork # Centre Tolerance (+/-)Position tolerance (± band) around the Centre slot (mm)
Shift Fork # Position H Tolerance (+/-)Position tolerance (± band) around the High slot (mm)
Shift Fork # Error DetectionEnables position error detection; bit 1 auto-clears the error once the fork returns to its target slot
Shift Fork # Error Auto ClearAuto-clears the error once the fork returns to its target slot
Shift Fork # Error DelayTime the fork may be out of its target slot before a position fault is raised (0–25.0 s)
Shift Fork # TestBench/service test override: Off / Force Low, / Force Centre, / Force High. Only takes effect while the requested gear is Neutral or Park

Notes:

  • The Low and High slot positions do not need to be numerically low/high — the firmware automatically detects whether the fork’s travel is inverted (i.e. the Low position is a larger number than Centre) and corrects the shift-direction logic accordingly.
  • Whichever gear ends up on the Low slot vs. High slot is purely a function of fork travel direction — set the Low/High gear assignments to match the physical gear each end of travel actually engages.
  • A fork does not need both slots populated — a single-sided fork (e.g. Reverse-only) should leave the unused Low/High gear assignment at 0.

Shift Solenoid Selection

Which solenoids are energised to move a fork in a direction is controlled by the solenoid select tables.

Shift Solenoid Select Shift Solenoid Select

TableDescription
Shift Fork # Positive Solenoid SelectSelects which shift solenoid(s) (1–8) are energised to move the fork in the positive position direction (+ mm)
Shift Fork # Negative Solenoid SelectSelects which shift solenoid(s) (1–8) are energised to to move the fork in the negative position direction (- mm)
Shift Fork Idle Solenoid SelectShift solenoid(s) held on when no fork is currently moving (idle hold pattern)
Default Shift Solenoid SelectShift solenoid(s) always added to the active pattern in addition to the moving/idle pattern, when the default overlay is enabled
Default Shift Solenoid EnableEnables/disables the default solenoid overlay above (non-zero = enabled)
Important

The solenoid select table’s X-axes must be Shift Solenoid #. Multiple solenoids can be selected at once.

Per-Fork Position Sensor Calibration

Shift Fork n Position is reported in mm. Each fork has a position sensor that can be calibrated in Input Config > Transmission Inputs > Shift Fork Positions.
It is critical that these position sensor inputs are assigned and calibrated correctly.

Fork Movement Pressure Control

While a fork is moving, its physical movement can optionally be driven by a closed-loop position PID acting on hydraulic pressure (rather than a fixed pressure). The need for pressure control will depend on the transmission design.
When enabled, the Axis Pressure solenoids are controlled to achieve the desired pressure.

Setting / TableDescription
Axis Pressure OverrideEnables the axis pressure override: while set, the axis pressure of whichever axis is physically moving is driven by the fork-movement PID instead of the normal active/inactive axis pressure targets
Fork Movement Pressure BaseBase (feed-forward) pressure added ahead of the PID output (Bar)
Fork Movement Pressure Proportional GainPID proportional gain for fork movement pressure control
Fork Movement Pressure Integral GainPID integral gain for fork movement pressure control
Fork Movement Pressure Derivative GainPID derivative gain for fork movement pressure control
Axis Pressure Override Integral Min / MaxPID integral clamp (Bar)
Axis Pressure Override Min / MaxOutput pressure clamp (final PID output is constrained to this range) (Bar)

Torque Limiting During Fork Movement

Active Axis Fork Movement Torque Limit can be applied applied while a fork on the currently active axis is moving (e.g. Shifts out of Neutral/Park, where the axis being engaged is also the “active” axis).


Errors & Diagnostics

Per-Fork Position Error

If a fork’s error-detection is enabled, a fork that fails to reach its target slot within its Error Delay (or whose position sensor reports a fault) raises a Fork # Movement fault and enters an internal error state.

From the error state, the firmware automatically retries the move (up to 3 attempts, 1 second apart). If the Config auto-clear bit is enabled, the error clears automatically once the fork successfully reaches its target slot again (and the position sensor is healthy) — this is normally only allowed to happen when the fork’s target is Centre (Neutral), so a fork always has to prove it can get back to a safe state before being trusted again.

Using the tuning software’s “Clear All Codes” action also resets every fork’s retry count, in addition to clearing the fault codes themselves — so a fork that had exhausted its retries gets a fresh set of attempts on its next movement, rather than immediately re-latching into a fault.

Axis errors

Each axis is also monitored as a whole:

FaultCause
Axis A Bound / Axis B BoundMore than one fork on that axis reports being in gear simultaneously — i.e. the axis is mechanically bound between two gears
Axis A Fault / Axis B FaultAt least one fork on that axis is in a position error state

While an axis is in fault, no fork on that axis will be moved until the fault clears.

See Runtime Channels for the full list. Each fork’s Status and Position Error, and the Moving Shift Fork channel, are usually the first things worth logging when diagnosing a shift fork issue.


Runtime Channels

Per-Fork Channels (# = fork number, 1–8):

ChannelDescription
Shift Fork # PositionMeasured fork position, mm
Shift Fork # Position TargetTarget fork position, mm
Shift Fork # Position ErrorPosition error (target − measured), mm
Shift Fork # VelocityMeasured fork velocity, mm/s
Shift Fork # Statussee Shift Fork Status enumeration
Shift Fork # TrackingSecondary/tracking position sensor reading (diagnostic only)

System-Wide Channels:

ChannelDescription
Selected Gear AGear currently engaged on Axis A
Selected Gear BGear currently engaged on Axis B
Active Gear Shift ForkFork responsible for the currently active (engaged) gear
Preselected Gear Shift ForkFork responsible for the pre-selected next gear
Moving Shift ForkFork currently moving
Active Shift Fork PositionPosition of whichever fork is currently moving
Active Shift Fork Position TargetTarget position of whichever fork is currently moving
Active Shift Fork Position ErrorPosition error of whichever fork is currently moving
Active Axis Pressure TargetActive axis clutch pressure target, Bar
Inactive Axis Pressure TargetInactive axis clutch pressure target, Bar
Active Axis Fork Movement Torque LimitTorque limit currently applied due to active-axis fork movement
Shift Fork Movement PressureFork movement pressure demand output (PID + base), Bar
Shift Fork Movement Pressure BaseFork movement pressure base/feed-forward term
Shift Fork Movement Pressure P GainFork movement pressure PID proportional term
Shift Fork Movement Pressure I GainFork movement pressure PID integral term
Shift Fork Movement Pressure D GainFork movement pressure PID derivative term

Calibration Procedure

  1. Enable each fork — set the Axis setting for every physical fork fitted (Axis A, B, or Both for a shared Reverse fork). Leave unused fork slots OFF.

  2. Wire up and calibrate position sensors first, via the standard analog input mapping/translation tools, so that each fork’s Position channel reads a correctly-scaled value (mm) across the whole range of travel.

  3. Set tolerance bands (Low/Centre/High Tolerance) tight enough to confirm the dog teeth/synchro are actually engaged, but loose enough to tolerate normal sensor noise and mechanical play.

  4. Assign gears to each slot via Position L Gear / Position H Gear. You may have to put some educated guesses into the positions initially.

  5. Assign shift solenoids per fork (Up/Down Shift Solenoid Select) and confirm direction — command a move with Test mode and verify the fork moves the correct way and its Status reports moving in the expected direction, then settles into the correct slot.

  6. Set idle/default solenoid patterns (Idle Solenoid Select, Default Select / Enable) as required by the actuator hardware.

  7. Find and record the three slot positions for each fork with the vehicle safely supported and the driveline free to move by hand, or using the fork’s Test setting to command it to each slot in turn (only works while the requested gear is Neutral or Park):

    • Force to Low, record the settled Position reading into Position L.
    • Force to Centre, record Centre position.
    • Force to High, record Position H.
    • Set Test back to Off when done.
  8. Tune move-complete detection — Stable Velocity and Stable Time — so a fork isn’t reported as “done” while still settling, but without adding unnecessary delay to every shift.

  9. Tune fork movement pressure (if using closed-loop pressure control): set the Movement Pressure Base and PID gains, and the Pressure Override Min/Max and Integral Min/Max clamps, then enable Shift Actuation Config bit 0 if pressure-based fork actuation is desired instead of fixed axis pressure targets.

  10. Set error detection last, once movement is proven reliable. Set each fork’s Error detect / Auto-Clear and Error Delay, generous enough to allow for normal shift timing but tight enough to catch a stuck fork.

  11. Verify full shift sequences in all gears, both directions, watching the Active Gear Shift Fork, Preselected Gear Shift Fork and Moving Shift Fork channels. Watch each fork’s Status & Position, for consistent, movement and engagement. Confirm no Axis Bound/Axis Fault faults occur across the full gear range.