Skip to main content
Firmware Stable

Starting

The IGNIS application starts the engine automatically with a pullback, cranking, pause and retry cycle. The sequence runs whenever the system is enabled and the engine is not yet running. The sequence parameters live in the /starting directory.

Starting sequence

  1. Ignition — the ignition relay closes (wiring).
  2. Pullback — the motor briefly spins the engine in reverse for pullback_tim ms at pullback_level speed, to position the crank before cranking.
  3. Cranking — the motor drives the engine forward at start_level speed for up to start_tim ms.
  4. Detection — when the engine speed exceeds start_threshold rpm, the engine is considered started.
  5. Pause / retry — if the engine does not catch within start_tim, the controller pauses for pause_tim ms and retries; after max_trials unsuccessful attempts it locks out in MODE_MAX_TRIALS.
  6. Warmup — after a successful start the engine warms up with no generation load. The starter assist stays engaged during the warmup: it delivers no torque while the engine runs above the cranking speed, but catches the engine if it chokes right after the start.

What happens after the warmup depends on the generation demand — see Loading.

In a multi-master system the two motors on the common shaft perform the sequence in lockstep — the leader times the sequence and the other controller follows it exactly.

Parameters (/starting)

start_threshold [rpm]

Engine speed at which the engine is considered started. Set it above the cranking speed and below the engine's running speed. The detection has a built-in hysteresis: a started engine is considered stopped again only after staying below the threshold for about hyst_tim.

start_level

Motor speed command during cranking, relative (0 to 1).

pullback_level

Motor speed command during pullback, relative (-1 to 0).

max_trials

Maximum number of start attempts. 0 means unlimited attempts.

pullback_tim [ms]

Duration of the pullback phase. 0 disables the pullback.

start_tim [ms]

Maximum cranking time of one attempt. After this time a pause is initiated and a new attempt begins.

pause_tim [ms]

Pause after an unsuccessful attempt.

hyst_tim [ms]

Overvoltage shutdown window: if an uncontrolled generation hazard persists for this time, the engine is killed and latched (MODE_OVERVOLTAGE — engine overspeed, or a battery unable to accept the charge). The hazard is inferred from the generated current escaping regulation while pushed back into the DC bus, the driver's overvoltage/range protections and the power-stage temperature, accumulating with an attack/decay asymmetry so that an intermittent hazard (the bus pumped in bursts) also reaches the kill instead of averaging out. The latch survives transient controller errors and propagates to the peer controller — only releasing the start request resets it. The same time also acts as the started-detection hysteresis.

tip

To tune the starter and generator currents and voltages, check the driver settings:

  • Motor phase starting current: /driver/iref
  • Motor phase running current: /driver/irefr
  • Battery voltage window: /driver/limiter/ubmin and /driver/limiter/ubmax
  • Battery currents: /driver/limiter/ibpos and /driver/limiter/ibneg

Debug States (/debug)

StateUnitDescription
start_stage-Starting sequence stage: 0 — init/running, 1 — pullback, 2 — cranking, 3 — pause, 4 — cycle done
start_timermsDuration timer for the pullback and pause phases
loadedmsLoad envelope position — warmup progress, then the load ramp (see Loading)
started-Engine start detector. Positive value means the engine is running
toohigh-Overvoltage detector accumulator: +4/ms while the hazard is present, −1/ms otherwise; a driver protection flag or power-stage overtemperature saturates it; kill at 4 × hyst_tim
trial-Number of start attempts of the current cycle