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

I made a Fuzzy PID with 2 inputs (error and derivate of error, each one has a range from -0.1 to 0.1) and 3 outputs (dKp, dKi and dKd, each one with a range form 0 to 1), 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.

The problem is the Fuzzy controller is very unstable during large simulations and the response seems to have so much noise, that behavior is noticeable seeing the scaled outputs of the Fuzzy Controller (Gains). As we can see, they have noise forward from 10 seconds. Also I had to sample the error and error rate because the simulation just don't work without that. The following error appears with out sampling:

"Warning: At time 1.4954202659488365, simulation found (14) Masked zero-crossing events.

Masked zero crossings are caused by even roots problems. It indicates that some zero

crossings may not be detected. To solve this problem, you can increase the refine factor

from (1) to a larger value. The refine factor can be accessed from the save options under

Data Import/Export option in the parameter configuration panel.

--------------------------------------------------------------------------------

Zero-crossing signal index : 365

Zero-crossing signal name : MinmaxInput

Block type : MinMax

Block path : 'PlantaEBT/Fuzzy PIDT1/Fuzzy Logic Controller/FIS

Wizard/Rule2/impMethod'

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

Zero-crossing signal index : 395

Zero-crossing signal name : MinmaxInput

Block type : MinMax

Block path : 'PlantaEBT/Fuzzy PIDT1/Fuzzy Logic Controller/FIS

Wizard/Rule2/impMethod'"

To be honest I don't know why I have to sample the signals, the control gets worse in higher sampling times. I'm not a expert in Fuzzy PID or Fuzzy Logic in general too.

Also the response, despite to have a lower undershoot, has a bigger overshoot than the classical PID, I don't know how to improve the Fuzzy PID performance.

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.

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