I tried to make an PID controller tuned by a Fuzzy Logic Controller for a web unwinder system, the thing is the radius change along the process, so I made a block where it is calculated.

I made a Fuzzy PID with 2 inputs (error and derivate of error, each one has a range from -1 to 1, with 5 membership functions; Negative Big, Negative Small, Zero, Positive Small and Positive Big) and 3 outputs (dKp, dKi and dKd, each one with a range form 0 to 1, with 5 membership functions; Small, Medium Small, Medium, Medium Big and Big), which are properly scaled according to the next formula:

Kp=(Kpmax-Kpmin)*dKp+Kpmin

Ki=(Kimax-Kimin)*dKi+Kimin

Kd=(Kdmax-Kdmin)*dKd+Kdmin

And Kp, Ki and Kd are tuned gains used by the classical PID controller. With some experiments with the plant I've found that the most accurate control with a classical PID it's made it with Kp=27, Ki=20 and Kd=0.01, notice that a higher Kd gain make the response slower and a lower gain make it unstable. I defined Kpmax=20, Kpmin=13, Kimax=20, Kimin=10, Kdmax=0.02 y Kdmin=0.01.

The problem is, as you can see in the images, that the FPID controller has a worse performance than the conventional PID, and this last one has better response against perturbations (I put a perturbation in the torque at t=70). I think that there's no noticeable difference between the response performance of both controllers, I want to focus in the control of disturbances, so I don't know how to keep the same response but with a better performance in disturbances only setting the Fuzzy PID and if it is even possible to improve its response parameters (see the table). Also I don't know if I have to change the normalization to:

Kp=Gp*dKp+Kp0

Ki=Gi*dKi+Ki0

Kd=Gd*dKi+Ki0

From -1 to 1 with the membership functions Negative Big, Negative Small, Zero, Positive Small and Positive Big.

I attached all the necessary files. If there's any additional information that you need, please let me know.

Also, any kind of help, I will appreciate it.

Thanks

PS: Sorry for my english, I'm still learning.

PS: I use matlab2013a

More Elio Stefano Brizio Valdez's questions See All
Similar questions and discussions