Skip to main content
Firmware Stable

Drive modes

siliXcon controllers offer a variety of fundamental drive modes - the low-level control strategies of the motor. If you come from a traditional FOC system, mode 2 (current) or mode 6 (torque) is likely what you are used to, possibly combined with the closed speed loop (mode flag 16). The other modes give you the same low-level access to voltage-, brake- and battery-side behaviours that would otherwise need an outer loop. Unlike the closed-loop approach, all of them are implemented at a fundamental level, enabling the highest possible dynamic response without increasing the system order. Drive modes have been designed to make AC motors behave the way a brushed DC motor would: current is proportional to torque and voltage is proportional to speed.

tip

This is shared across all ESCx families and all algorithms, although some modes might not be implemented in specific cases. The diagrams show the VECTOR algorithm; in BLDC the modes noted below as reducing to another mode look like that mode, and mode 15 is limited by ipeak/ipbrake instead of irefr.

Each mode is drawn in the U–I plane below - the DC analogy above, with speed (voltage) along the horizontal axis and torque (current) along the vertical one; the legend explains the symbols. Two conventions to keep in mind: the frame and the dotted operating line are drawn for one positive command with the motor spinning in the commanded direction - a negative command mirrors them through the origin (mode 7 is the exception: there the sign selects motoring or recuperation). And the plane is independent of the flux (d-axis) current control - field weakening, MTPA and the battery current compensator extend the speed and torque ranges a mode can reach without changing how the mode behaves.

How to read the drive mode diagramsmotoringforwardbrakingreverse spinmotoringreversebrakingforward spinUIurefirefirefrirefirefr
  • Bold axis — the quantity cmd drives (U voltage ≈ speed, I current ≈ torque)
  • Double-headed axis — the magnitude of cmd applies in both directions; its sign only decides which spin direction is capped by iref and which by irefr (written iref(r))
  • Motoring quadrants the mode can enter (energy flows into the motor)
  • Braking quadrants the mode can enter (energy flows back into the battery)
  • Quadrant the mode never enters
  • Operating line — where the working point sits as the load varies, for one positive command with the motor spinning in the commanded direction (a negative command mirrors it through the origin)
  • Zero command makes the motor freewheel
  • Frame — the reference envelope for that command. Each quadrant reaches up to the current cap that applies there: iref for the drive leg, irefr for the brake leg. The shallower drawing is only a cue that the brake cap can differ — with irefr unset both legs equal iref and the frame is square
