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.

CCS/LAUNCHXL-F28379D: Motor control tuning speed loop and position loop

Part Number: LAUNCHXL-F28379D
Other Parts Discussed in Thread: BOOSTXL-DRV8305EVM, SFRA, CONTROLSUITE

Tool/software: Code Composer Studio

hi,all

The kit used in my hardware part is LAUNCHXL_F28379D + BOOSTXL-DRV8305EVM, the motor model is 57bl115s21 (24VDC by BLDC), and a 3600-line incremental encoder is used.
The software uses FCL_SFRA in controlSUITE, where the position loop refers to the sensored_foc_f28002x in MotorControl_SDK, and the acceleration and deceleration algorithm is linear (trapezoidal) acceleration and deceleration.
My current requirement is to need the motor to run a fixed length in the position mode, using the Kp, Ki of the speed loop and Kp of the position loop, and use the empirical method for tuning when there is no load. At present, I collected the data when I set the speed loop and position loop Data are as follows:

1. The error of the Iq axis of the current loop fluctuates within plus or minus 15%; the following figure shows the three-phase waveform sampled by the current loop;

2. The speed loop input in the routine is a ramp signal, my Kp = 5, Ki = 0.005, when the motor speed is between 60rpm-120rpm, the motor cannot be stable; other speed sections are normal; the following picture shows the speed at 90rpm Curve:

3. When my speed loop is adjusted to step signal input, when my Kp = 0.15, Ki = 0.005, the output response curve of the motor speed above 300rpm is normal (the overshoot is small), and the motor below 300rpm cannot be stable;

The first picture and the second picture below are the speed curves when the step signal is 1500rpm and 90rpm:

4. When the position loop Kp = 0.1, the speed loop Kp = 5, and Ki = 0.005, the motor runs smoothly at low speed (about 60rpm). Because the position loop Kp value is small, the position followability is poor. When accelerating, the motor can't run at high speed;

5. When the position loop Kp = 3.5, the speed loop Kp = 0.15, and Ki = 0.005, the motor runs smoothly at low speed, and the motor jitters at low speed. Due to the small value of the speed loop Kp, the hand-twisting amplitude is large when the motor stops.

6. No matter how the three values are adjusted, the motor will overshoot;

7. Try to use different speed loop Kp and position loop Kp (segment function) during acceleration and deceleration, it will jitter when switching.

problem:

1. Is my current loop normal?

2. How should I adjust to be able to perform precise positioning (no jitter during acceleration and deceleration, no overshoot when stopping, and it can run at rated speed (3000rpm))?

  • 1. You should decouple the speed, current, and position control first, to make sure each control loop works well separately. 

    2. You have to add a motion profile control and implement a braking stop also if you want to get a precision position control. The example is controlSuite or motor control is just a reference for servo drive, it's not good enough for product-end position control.  

    There are no such examples in the controlSUITE and motorcontrolSDK, we can just provide some suggestions for you as mentioned above.