Clear Filters
Clear Filters

Fuzzy control problem:(1)input 2 expects a value in range [-1.5 1.5], but has a value of 4.36559e+24;

187 views (last 30 days)
In 'EV_Thermal_Management_wendukongzhi_zhileng/Controls/Compressor Control/ÿÿÿÿ/Fuzzy Logic
Controller', input 2 expects a value in range [-1.5 1.5], but has a value of 4.36559e+24.
取消组合 1025 相似
组件:Simulink | 类别:Model 警告
In 'EV_Thermal_Management_wendukongzhi_zhileng/Controls/Compressor Control/ÿÿÿÿ/Fuzzy Logic
Controller', no rules fired for Output 1. Defuzzified output value set to its mean range value 0.
取消组合 3075 相似
on 15 May 2024
Thank you very much for your answer, I tried to experiment with the method you provided. Can you share your model with me?
on 15 May 2024
Hello, I tried it and found that it still doesn't seem to be ideal, I can't get the rate of change without using the Derivative block.

Sign in to comment.

Accepted Answer

Sam Chak
Sam Chak on 15 May 2024
Hi @柯
If there is no other way to directly measure the time derivative signal from the system, the proposed configuration with a Pre-filter at the Setpoint and a Filtered Derivative transfer function can be used to replace the original Derivative block. This configuration should effectively address the issue of derivative kick caused by setpoint jumps.
In Scope 1, you can see that the maximum value of dedt (the derivative of the error) is less than 1.5, which falls within the range of the fuzzy input 'ec'. This indicates that the proposed configuration successfully manages the derivative kick issue.
Scope 2 demonstrates how the fuzzy PID gains vary over time, maintaining non-negative values throughout the simulation. To achieve this, a small trick using the 'Abs' block is employed. Please note that in your original system, you should remove any additional blocks related to gain adjustment. Only the Pre-filter and the Filtered Derivative are necessary.
Lastly, Scope 3 illustrates the stability achieved by the Double Integrator system. A Simulink model is also attached for your reference and the original FIS file is unchanged.
Scope 1
Scope 2
Scope 3
on 17 May 2024 at 1:51
Moved: Sam Chak on 17 May 2024 at 2:58
Hello, I found that the model you built does not seem to initialize the PID parameters, and directly input the output of the fuzzy rules into the PID controller as the values of KP, KI, KD, will this have an impact?
2. In addition, you mentioned that my membership function should be 13, I don't understand this too much, and the output membership function I set is also 7 triangle membership functions with the input.
3. Regarding the unlimited output, I want to control the speed of my compressor to ensure that his speed is within a reasonable range and cannot exceed the maximum range.
Sam Chak
Sam Chak on 17 May 2024 at 3:00
Hi @柯
Thanks for your feedback. The reason I modified the PID structure is because you didn't supply the Compressor model for me to test. So, I created the simplest unstable model, a Double Integrator system, to run the PID controller.
Next, I needed to rule out the possibility that the Simulink error was caused by the fuzzy system you originally designed. Since I cannot alter anything in your fuzzy system, I can only modify the mechanisms outside of it to produce PID gain values that stabilize the Double Integrator system.
With the Double Integrator now stable, the system output signal fed back to the fuzzy system won't blow up. This allowed me to focus on fixing the "Derivative Kick" issue, and I proposed using the Prefilter (pastel red block) and the Filtered Derivative (pastel blue block). After testing the Double Integrator system again, the "Derivative Kick" issue was resolved.
That's why I mentioned that only the Prefilter and the Filtered Derivative are necessary, and the rest should remain the same as in the original Simulink file "mhkz.slx". Please let me know if the implementation of the Prefilter and the Filtered Derivative has indeed fixed the "Derivative Kick" issue for your system.

Sign in to comment.

More Answers (1)

Sam Chak
Sam Chak on 17 May 2024 at 5:43
Hi @柯
This following issue does not affect the original "derivative kick" problem described in this thread. So, it should be treated separately.
On the reason why the number of output membership functions (MFs) should be ideally 13, first, you need to review the If–Then rulebase (see Fig. 1). Look at the yellow boxes - you'll see that many of the output MFs are reused throughout the 49 rules. This causes the Fuzzy Kp surface in Fig. 2 to look a little strange.
Going back to the rulebase, since there are 2 inputs (e and ec) and each input has 7 MFs, there are 7 rule sets of 7 rules (see the 1st rule set in the orange box). However, there were only 4 output MFs in your original Kp design (see Fig. 3). So, for each rule set, you only have 4 output MFs to fill up the 7 rules, and thus, reusing some MFs is inevitable, making the fuzzy rules inflexible and less unique.
To address this issue, you can add another 3 Positive MFs (mf8, mf9, mf10) on top of the existing 4 output MFs (see Fig. 4). Now there will be enough 7 distinct MFs for the 7 rules in the first rule set. If you add another 3 Negative MFs (mf11, mf12, mf13) on the Negative side for Kp, Ki and Kd, there are just enough MFs for the 7 rule sets (all 49 rules). That's why I mentioned ideally there should be "13 MFs for each output"!
Figure 1: Fuzzy If–Then rulebase.
Figure 2: Fuzzy Kp surface
Figure 3: Original Fuzzy Kp output membership functions
Figure 4: Modified Fuzzy Kp output MFs (positive side for demo only)
Sam Chak
Sam Chak on 28 May 2024 at 6:07
Hi @柯
I believe your idea of using fuzzy control is feasible, provided you understand the following:
  1. The estimated mathematical model of the process system being controlled.
  2. The nature of the disturbance (constant, state-dependent, or time-dependent).
  3. The strategies employed by controllers to reject the corresponding disturbance.
Unless there are successful examples that you can directly follow, describing the fuzzy controller in the traditional way using Mamdani-type with many triangular membership functions and an abundance of ineffective "human" rules will make it very challenging to achieve the objective of rejecting the disturbance.
For example, dividing the error into 7 regions by creating 7 membership functions is akin to attempting to cut a round cake into 7 equal pieces for 7 people. Unless a special cake-cutting mold is used, an ordinary person cannot precisely cut a round cake into 7 equal pieces. A pastry chef using a 7-piece cake divider tool is analogous to an engineer applying control theory knowledge in fuzzy control design.

Sign in to comment.


Find more on Fuzzy Logic in Simulink in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!