This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

The relationship between speed and Iq_ref in FOC

 In the current loop debugging of FOC. The relationship between speed and Iq_ref is strange. The increase of speed is followed the increase of Iq_ref when Iq_ref is lower than a certain value. But the motor speed will reach the maximum speed immediately when the Iq_ref increase a little more than that certain value. For example, the motor speed is followed the increase Iq_Ref when Iq_ref is set from 1 to 100. But the motor speed will reach the maximum speed immediately if Iq_Ref is changed from 100 to 102. This issue cause the control problem in speed loop. because the Iq_Ref is the output of speed loop. The PID in speed loop don't have enough time to adjust speed back when Iq_Ref is more than a certain value and motor speed to reach maximum in very short time. The results is the motor speed is oscillation when speed is little high. However, The speed control is good when the setting value of speed is lower.

I appreciate if you can give me some hints to solve this problem. Thanks.

 

  • Did you add any load on the motor? The higher reference Iq will get a higher speed. If there is no any load on the motor and the motor friction is small, the speed should increase very quickly and reach the maximum speed when you increase the reference Iq that is higher than a value, this value depends on the inertia, friction, and load.
  • Thank you so much for your reply. You are right. I didn't connect any load to the motor. You mentioned that the value depends on the inertia, friction and load. Can I guess if I connect a load to the motor. The Iq reference value will more than the value without load. Then, if the motor still will reach maximum speed if the iq reference value beyond the new value that load connect to the motor. Thanks.

  • Hi Yanming,

    The motor speed still reach to maximum very quickly when load was connected to motor.  The Iq_ref value only increase a little, the motor speed is reach the maximum. Then, the Iq_Ref need to decrease a lot to make the motor speed slower. For example. the motor speed is 1000rpm when Iq_ref is 500. Then setting Iq_Ref from 500 to 510. the motor will reach to maximum speed in 1 second. The Iq_Ref need to decrease from 510 to 300 to let motor speed down to 1000rpm. 

    The major issue is in the speed loop. The motor will reach the maximum speed very fast and decrease speed very slowly. The results is the motor will oscillation, the speed is hard to stay in certain setting speed value. because iq_ref increase a little, the motor speed will increase a lot. But Iq_ref decrease a lot. the motor speed will decrease a little. The speed PID need to more time to decrease speed than the time to increase speed. This is the reason why motor speed is oscillation. What is the best way to set speed PID to follow the change of Iq_Ref.  Thanks.

  • 1. Right. The motor will run up to the maximum speed always till the current and voltage exceed the maximum limit value. In general, need a larger current to overcome static friction at startup as you found.
    2. You have to tune the gain of speed controller according to the motor and system if you are using speed close loop, even you have to use different groups of PI gain based on the running state of the motor.
  • The limit value is changed based on different load. I need to know this limit value to separate two different group of PI gain. Is there any ways to know this limit value. thanks.

  • It depends on the motor and load, you have to test and calculate the value on your system.