MATLAB Answers

How can I eliminate the noise in a Fuzzy PID Controller and improve its performance?

1 view (last 30 days)
Elio Brizio
Elio Brizio on 26 Aug 2020
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.

  0 Comments

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!