You are on page 1of 8

3. FUZZY LOGIC

475

<TODO - Find an implementation platform and add section>

Topics:

Fuzzy logic theory; sets, rules and solving

Objectives:

• To understand fuzzy logic control.

• Be able to implement a fuzzy logic controller.

3.1 INTRODUCTION

Fuzzy logic is well suited to implementing control rules that can only be expressed verbally, or systems that cannot be modelled with linear differential equations. Rules and membership sets are used to make a decision. A simple verbal rule set is shown in Figure 41. These rules concern how fast to fill a bucket, based upon how full it is.

1. If (bucket is full) then (stop filling)

2. If (bucket is half full) then (fill slowly)

3. If (bucket is empty) then (fill quickly)

Figure 41

A Fuzzy Logic Rule Set

The outstanding question is "What does it mean when the bucket is empty, half full, or full?" And, what is meant by filling the bucket slowly or quickly. We can define sets that indicate when some- thing is true (1), false (0), or a bit of both (0-1), as shown in Figure 42. Consider the bucket is full set. When the height is 0, the set membership is 0, so nobody would think the bucket is full. As the height increases more people think the bucket is full until they all think it is full. There is no definite line stat- ing that the bucket is full. The other bucket states have similar functions. Notice that the angle function relates the valve angle to the fill rate. The sets are shifted to the right. In reality this would probably mean that the valve would have to be turned a large angle before flow begins, but after that it increases quickly.

1

0

1

0

1

0

bucket is full bucket is half full bucket is empty height Figure 42 Fuzzy Sets
bucket is full
bucket is half full
bucket is empty
height
Figure 42
Fuzzy Sets
476 1 stop filling 0 1 fill slowly 0 1 fill quickly 0 angle
476
1
stop filling
0
1
fill slowly
0
1
fill quickly
0
angle

Now, if we are given a height we can examine the rules, and find output values, as shown in Fig- ure 43. This begins be comparing the bucket height to find the membership for bucket is full at 0.75, bucket is half full at 1.0 and bucket is empty at 0. Rule 3 is ignored because the membership was 0. The result for rule 1 is 0.75, so the 0.75 membership value is found on the stop filling and a value of a1 is found for the valve angle. For rule 2 the result was 1.0, so the fill slowly set is examined to find a value. In this case there is a range where fill slowly is 1.0, so the center point is chosen to get angle a2. These 0.75(a1) + 1.0(a2)

two results can then be combined with a weighted average to get

angle

= ---------------------------------------------- 0.75 + 1.0

.

1. If (bucket is full) then (stop filling) 1 bucket is full 0 height
1. If (bucket is full) then (stop filling)
1
bucket is full
0
height

2. If (bucket is half full) then (fill slowly)

1

0

height 2. If (bucket is half full) then (fill slowly) 1 0 bucket is half full
height 2. If (bucket is half full) then (fill slowly) 1 0 bucket is half full
height 2. If (bucket is half full) then (fill slowly) 1 0 bucket is half full
height 2. If (bucket is half full) then (fill slowly) 1 0 bucket is half full

bucket is half full

height

