Skip to main content
Firmware Stable

Loading

Once the engine runs, IGNIS decides how hard to load it as a generator. The loading always follows the generation demand and applies it gradually, so the engine is never load-stepped.

The generation demand

The demand (0–100 %) is the combination of everything that limits the generation, evaluated continuously:

demand = min( host charging limit, battery limits )
  • The host charging limit is the cmd field of the CAN control message (100 % when no host is connected).
  • The battery limits come from the battery module — the charging current limiter and the battery voltage limiter.

The followed demand is visible in the /gen_demand state. During a rampdown and at idle it holds the last nonzero value — the ramp, not the demand collapse, performs the unloading.

Typical use case — a standalone regulated DC source

The battery module can take over the primary regulation: set the voltage limiter (/battery/ubmax) to the desired system voltage and pair the generator with a small DC battery or a supercapacitor to stabilize the bus. The demand then regulates itself — when the host system draws power, the bus voltage sags and the limiter releases more generation; when the draw stops, the voltage rises and the limiter winds the generation back down toward idle.

The result is a genset that dynamically follows the power draw of the host system and behaves as a standalone, regulated DC voltage source — no active cmd management by the host is required.

Loading behavior

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 stays there (MODE_GENERATING).
  • Idle — with zero demand the engine idles unloaded: the motor freewheels and applies no torque at all (MODE_IDLE). This is how an ICE is kept running while no power is needed — command start with cmd = 0.
  • Ramp down — when the demand drops to zero during generation, the load ramps down over ramp_tim at the last demanded level (MODE_RAMPDOWN) and ends in idle. If the demand returns mid-way, the ramp reverses from its current position — no load step in either direction.

The capability reported in the system status — the torque scale the system is ready to sink at the moment — follows this behavior exactly: zero at idle and warmup, rising with the ramp up, descending with the ramp down.

The loading curve

Between the demand and the motor command sits a configurable loading curve — an 11-point table mapping demand 0–100 % to the generator loading command 0–100 %, with linear interpolation. Use it to match the generator loading to the torque characteristics of your engine (the default is a straight line). A low-pass filter (gen_cmd_k) smooths the command against demand steps.

info

In the current loading mode (gen_cmd_mode = 8), keep the first table point at 0 so that a near-zero demand stays effectively unloaded. In the voltage loading mode (4) a nonzero first point is valid and useful: the voltage command clamps the engine speed from the top, so at zero load it sinks no torque until the engine runs up against it.

Parameters (/loading)

load_table

The loading curve: 11 equidistant points, demand 0–100 % → loading command 0–100 %, linear interpolation.

gen_cmd_k [1/ms]

Low-pass filter constant of the loading command. The default 0.01 corresponds to a time constant of roughly 100 ms.

gen_cmd_mode

Drive mode used for the generator loading:

  • 8 — current loading; suitable for four-stroke engines with a governor (default)
  • 4 — voltage loading; suitable for two-stroke engines

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.