Loading
Once the engine runs, IGNIS loads it as a generator according to the generation demand. The load is always applied gradually, so the engine is never load-stepped. How the engine and the generators share the work depends on the engine: see Engine configurations.
The generation demand
The demand (0–100 %) is how much generation is requested at the moment. The most restrictive of these sets it:
- the host charging limit: the
cmdfield of the CAN control message, 100 % when no host is connected, - the DC limits of the DC regulation: the bus voltage, the total generation current and the battery charging current.
The demand being followed is visible in the /gen_demand state.
Loading sequence
demand > 0: warmup ──▶ ramp up ──▶ generating ──┐
demand = 0: warmup ──▶ idle ◀── ramp down ◀────┘
- Warmup: after the engine starts, it runs with no generation load for
warmup_tim. The starter assist stays engaged and catches the engine if it chokes (Starting). - Ramp up: with a nonzero demand, the load rises from zero to the demanded level over
ramp_tim(MODE_RAMPUP), then follows the demand (MODE_GENERATING). - Idle: with zero demand the engine idles unloaded: the motor freewheels and applies no torque (
MODE_IDLE). This keeps the engine running while no power is needed: command a start withcmd = 0. - Ramp down: when the demand drops to zero during generation, the load ramps down over
ramp_timfrom the last demanded level (MODE_RAMPDOWN) and ends in idle. If the demand returns midway, the ramp reverses from where it is, so there is no load step in either direction.
The generation capability reported in the system status to guide the ICE throttle follows the same sequence: zero at idle and warmup, rising with the ramp up, descending with the ramp down. Near the generators' current limit it descends to zero across the torque_margin, so a throttle following it backs off before the generators saturate. It is visible in the /loading/gen_capability state on every controller.
Engine configurations
Generating means the engine and the generators settle on a common speed and torque. Choose the configuration by what holds the engine speed:
| Engine | Load behaves like | load_cmd_mode | load_cmd_k | Engine speed held by | The demand sets |
|---|---|---|---|---|---|
| governed | torque sink | 8 | positive | the ECU governor | the braking torque |
| free-running | speed clamp | 4 | positive | IGNIS | the engine speed |
| free-running | propeller | 8 | 0 | the balance of engine and load torque | idle or loading, and the capability |
| free-running | variable-pitch propeller | 8 | negative | the balance of engine and load torque | the pitch: the load at a given speed |
Governed engine: torque sink
The ECU governor holds the engine speed, and IGNIS sets the braking torque from the demand through the loading curve. Typical use: a governed four-stroke genset.
Free-running engine: speed clamp
IGNIS holds the engine at a speed given by the demand through the loading curve, and the throttle decides the torque, and with it the power. A constant curve gives a fixed working speed. Typical use: a two-stroke held at a fixed working speed.
A speed that follows the demand trades rotational energy with the DC bus at every change: speeding the engine up draws from the bus, slowing it down feeds the bus. A constant curve avoids these swings.
Free-running engine: propeller load
The load rises with the engine speed along the loading curve, like a propeller: more throttle, higher speed, more load, until the engine and load torques balance. The throttle moves this operating point. The demand only switches between idle and loading and sets the capability, which a following throttle uses to unload the system. Typical use: a governor-less engine (typically a two-stroke) with an ECU throttle following the capability, or a hand throttle.
With a negative load_cmd_k the demand also scales the load line, like a variable pitch. The DC limits then reduce the load directly, even when the host does not follow the capability, which suits a simple charger-style integration. Keep in mind that a free-running engine revs up when its load drops, so the generated power does not necessarily drop with it: prefer 0 with a capability-following throttle where possible.
The propeller load line is scaled to the controller's speed range. While /driver/uref = 0, that range follows the bus voltage, so the load line shifts slightly with the battery state: a fuller battery unloads it. Set /driver/uref to the nominal system voltage to pin the load line to fixed engine speeds.
In every configuration, the ICE must do at least one of the two: follow the capability, reducing the throttle when the reported capability drops because the generation can no longer be absorbed, or guarantee by design that its speed can never exceed the shaft speed at which the generation becomes uncontrollable. Above that speed the generator's back-EMF exceeds what the controller can counteract, and the regeneration physically cannot be limited. An engine that honors neither will sooner or later push the system into the overvoltage protection: the engine is killed and latched on both controllers until the start request is released.
Parameters (/loading)
load_curve
The loading curve: 11 equidistant points mapping the input, the demand or the relative engine speed for the propeller load, from 0 to 100 % to the loading command, with linear interpolation in between. Use it to match the loading to the torque characteristics of your engine, or to shape the propeller curve.
- With the torque sink, keep the first point at
0, so that a near-zero demand stays effectively unloaded. - With the speed clamp, a nonzero first point is valid and useful: the clamp sinks no torque until the engine reaches the clamp speed.
- With the propeller load, keep the low end near zero up to the engine's idle speed, so a loaded engine can still accelerate from idle.
Drag the points to shape the curve, then write it with the Set button:
load_cmd_k [1/ms]
Selects the engine configuration and sets how quickly the loading follows a change of the demand:
- positive: the demand sets the loading (torque sink or speed clamp),
0: the propeller load line,- negative: the propeller load line scaled by the demand.
A larger magnitude follows demand changes faster; a smaller one smooths demand steps.
load_cmd_mode
Drive mode of the generator loading:
8: torque loading. IGNIS sets the braking torque: the torque sink and the propeller load.4: speed loading. IGNIS sets the engine speed and the engine sets the torque: the speed clamp. Do not combine it with the propeller load line, which would make the speed depend on itself.
ramp_tim [ms]
Duration of the loading ramp, both up to the full load and down to idle.
warmup_tim [ms]
No-load warmup after the engine start.
torque_margin
How early the reported capability backs off as the generators approach their current limit (/driver/irefr): the capability descends to zero across this top fraction of the limit. For example 0.1 starts the descent at 90 % of the limit; 0 disables it.
With the torque sink, keep the top of the load_curve below 1 − torque_margin, otherwise a full demand reduces the capability by itself. With the propeller load, the margin backs the throttle off as the engine speed pushes the load toward the top of the curve.