half full) then (fill slowly) 1 0 bucket is half full height 3. If (bucket is
3. If (bucket is empty) then (fill quickly) 1 bucket is empty 0 height
3. If (bucket is empty) then (fill quickly)
1
bucket is empty
0
height
stop filling
stop filling

1

0

1

0

1

0

a1

is empty 0 height stop filling 1 0 1 0 1 0 a 1 a2 angle
is empty 0 height stop filling 1 0 1 0 1 0 a 1 a2 angle

a2

angle

fill slowly

is empty 0 height stop filling 1 0 1 0 1 0 a 1 a2 angle

angle

fill quickly angle
fill quickly
angle

Figure 43

Fuzzy Rule Solving

477

An example of a fuzzy logic controller for controlling a servomotor is shown in Figure 44 [Lee and Lau, 1988]. This controller rules examines the system error, and the rate of error change to select a motor voltage. In this example the set memberships are defined with straight lines, but this will have a minimal effect on the controller performance.

Fuzzy V Logic Controller
Fuzzy
V
Logic
Controller

motor

Motor I motor Power Amplifier
Motor
I
motor
Power
Amplifier

Servo

Motor

v

actual

v desired

I motor Power Amplifier Servo Motor v actual v desired - v error + The rules

-

v error

+
+

The rules for the fuzzy logic controller are;

1. If v error is LP and d /

error

dt v error is any then V motor is LP.

2. If v

3. If v error is ZE and d /

4. If v error

5. If v error is SN and d / dt v error is SN then V motor is SN.

6. If v error is LN and d / dt v error is any then V motor is LN.

is SP and d / dt v error is SP or ZE then V motor is SP.

dt v error is SP then V motor is ZE.

is ZE and d / dt v error is SN then V motor is SN.

The sets for v error , d / dt v error , and V motor are;

d t v e r r o r , and V m o t o r
LN SN ZE SP LP v error d / dt v error V motor 1

LN

SN

ZE

SP

LP

v error

d / dt v error

V motor

1   0 -100 -50 0 50 100 r p s 1     0

1

 

0

-100 -50

0

50 100

r p s rps

1   0 -100 -50 0 50 100 r p s 1     0 -100

1

 
1    
 

0

-100 -50

 

0

50 100

r p s rps

    0 -100 -50   0 50 100 r p s 1   0 -6

1

 

0

-6

-3

0

3

6

r p s / s rps/s

p s 1   0 -6 -3 0 3 6 r p s / s 1

1

 
1    
 

0

-6

-3

 

0

3

6

r p s / s rps/s

  0 -6 -3   0 3 6 r p s / s 1   0

1

 

0

0

6

12 18

24

V V

6 r p s / s 1   0 0 6 12 18 24 V 1

1

 
1    
 

0

0

6

12 18

24

V V

18 24 V 1     0 0 6 12 18 24 V 1 0 -100
1 0 -100 -50 0 50 100
1
0
-100 -50
0
50 100

r p s rps

1 0 -6 -3 0 3 6
1
0
-6
-3
0
3
6

r p s / s rps/s

1 0 0 6 12 18 24
1
0
0
6
12 18
24

V V

 
   
 

1

 
1     rps
 

rps

0

-100 -50

0

50 100

0 -100 -50 0 50 100
 
   
 

1

 
1    
 

0

-100 -50

0

50 100

0 -100 -50 0 50 100 r p s

rps

 
   
 

1

 
1     rps/s
 

rps/s

0

-6

-3

0

3

6

0 -6 -3 0 3 6
 
   
 

1

 
1    
 

0

-6

-3

0

3

6

0 -6 -3 0 3 6 r p s / s

rps/s

 
   
 

1

 
1    
 

0

0

6

12 18

24

0 0 6 12 18 24
 
   
 

1

 
1    
 

0

0

6

12 18

24

0 0 6 12 18 24

V

V

Figure 44

A Fuzzy Logic Servo Motor Controller

Consider the case where v error = 30 rps and d / dt v error = 1 rps / s . Rule 1to 6 are calculated in Fig-

ure 45.

478

1. If v error is LP and d / dt v error is any then
1. If v error is LP and d / dt v error is any then V motor is LP.
1
1
1
0
0
0
rps
rps/s
V
-100 -50
0
50 100
-6
-3
0
3
6
0
6
12
18
24
ANY VALUE
30rps
17V
(so ignore)
(could also
This has about 0.6 (out of 1) membership
have chosen

some value

above 17V)

2. If v error is SP and d / dt v error is SP or ZE then V motor is SP.

the OR means take the highest of the two memberships the AND means take the
the OR means take the
highest of the two
memberships
the AND means take the
lowest of the two
memberships
1
1
1
1
rps
rps/s
0
0
0
0
rps/s
-100-50 0
50 100
-6
-3
0
3
6
-6
-3
0
3
6
0
6
12 18 24
1rps/s
14V
30rps
1rps/s

This has about 0.4 (out of 1) membership

V

3. If v error is ZE and d / dt v error is SP then
3. If v error is ZE and d / dt v error is SP then V motor is ZE.
1
1
1
rps/s
0
0
0
rps
V
-100 -50
0
50 100
-6
-3
0
3
6
0 6
12 18
24
30rps
1rps/s
the lowest results in 0 set
membership

This has about 0.0 (out of 1) membership

479

4. If v error is ZE and d / dt v error is SN then V motor is SN.

1 1 1 0 0 0 rps rps/s V -100 -50 0 50 100 -6
1
1
1
0
0
0
rps
rps/s
V
-100 -50
0
50 100
-6
-3
0
3
6
0 6
12 18
24
1rps/s
30rps
the lowest results in 0 set
membership
This has about 0.0 (out of 1) membership
5. If v error is SN and d / dt v error is SN then V motor is SN.
v error is SN and d / dt v error is SN then V motor is
v error is SN and d / dt v error is SN then V motor is
v error is SN and d / dt v error is SN then V motor is

1

 
1     1     1    
 

1

 
1     1     1    
 

1

 
1     1     1    
 
     

0

-100 -50

0

50 100

0 -100 -50 0 50 100 r p s 0 -6 -3 0 3 6 rps/s

rps

0

-6

-3

0

3

6

rps/s

rps/s

0

0

6

12 18

24

         

30rps

1rps

24           30rps 1 r p s This has about 0.0 (out

This has about 0.0 (out of 1) membership

V

6. If v error is LN and d / dt v error is any then V motor is LN.

v e r r o r is any then V m o t o r is
v e r r o r is any then V m o t o r is
v e r r o r is any then V m o t o r is

1

 

1

 

1

 

0

-100 -50

0

50

100

r p s

rps

0

-6

-3

0

3

6

r p s / s

rps/s

0

0

6

12 18

24

30rps

ANY VALUE

/ s 0 0 6 12 18 24 3 0 r p s ANY VALUE This

This has about 0 (out of 1) membership

Figure 45

Rule Calculation

V

The results from the individual rules can be combined using the calculation in Figure 46. In this case only two of the rules matched, so only two terms are used, to give a final motor control voltage of

15.8V.

Figure 46

V motor

V motor

480

n

)

= ----------------------------------------------------------------------

i = 1

(

V motor

i

) membership

(

i

n

i = 1

(

membership

i

)

= --------------------------------------------------- 0.6(17V) + 0.4(14V) = 15.8V 0.6 + 0.4

Rule Results Calculation

3.2 COMMERCIAL CONTROLLERS

At the time of writing Allen Bradley did not offer any Fuzzy Logic systems for their PLCs. But, other vendors such as Omron offer commercial controllers. Their controller has 8 inputs and 2 outputs. It will accept up to 128 rules that operate on sets defined with polygons with up to 7 points.

It is also possible to implement a fuzzy logic controller manually, possible in structured text.

3.3 REFERENCES

Li, Y.F., and Lau, C.C., “Application of Fuzzy Control for Servo Systems”, IEEE International Conference on Robotics and Automation, Philadelphia, 1988, pp. 1511-1519.

3.4 SUMMARY

• Fuzzy rules can be developed verbally to describe a controller.

• Fuzzy sets can be developed statistically or by opinion.

• Solving fuzzy logic involves finding fuzzy set values and then calculating a value for each rule. These values for each rule are combined with a weighted average.

3.5 PRACTICE PROBLEMS

3.6 ASSIGNMENT PROBLEMS

1. Find products that include fuzzy logic controllers in their designs.

481

2. Suggest 5 control problems that might be suitable for fuzzy logic control.

3. Two fuzzy rules, and the sets they use are given below. If v error = 30rps, and d / dt v error = 3 rps / s , find V motor .

1. If (v error is ZE) and ( d / dt v error is ZE) then (V motor is ZE).

2. If (v error is SP) or ( d / dt v error is SP) then (V motor is SP).

SN ZE SP v error d / dt v error V motor 1    

SN

ZE

SP

v error

d / dt v error

V motor

1     0 -100 -50   0 50 100 r p s 1  

1

 
1    
 

0

-100 -50

 

0

50 100

r p s rps

    0 -100 -50   0 50 100 r p s 1     0

1

 
1    
 

0

-6

-3

 

0

3

6

r p s / s rps/s

  0 -6 -3   0 3 6 r p s / s 1    

1

 
1    
 

0

0

6

12 18

24

V V

p s / s 1     0 0 6 12 18 24 V 1 0
1 0 -100 -50 0 50 100
1
0
-100 -50
0
50 100

r p s rps

1 0 -6 -3 0 3 6
1
0
-6
-3
0
3
6

r p s / s rps/s

1 0 0 6 12 18 24
1
0
0
6
12 18
24

V V

1 0 -6 -3 0 3 6 r p s / s 1 0 0 6

1

 
1  

0

-100 -50

0

50 100

rps 0 6 12 18 24 V 1   0 -100 -50 0 50 100 1  

12 18 24 V 1   0 -100 -50 0 50 100 rps 1   0

1

 
1  

0

-6

-3

0

3

6

rps/s 0 -100 -50 0 50 100 rps 1   0 -6 -3 0 3 6 1

-100 -50 0 50 100 rps 1   0 -6 -3 0 3 6 rps/s 1

1

 
1  

0

0

6

12 18

24

V 0 -100 -50 0 50 100 rps 1   0 -6 -3 0 3 6 rps/s

4. Develop a set of fuzzy control rules adjusting the water temperature in a sink.

5. Develop a fuzzy logic control algorithm and implement it in structured text. The fuzzy rule set below is to be used to control the speed of a motor. When the error (difference between desired and actual speeds) is large the system will respond faster. When the difference is smaller the response will be smaller. Calculate the

482

outputs for the system given errors of 5, 20 and 40.

100% 0% 10 30
100%
0%
10
30

100%

10 30
10
30
given errors of 5, 20 and 40. 100% 0% 10 30 100% 10 30 Big Error

Big Error

Small Error

0%

20 Big Output 50 Small Output 5 50
20
Big Output
50
Small Output
5
50

if (big error) then (big output) if (small error) then (small output)

error

error

error

error