U–I planemodenamecmd reference / capclass (driver 6+)Description
Drive mode 0 in the U–I planeUI0freewheel (FRW)Motor freewheels, preferably by disconnecting from the drive. AC current can be present due to automatic field weakening, but the torque is never generated. Motor neither accelerates, nor brakes. If configured, DC current is always zero (in case of field weakening, motor generates just enough energy to field weaken itself).
Drive mode 1 in the U–I planeUIurefirefirefrirefirefr1voltage (VLT)urefavail / rated by flagBy setting the specified voltage, a stable speed of the shaft is usually achieved. The torque (and required current) is determined by the load. Torque (current) can be only limited (not controlled) by the user. Motor can accelerate and brake.
Drive mode 2 in the U–I planeUIiref2current (CRT)irefavail / rated by flagBy setting the specified current, a stable torque of the motor is usually achieved. The speed is determined by the load and could be only limited (not controlled). Motor can accelerate and brake.
Drive mode 3 in the U–I planeUIurefirefiref3voltage + freewheel (VLF)urefavail / rated by flagBy setting the specified voltage, a stable speed of the motor is usually achieved. The torque (and required current) is determined by the load. Torque (current) can be only limited (not controlled) by the user. Motor can accelerate but can not brake, unless the sign of the required voltage is changed. Zero command makes the motor freewheel.
Drive mode 4 in the U–I planeUIurefirefrirefr4voltage brake (VLB)uref
irefr is used as maximum braking current.
avail / rated by flagThis mode is the inversion of the mode 3. The motor freewheels from zero RPM until it reaches the specified voltage. After that, current starts to flow into the battery and the motor starts to brake. Motor can not accelerate in this mode, only brake; the braking current is capped at irefr. Zero command makes the motor freewheel.
Drive mode 5 in the U–I planeUIiref|Is|5stator current (SCR)irefratedSimilar to mode 2, but the total amplitude of stator current is demanded (not only the Q component as in mode 2). (in BLDC, this mode reduces to mode 2)
Drive mode 6 in the U–I planeUIirefNm6torque (TRQ)irefratedSimilar to mode 2, but the driver controls the real shaft torque with a fixed cmd-to-torque map: the same cmd gives the same torque at every speed, and the request is clipped at the actual reachable ceiling (field weakening, limiters). From driver 6, set dxc to the true MTPA d-fraction to reach the full torque. (in BLDC, this mode reduces to mode 2)
Drive mode 7 in the U–I planeUIIdc7DC current (DCR)irefSimilar to mode 2, but the battery (DC) current is demanded (not the Q component as in mode 2).
In this mode, the speed direction is not controlled by the cmd sign. Negative cmd means a request for recuperation current.
This mode stands a bit apart: it is realized by the battery current compensator, the request is cmd × iref capped at iref × tcc, and with the compensator disabled (tcc = 0) the motor just freewheels.
Drive mode 8 in the U–I planeUIiref(r)iref(r)8brake (BRK)|cmd| × iref / irefr (sign selects)avail / rated by flagBrake with constant current. Similar to mode 2, but current has always the direction to generate brake torque. The motor in this mode never accelerates. Near zero speed the brake current follows the short-circuit ramp (as in mode 15) until it reaches the commanded level. The magnitude of cmd sets the brake current for both spin directions; its sign does not pick a direction, it selects which spin direction is braked by the drive leg (iref) and which by the brake leg (irefr) - a positive cmd brakes reverse spin with iref and forward spin with irefr, a negative cmd swaps the two.
Drive mode 9 in the U–I planeUIiref(r)iref(r)Nm9brake torque (BRT)|cmd| × iref / irefr (sign selects)ratedSimilar to mode 8, but real torque is calculated from motor parameters. Real torque (not current) is regulated as in mode 6, with a bidirectional (regen) brake leg. (in BLDC, this mode reduces to mode 8)
Drive mode 10 in the U–I planeUIirefiref10brake + freewheel (BRF)irefavailUnidirectional brake with constant current (after the same low-speed ramp as mode 8), using the drive leg (iref) only. The brake torque has the sign of cmd: a positive cmd brakes a motor spinning in reverse and lets it freewheel when spinning forward; a negative cmd swaps the two. Zero command makes the motor freewheel. Obsolete from driver 6 - kept for compatibility.
Drive mode 15 in the U–I planeUIirefrirefrno cmd15brake short (BRS)irefr
No scaling by cmd.
availShort-circuit / speed-dependent brake. Brake torque is proportional to motor speed. The higher speed, the higher brake torque. The motor in this mode never accelerates. Unlike the brake modes above, this one was designed to work without rotor position information: it does not need to track the rotor, which silences the residual switching noise and makes it a silent standby brake. In BLDC, the current is limited only by the ipeak/ipbrake parameters. In VECTOR, the short circuit current is limited to irefr in both axes.
cmd input is ignored in this mode.

*If you request a non-existing mode, the driver will yield into freewheel (mode 0).

**The class column is the delivery policy of the mode - how cmd, the reference and the soft limits act (driver 6+, see the Delivery policy section below). In avail, the command and the limits scale the reference; in rated, the command maps to a fixed scale and the reference (with the limits) is the cap it is clipped at. Modes marked by flag switch from avail to rated with CMDFLAG_RATED; modes marked — stand outside the policy system (freewheel takes no command, battery current has its own regulation).

***Reversing the command sign of a voltage mode while the motor still spins brakes it through the drive leg (iref), not the brake leg (irefr) - let it stop first if the irefr cap matters.

