cancel
Showing results for 
Search instead for 
Did you mean: 

Is speed control impossible in motor position control?

Danu_Park
Associate III

Currently, I am using FOC control in MCSDK for position control, and the speed graph appears as shown in the attached figure when the motor moves to its target position.

scrrenshot1.png


However, I want to achieve control where the motor maintains its maximum speed for as long as possible. No matter how much I adjust the PID coefficients for position control in MCSDK, the result seems limited to the attached graph.
Is there any way to achieve this?

The speed graph I want looks like this.

scrrenshot2.png

Thank you.

Danu
3 REPLIES 3
GMA
ST Employee

Hello @Danu_Park,

Could you share your command? 
Is your motor loaded?

 

 

If you agree with the answer, please accept it by clicking on 'Accept as solution'.
Best regards.
GMA

The graph attached in the initial question represents the case where the Target Position is set to 30 radians, while the graph I am attaching now represents the case where the Target Position is set to 150 radians.

When the Target Position is set to 150 radians, regardless of whether there is a load on the motor, it reaches maximum speed initially and then transitions to uniform motion at a reduced speed.
Increasing the D-value reduces the speed during the uniform motion phase (as shown in Image 2), while decreasing the D-value (as shown in Image 3) extends the duration of the uniform motion phase.
However, reducing the D-value causes vibration when the motor comes to a stop.

Is there any method to control the speed directly, rather than adjusting the D-value in position control?

What I am aiming for is a motion where the motor moves at a constant speed that I set and stops smoothly according to the D-value I configure.

Thank you.

1.png

2.png

3.png

   

Danu
FouadB
ST Employee

Hello @Danu_Park,

Unfortunately, the position control algorithm relies solely on the target position and the time allocated for execution, without utilizing a speed command as an input.
It implements a trapezoidal target angular-velocity trajectory, which consists of three phases: acceleration, speed cruise, and deceleration, as illustrated in the figure below.

Trapezoidal_trajectory.jpg

This approach appears to align with your expectations, as indicated by the red curve attached above.
To achieve this trapezoidal movement, please tune your PID controller using the experimental approach described in Chapter 9 of Application Note AN5464.
Additionally, you may need to adjust the time allowed to reach your target position.

Below is an example of movement with the associated command using a Shinano motor:

Screenshot 2024-12-20 113805.jpg

I hope this input will be helpful to you.

Best regards,
Fouad

If you agree with my answer, please accept it by clicking on 'Accept as solution'."