Skip to main content
Firmware Stable

Changelog

For ESC module For ESC driver and common block for controllers

[6.0.0] - unreleased​

  • Smoother, more precise measurement (no more current-reading steps or intermittent temperature dropouts)
  • Torque modes deliver the full torque also at low speed; soft limits now cap the torque instead of rescaling the command map. The torque scale matches the rated operating point, so a full command reaches the rated current exactly (also with a fixed d-axis current, mtk = 0)
  • New command flags: fixed rated command scale (bit 7) and sign-locked speed loop (bit 6)
  • New optional command filter in the limiter: clpf [up, down] smooths command and multiplier changes within a drive mode (low-pass filter or ramp per direction); the filtered command set is readable as /driver/limiter/cmdf, imultf, umultf, rmultf. Available in ECHO and OPHION
  • Voltage modes work through field weakening (new fwp parameter): the no-load speed stays proportional to the command over the whole range and does not overshoot on command steps, also in deep field weakening on surface-magnet motors, as long as fwc stays within the motor's flux reversal. The speed map and the speed ceiling follow fwc alone - no dead throttle band when dxc exceeds fwc; on SynRM/ACIM the speed ceiling reads 0 until a flux is known
  • Voltage modes hold the command: the speed follows a lower command also after full throttle, a heavy load or a back-drive push (it could stay at the field weakening limit), and a light back-drive is braked at the command
  • The Range status flags field weakening only while it is at its fwc limit and still short of voltage; fwr now sets how fast the voltage modes release the weakening
  • Voltage modes keep the command-to-voltage equivalence under load when dxc is set (optional vcf flag)
  • MTPA reworked: dxc is now the d-axis current limit - set it to the motor's MTPA d-fraction at rated current (re-verify PMSM tunings with dxc below 1). The MTPA follows from psi, Ld and Lq only; Da/Dc no longer shift it
  • Smooth transition into field weakening: no torque dip or voltage overshoot when crossing base speed on IPM motors
  • Improved saturation model: identified Da/Dc can be used as-is; better torque and flux estimates on saturating motors (configurations with Da = Dc = 0 unchanged). Any identification current can be used, and a later change of iref needs no re-identification; a Da from an older driver (identified or entered by hand) is on a different scale - re-identify it. With an identified Dc the model follows the load: the torque per ampere droops at high current, so the torque mode maps the command linearly to torque (on surface-magnet motors less torque at partial command than before, the same at full command), and the voltage-mode load compensation follows the load
  • Optional MTPA table mtt (firmware that includes it): the MTPA d-axis current set by an 11-point table instead of from psi, Ld and Lq; the way to set the MTPA of a SynRM
  • Optional q-axis saturation coefficient Dq (firmware that includes it): the q-axis inductance's own fall with load, entered from motor maps (not identified); 0 keeps the behaviour
  • Da, Dc and Dq no longer accept negative values - re-identify a configuration that holds one
  • psi = 0 now declares a SynRM, a negative value an ACIM (was: tiny positive / 0). Re-declare such configurations; on a SynRM the MTPA magnetizes by itself, and a negative dxc puts the torque-mode rated point on the magnetizing side
  • Sensorless: more accurate angle in field weakening, at high electrical speed (no early loss of sync) and under load on saturating motors (it now takes Dc into account); heavy-load starts stay in the commanded direction also with a warm motor. Re-check sensorless load steps on motors with a nonzero Dc; on strongly salient IPMs (Lq far above Ld) the angle can slip at rated load - ask siliXcon for a firmware variant for such motors
  • Fix operation at high speeds (re-check tuned edc values)
  • Fix lost current limits in the torque modes and an unresponsive command in the current modes while the d-axis current sits on the current limit (thermal derating, or field weakening with fwc = 1)
  • Auto-sensorless thresholds assl/assh accept ratios of the maximum RPM
  • Smoother auto-sensorless handover (hall <-> sensorless fail-safe switching)
  • A reduced uref also shifts the field weakening range; the Range telemetry now streams the resolved voltage
  • Automatic ppr identification for encoders/resolvers
  • New diagnostics: bus-voltage measurement fault at init, idle over-speed detection
  • More robust settings storage (fixes an occasional reset while saving settings)
  • PID parameters accessible through the driver API
  • Optional sensorless tuning parameters ssa, ssm (firmware that includes them)
  • Parameter table extended (new entries appended); verify parameter IDs if you address driver parameters numerically over the API
  • Driver API: the maximum-speed values now derive from the flux linkage - reported values change on IPM motors; the relative voltage readback is the plain modulation factor also on advancing-angle (AAC) configurations (scale change)
  • CMIO: new MCU-driven fan output with temperature hysteresis (/common/fantemp)

[5.3.1]​

CMIO:

  • Fix: only the first contactor was being driven (contactors 2 and 3 were not controlled), and the second contactor's current reading (ccnt2) showed the first contactor's current

[5.3.0]​

  • Add over-speed detection while idle
  • Reduced flash footprint
  • Add esc3 sl2 board
  • Contactor overcurrent threshold and PWM period are now adjustable at runtime (enables embedded fan control)
  • SL/SC: the motor temperature (ptc) reading is invalidated on expander timeout (no stale value)

[5.2.1]​

  • Improved measurement accuracy for high-inductance motors
  • Several encoder homing reliability fixes
  • Fix position-loop behaviour during freewheel

[5.2.0]​

  • Fix seamless transition between motor modes
  • Encoder fixes for esc5

[5.1.1]​

  • Add flux-weakening retrieval and over-speed (no-margin) detection
  • More robust motor temperature sensor handling
  • More beeper songs available
  • Increase precharge voltage to 120V for MV controllers
  • Add esc3-am2 board variant