warning
  • (Driver 5 and below) The torque mode (6) and brake torque mode (9) tries to linearize the torque curve and can reduce the maximal current if the fwc or dxc is set (it simply reserves some available current for the d-axis). So if you want to achieve the maximal torque use the current mode (2).
New in driver 6

The torque modes (6/9) deliver the full available torque also at low speed - the d-axis budget is no longer reserved upfront. Additionally, the soft limits (imult, limiters) now cap the torque instead of rescaling the command map, so the cmd-to-torque mapping stays fixed while a limiter acts (see the delivery policy below). To gain the full low-speed torque, set dxc to the true MTPA d-fraction of your motor (0 for a surface PM motor).

Delivery policy — AVAILABLE vs RATED

Driver v6

The RATED policy and the CMDFLAG_RATED flag described in this section are available only from driver v6.

Beyond the mode selection, a drive command follows one of two delivery policies (the class of the mode). The policy defines how the cmd input and the soft limits (imult, limit, …) act on the request.

PolicyHow cmd and limits act
AVAILABLE (avail in the table)cmd and the limits scale the live current headroom linearly — you get a fraction of what is available right now.
RATED (rated in the table)cmd selects a fraction of a fixed rated reference; the limits and the stator circle cap (clamp) it, they do not rescale — you get the commanded value, clipped at the ceiling.

The class column of the modes table above shows which policy each mode uses. Modes marked by flag default to AVAILABLE and switch to RATED with the CMDFLAG_RATED command flag (see Command flags below). The remaining modes have a fixed policy and ignore the flag.

note

The torque modes (6, 9) are always RATED: cmd = 1 corresponds to the rated torque torquefabsmax [Nm], while the reachable ceiling torquefmax reflects field weakening and every active limiter. The delivered torque is min(cmd × torquefabsmax, torquefmax) — the cmd → Nm map never moves when a limiter acts.

Command flags

The mode value carries the mode number in its low bits; the upper bits are command flags that extend the behavior. Add the flag value(s) to the mode number.

BitFlagFunction
4Speed loopEngage the PID speed loop on top of the mode
5Position loopEngage the PID position loop on top of the mode
6Keep sign (CMDFLAG_KEEPSIGN)Speed loop holds the sign of the demanded speed (driver 6+)
7Rated policy (CMDFLAG_RATED)Switch the delivery policy to RATED (driver 6+)

Speed and position loop (bits 4, 5)

Adding these bits to the standard modes enables the closed-loop extension ("extended modes"): the PID loop engages on top of the drive mode.

warning

Due to memory constraints, extended modes are not always available. If you do not see folder /driver/pid_speed or /driver/pid_position, the extended modes are not present in your firmware.

More about the extended modes

Keep sign — CMDFLAG_KEEPSIGN (bit 6) (driver 6+)

The speed loop output keeps the sign of the demanded speed - the governor can command acceleration but never a reversal. Note it constrains the command, not the torque: pair it with a current/torque mode or voltage + freewheel (3) to actually coast; plain voltage mode (1) still regen-brakes below the back-EMF unless rmult = 0. Effective only together with the speed loop (bit 4).

Rated policy — CMDFLAG_RATED (bit 7) (driver 6+)

Add this bit to switch the delivery policy of the by-flag modes from AVAILABLE to RATED:

  • Cleared (default): AVAILABLEcmd scales the live headroom. Every existing mode is left unchanged.
  • Set: RATEDcmd maps to a fixed hardware scale, capped at the live ceiling:
    • Current modes (current, brake): cmd maps to the full rated current scale, capped at the motor budget (iref).
    • Voltage modes (1 / 3 / 4): cmd maps to the full rated voltage scale (bus-independent). Using uref alone also yields a specific rated voltage without the flag.
    • With the field-weakening command schedule active (fwp > 0), the rated voltage scale reads as equivalent full-flux volts - exact below the plateau, extending into the weakening range on the same fixed scale, clamped at the terminal speed.

Because the hardware scales are fixed, a streaming command source does not need to re-sync its cmd scaling when a limiter acts or when iref/uref change.