Enabling and Disabling
The system as a whole is enabled and disabled by a start request. While a start request is active, the engine is started and kept running — the ignition relay is closed, failed starts are retried, and the generation follows the demand. When the request is released, the engine stops immediately: the ignition opens and the motor is released.
Start request sources
The request can come from a GPIO switch, from the CAN control message, or be permanently active (auto-start on power-up). The start_sel parameter selects which sources are honored; when both are selected they are combined with AND — both must request the start, and either one can stop the engine.
start_sel
1— CAN control message only2— GPIO input (IN_gen) only3— both, combined with AND
IN_gen
Selects the GPIO input for the start switch (wiring).
0— no input, the request is permanently active: the engine starts automatically when the controller powers up16–20— GDIN0 through GDIN432–39— din1 through din8255— no automatic start; the engine is started only by thegencommand
Each controller evaluates its own inputs — the start request is not forwarded between the peers. With GPIO in the start selection, the start switch must therefore be wired to both controllers (and IN_gen configured on both); a controller without the switch signal stays stopped. The CAN control message needs no such duplication — it is a broadcast that both controllers receive. See wiring.
Enabling from CAN
With CAN selected as a start source, the start request is bit 0 of the control message 0x560. The message must be sent periodically: it expires after /can/can_ctrl_tim (1 s by default), and by default an expired request stops the engine — see Multi-Master Operation for the timeout parameters and the high-availability option of keeping the last command instead.
Note that the charging limitation in the same message applies always, even when CAN is not a selected start source — start_sel gates only the starting.
Enabled is not the same as generating
Enabling runs the engine; how hard it generates is decided separately by the generation demand. With the system enabled and the demand at zero — for example a start request with charging limit 0 — the engine idles unloaded (MODE_IDLE, the motor freewheels). Raising the demand ramps the load up; dropping it to zero ramps the load away and returns to idle.
This is how a host keeps the ICE running while drawing no power, without stopping and restarting it.
Releasing the start request stops the engine immediately, at whatever load it currently runs. For a gentle shutdown, first drop the demand to zero, let the rampdown finish (the engine reaches idle), and then release the request.
There is no arming interlock: a start request that is already active is honored as soon as nothing blocks it. Powering up with the request active starts the engine, and the engine restarts automatically after a transient fault clears. Only the MODE_OVERVOLTAGE and MODE_MAX_TRIALS lockouts require the request to be released before a new start.