[5.1.0]​

  • Add simplified sensorless mode - alternative low-complexity startup/estimation option (no zero-speed torque)
  • Fix ACIM speed readout error on esc5
  • Adjustable contactor timing on the main MCU, with a safety option to force-close on driver errors
  • esc6: add block-commutation (BLDC) motor support
  • More flexible PWM input handling, refined help strings

Parameters​

  • Added: dcr, lfamp, lfreq

[5.0.0]​

  • Major driver rework: extends speed range to ~150k ERPM, supports up to 120V and low-inductance motors
  • Quieter operation at low inductance and high speed
  • Faster overcurrent and over/under-voltage protection (safer on MV / low-inductance setups)
  • More reliable startup and identification, with automatic current-loop tuning during identification
  • Beeper volume now adapts to the identified motor dynamics
  • Better analog monitoring on esc5 (motor temperature, supply voltages)
  • stop now also disables beeping; run re-enables it (use run 0 0 to stop the motor but keep beeping)
  • Default peak current set to the controller current range
  • Calibration: voltage limits unified/adjusted across controllers; esc3-sl1 now reports battery voltage ~2.5% lower (corrected measurement error)
  • More PWM input channels (up to 6), new isolated PWM capture on ch5 (gpio4, needs custom 5V-threshold HW); improved expander error reporting

[4.1.1]​

  • [esc5] Fix occasional reset while saving settings

[4.1.0]​

Changed​

  • Driver override levels. From this version the run and stop commands override CAN API.

[4.0.2]​

  • Fix command glitch after a driver error
  • [esc3] imult/umult now work with the BLDC driver
  • Calibration update for the ed1 board

[4.0.1]​

  • Fix ACIM odometer (odo) calculation
  • Beep modulation improvements on esc3/esc5 vector drivers
  • Fix RC (PWM) input for esc3-sc1 and esc3-sl1

[4.0.0]​

  • Support for the esc6 family
  • Encoder motor sensor with PWM homing and reference input
  • PPM (RC) capture is no longer enabled in standard applications
  • DRIVER_STAT_SPEED replaced by DRIVER_STAT_RANGE (signals that an operational range was exceeded)
  • Contactors are no longer opened on driver error while in service mode or on a CMIO error

[3.3.0]​

Fix/Changed​

  • For esc5, fix problem with disconnected motor temperature sensor (power is limited)
  • Changed - Now doesnt matter if motor temp sensor is disconnected or shorted, power is limited always.

[3.2.1]​

  • Fix scope traces occasionally missing during identification
  • [vector] Command 0 now disables the dxc feed

[3.2.0]​

Added​

  • Getter for /permanents/err_counter

[3.1.1]​

  • Improved communication robustness under heavy CAN load (esc3)
  • Separate positive and negative battery current multipliers (limiter API)

[3.1.0]​

  • [CMIO] Fix random invalid inputs from the I/O expander; inputs are briefly invalidated after an ioconf change

[3.0.0]​

Changed - BREAKING CHANGE​

  • Hall-sensor and sensorless support are no longer included by default; each application enables the modes it needs
  • I/O expander improvements

[2.3.0]​

  • Getters for imult, umult, rmult
  • Improved psi identification accuracy
  • Fix sensor error reporting during sensorless identrun

[2.2.6]​

Fixed​

  • esc3 BLDC - fix RThermistor and VThermistor - move them to /driver/motor

[2.2.5]​

  • Internal improvements

[2.2.4]​

  • OBD2: signal support; fix message length of extended messages (CALID, CVN, ...)
  • Fix low-speed commutation on ESC5 BLDC
  • Improved accuracy of psi identification

[2.2.3]​

  • Internal improvements

[2.2.0-2]​

  • Added: phase imbalance API, IBNEG/IBPOS mode selectors, vcf 1 (extended d-current priority), ioconf 104 for wheel magnet sensors, printout of the union module version
  • identrun now reports motor sensor errors (returns -3 on a hall sensor error); smoother engagement of the battery current compensator (bcfq); imult/umult/rmult are kept across command updates
  • Fixes: limiters not acting when the motor is back-driven (BLDC), identification crashes and scope control, [esc3] more precise MCU temperature reading

[2.1.1]​

  • Added: phase-specific I2R limiter on all controllers; motor mode 7 (battery current control)
  • Changed: improved motor-connection diagnostics at init; /driver/motor/odo is independent of the application; real KV calculation in the identrun output; higher maximum for tcc; imult can be set to zero; gdin threshold for -1 on AM/AX
  • Fixes: torque estimation with IPM motors; permanents saving reliability; negative ipeak behaviour and limiter priority in BLDC; DIN on SX; shutdown no longer forces a 100 ms delay (accepts an argument)

[2.1.0]​

  • Added: AX controller; support for the new AMP board revision; ebmult (external battery current multiplier)

[2.0.0]​

  • Complete refactored. ESC3, ESC4 and ESC5 driver and common block unified.

Added​

  • SX controller

Changed​

  • Permanents changed to integer values, instead of float
  • RThermistor and VThermistor moved to /driver/motor
  • Default values:
    • By default all contactors are open on startup
  • /common folder:
    • States names and type is unified
    • ichg and uchg moved and renamed: /powerswitch/ps_curr and /powerswitch/ps_volt
  • Parameter rename:
    • gpio_thr [lsb] -> pulsethr [mV]
    • gpio_thr2 [lsb] -> adin_thr [10mV]
  • State rename:
    • ccnt1-3 -> contactor1-3/current

[1.2.0]​

Init commit. Changelog starts.