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.
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.
- Bold axis — the quantity
cmddrives (U voltage ≈ speed, I current ≈ torque) - Double-headed axis — the magnitude of
cmdapplies in both directions; its sign only decides which spin direction is capped byirefand which byirefr(writteniref(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:
ireffor the drive leg,irefrfor the brake leg. The shallower drawing is only a cue that the brake cap can differ — withirefrunset both legs equalirefand the frame is square
| U–I plane | mode | name | cmd reference / cap | class (driver 6+) | Description |
|---|---|---|---|---|---|
| 0 | freewheel (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). | |
| 1 | voltage (VLT) | uref | avail / rated by flag | By 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. | |
| 2 | current (CRT) | iref | avail / rated by flag | By 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. | |
| 3 | voltage + freewheel (VLF) | uref | avail / rated by flag | By 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. | |
| 4 | voltage brake (VLB) | uref irefr is used as maximum braking current. | avail / rated by flag | This 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. | |
| 5 | stator current (SCR) | iref | rated | Similar 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) | |
| 6 | torque (TRQ) | iref | rated | Similar 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) | |
| 7 | DC current (DCR) | iref | — | Similar 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. | |
| 8 | brake (BRK) | |cmd| × iref / irefr (sign selects) | avail / rated by flag | Brake 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. | |
| 9 | brake torque (BRT) | |cmd| × iref / irefr (sign selects) | rated | Similar 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) | |
| 10 | brake + freewheel (BRF) | iref | avail | Unidirectional 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. | |
| 15 | brake short (BRS) | irefr No scaling by cmd. | avail | Short-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.
- (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
fwcordxcis 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).
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
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.
| Policy | How 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.
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.
| Bit | Flag | Function |
|---|---|---|
| 4 | Speed loop | Engage the PID speed loop on top of the mode |
| 5 | Position loop | Engage the PID position loop on top of the mode |
| 6 | Keep sign (CMDFLAG_KEEPSIGN) | Speed loop holds the sign of the demanded speed (driver 6+) |
| 7 | Rated 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.
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.
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):
AVAILABLE—cmdscales the live headroom. Every existing mode is left unchanged. - Set:
RATED—cmdmaps to a fixed hardware scale, capped at the live ceiling:- Current modes (current, brake):
cmdmaps to the full rated current scale, capped at the motor budget (iref). - Voltage modes (1 / 3 / 4):
cmdmaps to the full rated voltage scale (bus-independent). Usingurefalone 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.
- Current modes (current, brake):
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.