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
- Ignition — the ignition relay closes (wiring).
- Pullback — the motor briefly spins the engine in reverse for
pullback_timms atpullback_levelspeed, to position the crank before cranking. - Cranking — the motor drives the engine forward at
start_levelspeed for up tostart_timms. - Detection — when the engine speed exceeds
start_thresholdrpm, the engine is considered started. - Pause / retry — if the engine does not catch within
start_tim, the controller pauses forpause_timms and retries; aftermax_trialsunsuccessful attempts it locks out inMODE_MAX_TRIALS. - 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.
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/ubminand/driver/limiter/ubmax - Battery currents:
/driver/limiter/ibposand/driver/limiter/ibneg
Debug States (/debug)
| State | Unit | Description |
|---|---|---|
start_stage | - | Starting sequence stage: 0 — init/running, 1 — pullback, 2 — cranking, 3 — pause, 4 — cycle done |
start_timer | ms | Duration timer for the pullback and pause phases |
loaded | ms | Load 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 |