Struggling with Custom Motor Integration and PID Tuning in IPMSM Velocity Control
1 view (last 30 days)
Show older comments
Hello MATLAB Community,
I am currently working on customizing the IPMSM Velocity Control example to incorporate my own motor parameters. Despite several attempts, I have been unsuccessful in achieving the desired control performance. Here are the specific motor parameters I am using:
- Pmax: 60,000 W (Maximum power)
- Tmax: 80 Nm (Maximum torque)
- Ld: 0.0008 H (Stator d-axis inductance)
- Lq: 0.001 H (Stator q-axis inductance)
- L0: 0.0005 H (Stator zero-sequence inductance)
- Rs: 0.01245 Ω (Stator resistance per phase)
- psim: 0.06 Wb (Permanent magnet flux linkage)
- p: 4 (Number of pole pairs)
- Jm: 0.0012 Kg*m^2 (Rotor inertia)
- Back EMF constant: 0.233 V/(rad/s)
I have tried using the Step Response Optimizer and the "Tune Field-Oriented Controllers Using Closed-Loop PID Autotuner Block" to adjust the P and I values for D, Q, and the speed control loops, but I have not been successful.
Could anyone provide guidance or suggestions on how to properly adjust these parameters? Specifically, I am looking for advice on:
- Properly integrating my motor parameters into the IPMSM Velocity Control example.
- Effective methods for tuning the PID controllers for the D-axis, Q-axis, and speed control loops.
Any help or insights would be greatly appreciated.
Thank you!
3 Comments
Finn
on 16 Jul 2024
A good start for tuning your pid controller, whould be to tune it from your motor parameters. You can use two methods. I would recommend you to tune the current controllers with the amplitude optimum. After calculating the PID-Controller gains you can look at the step responses (d-Axis and q-Axis seperatly). To exclude any coupling resuting from back-emf you can lock the rotor, so it don`t rotate when you apply a q-current. When the current loop shows good behaviour you can tune the speed controller with the symmetrical optimum.
This two methods will give you a decent control performance. If you want to optimize, you can go on and for example use the closed loop pid tuner.
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!