Skip to main content
Firmware Stable

Driving an IPM motor

The ESCx controllers are well-suited for driving IPMSM (Interior Permanent Magnet Synchronous Machine) motors and leverage the advantages of their construction. Two distinct features are utilized to expand the operating range:

  • reluctance torque,
  • flux weakening.

Please refer to the flux control documentation to understand the built-in mechanisms.

info
  • siliXcon controllers leverage inherent mathematical properties and perform natural automatic flux weakening together with MTPA/MTPW. Unlike competing solutions, no mapping functions or lookup tables are required (unless explicitly needed by the application).
  • siliXcon implements a safety mechanism that attempts to stop the motor when the driver enters FREEWHEEL mode, even if the motor sensor is incorrectly identified.
  • With an external capacitor bank, the controller can be configured to regenerate power from the spinning motor for self-field-weakening. This configuration requires assistance from siliXcon-please contact us for support.
tip
  • Nominal speed is the maximum speed of the motor without flux weakening (e.g., /driver/dac/fwc set to 0) at a given DC voltage.
  • Sensorless control may not achieve maximum performance, as IPM motor parameters are highly non-linear and vary with the operating point, making them difficult to model accurately within the sensorless observer.
  • For assistance with advanced tuning, contact our technical support team.

Configuration steps

  1. Perform basic identification according to this guide.
  2. Evaluate the drive according to this guide.
  3. Verify that the motor sensor operates seamlessly and the motor spins without issues at its nominal speed.
  4. Set the axis prioritization parameter for IPM motor control (/driver/vcf) to the value 2. Open siliTune for easy run-time parameter access for the next steps.
  5. Set rpos to a safe value to limit mechanical speed and prevent motor damage. Ensure that the pole pair count (pp) is properly configured (note that the limitation may still not be effective unless the sensor delay compensated).
  6. To exceed the nominal speed, gradually increase the flux weakening current limit fwc from zero and evaluate the maximum speed. This parameter can be adjusted at runtime. Always check if the motor can be stopped with 'STOP' commadnd.
  7. Observe the Q-axis current (/driver/motor/currentqf or in siliWatch) at each step-it should never drop below zero. If the Q-axis current approaches or drops below zero at high speeds, this likely indicates sensor phase delay. Increase the delay compensation parameter edc in small increments until the Q-axis current remains stable above zero. A properly configured sensor will result in smooth acceleration and deceleration in both directions and smooth transitions from/to field weakening zone.
  8. Leave the flux weakening current limit fwc at your desired value (typically up to 0.707, which equals v2/2) and re-evaluate the drive once again.
  9. Finally, set the reluctance current limit dxc to increase torque at low speeds (typically up to 0.707, which equals v2/2) and re-evaluate the drive.
  10. A full loading test can be done at this moment.
warning
  • IPM motors are more sensitive to proper tuning, and safety concerns must be evaluated carefully. An incorrectly identified motor sensor can result in unintended acceleration or uncontrollable spinning. Speed limiters may be ineffective, and the motor may accelerate until mechanical failure occurs.
  • Turning off the controller during flux weakening must be avoided at all costs during the tuning, as it can cause permanent damage.
  • Never disconnect the battery during active motor control, unless safety mechanisms have been installed (such as active snubber or auto-generated flux weakening).

Fine-tuning the torque-speed transition

Once the configuration above runs reliably at nominal speed and into flux weakening, the torque-versus-speed curve can be shaped for a smooth reluctance-to-field-weakening transition. Change only one group of parameters at a time and keep a stable baseline between changes.

  1. Keep /driver/iref conservative and thermally safe. The d- and q-axis currents share this budget, so an aggressive d-axis allocation reduces the torque headroom and can worsen stability. A higher reference also tends to produce current peaks that work against the flat torque-versus-speed curve you are aiming for, so resist the urge to raise it for its own sake.
  2. Keep /driver/dac/dxc and /driver/dac/fwc equal as the initial baseline. A mismatch between them is a common cause of a perceived torque step ("kick" or "drop") at the transition.
  3. Leave /driver/dac/fwm, /driver/dac/fwr, and /driver/dac/fwd at their defaults during initial transition tuning. Adjust them only after the dxc/fwc baseline is stable; otherwise symptoms overlap and can be misinterpreted.
  4. Always test and tune the battery current compensator so the drive has a safe fallback in case of sensor error or misalignment.
  5. To shape the transition further through MTPA, first run identlin with non-linear identification enabled so /driver/motor/Da and /driver/motor/Dc are identified. As a practical starting point, set Dc to zero and tune Da to smooth out the perceived transition.

For the underlying mechanisms (flux weakening, MTPA, the shared current budget, and the non-linear motor model), see the flux control documentation.

tip

siliXcon performs flux weakening and MTPA from a compact real-time motor model rather than lookup tables or flux maps. If your motor needs a table-based characterization instead, it is available on demand — please contact siliXcon.