cnpcshangbo / simscapeFOPD

Simscape drone altitude control with fractional order proportional derivate controller
Other
12 stars 5 forks source link

How to tune speed loop PID parameters? #5

Open cnpcshangbo opened 6 years ago

cnpcshangbo commented 6 years ago

Hi everyone? I am having difficulties tuning the speed loop PID parameters. I followed https://github.com/cnpcshangbo/simscapeFOPD/issues/2 to get a speed curve and then I changed the speed setpoint to step function according to this: https://github.com/cnpcshangbo/simscapeFOPD/issues/4. After that I was able to get speed loop step response like this: image Speed loop P=2, I=6, D=0.324786114614273, N=19.7366420228035, ITAE=2.35

cnpcshangbo commented 6 years ago

From the figure above I think the P parameter should be reduced because the overshoot is too large, So let's cut it to half and see. Speed loop P=1, I=6, D=0.324786114614273, N=19.7366420228035, ITAE=3.66.

image

cnpcshangbo commented 6 years ago

Since getting the P smaller makes the curve worse. I am going to make P larger. Speed loop P=4, I=6, D=0.324786114614273, N=19.7366420228035, ITAE=1.95.

image

cnpcshangbo commented 6 years ago

Getting P larger really works. It gets overshoot smaller, so let try to get P even larger. P=8, I=6, D=0.324786114614273, N=19.7366420228035, ITAE=1.66.

image

cnpcshangbo commented 6 years ago

P = 8 is really better. Since we already got some oscillation, we shouldn't get P larger. We'll try to get integrator larger and see what will happen. P=8, I=10, D=0.324786114614273, N=19.7366420228035, ITAE=1.78 image

cnpcshangbo commented 6 years ago

Since increasing I makes the system worse, we'll try to decrease I. P=8, I=3, D=0.324786114614273, N=19.7366420228035, ITAE=2.35 image

cnpcshangbo commented 6 years ago

I=3 makes the overshoot less, but it also makes the static error converge slower. So we think this is the best we can get: P=8, I=6, D=0.324786114614273, N=19.7366420228035, ITAE=1.66 image

cnpcshangbo commented 6 years ago

I think the speed loop is much better than before. Therefore I want to test whether IOPID and FOPD is getting better.

cnpcshangbo commented 6 years ago

image ZPos PID continous P=6.25, I=4.81, D=1.81 anti-windup is used. Kb=1. The altitude ITAE is 1.13 for IOPID controller. I am going to tune the altitude loop now. I have created a new issue for the altitude loop tuning. https://github.com/cnpcshangbo/simscapeFOPD/issues/7

cnpcshangbo commented 6 years ago

image ZPos PID Discrete-time P=3.2, I=2, D=0, no N, ITAE=0.99 Kb=1, output limit [-10, 10]

cnpcshangbo commented 6 years ago

The next step is to re-identify the plant model for ZPos(altitude) control. I plan to finish that by using the PID tune APP (refer to the webinar from Mathworks).

cnpcshangbo commented 6 years ago

image So the ZPos plant transfer function is: 0.99217/s/(0.2486*s+1).

cnpcshangbo commented 6 years ago

image PID Tuner is not able to tune this plant. So I plan to tune it using my code from FOPD tunner.

cnpcshangbo commented 6 years ago

By using this project: https://github.com/cnpcshangbo/FOPD-tunner I am able to get the optimal IOPID parameters. C =

         1          

Kp + Ki --- + Kd s s

with Kp = 8.55, Ki = 8.79, Kd = 1.85

Continuous-time PID controller in parallel form.

info =

struct:

            Stable: 1
CrossoverFrequency: 7.1642
       PhaseMargin: 83.8783

image