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.
- 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.
- Nominal speed is the maximum speed of the motor without flux weakening (e.g.,
/driver/dac/fwcset 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
- Perform basic identification according to this guide.
- Evaluate the drive according to this guide.
- Verify that the motor sensor operates seamlessly and the motor spins without issues at its nominal speed.
- 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. - Set
rposto 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). - To exceed the nominal speed, gradually increase the flux weakening current limit
fwcfrom zero and evaluate the maximum speed. This parameter can be adjusted at runtime. Always check if the motor can be stopped with 'STOP' commadnd. - Observe the Q-axis current (
/driver/motor/currentqfor 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 parameteredcin 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. - Leave the flux weakening current limit
fwcat your desired value (typically up to 0.707, which equals v2/2) and re-evaluate the drive once again. - Finally, set the reluctance current limit
dxcto increase torque at low speeds (typically up to 0.707, which equals v2/2) and re-evaluate the drive. - A full loading test can be done at this moment.
- 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.
- Keep
/driver/irefconservative 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. - Keep
/driver/dac/dxcand/driver/dac/fwcequal as the initial baseline. A mismatch between them is a common cause of a perceived torque step ("kick" or "drop") at the transition. - Leave
/driver/dac/fwm,/driver/dac/fwr, and/driver/dac/fwdat their defaults during initial transition tuning. Adjust them only after thedxc/fwcbaseline is stable; otherwise symptoms overlap and can be misinterpreted. - Always test and tune the battery current compensator so the drive has a safe fallback in case of sensor error or misalignment.
- To shape the transition further through MTPA, first run
identlinwith non-linear identification enabled so/driver/motor/Daand/driver/motor/Dcare identified. As a practical starting point, setDcto zero and tuneDato 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.
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.