Fuzzy Logic#

block

Внешний вид блока в REPEAT VISION#

 Fuzzy Logic - это блок, который реализует работу с нечеткой логикой. При выборе блока происходит инициализация (рис. 1), где необходимо загрузить файл с расширением .fcl - Fuzzy Contol Language.

Важно

Количество и названия портов определяются по содержимому загруженного файла.

S-Parameters

Рис. 1 Инициализация блока Fuzzy Logic#

 На выходе блока выдается сигнал, который формируется исходя из правил, указанных в файле.

 Пример файла: tipper.fcl

FUNCTION_BLOCK tipper	

VAR_INPUT				
	service : REAL;
	food : REAL;
END_VAR

VAR_OUTPUT				
	tip : REAL;
END_VAR

FUZZIFY service			
	TERM poor := (0, 1) (4, 0) ; 
	TERM good := (1, 0) (4,1) (6,1) (9,0);
	TERM excellent := (6, 0) (9, 1);
END_FUZZIFY

FUZZIFY food			
	TERM rancid := (0, 1) (1, 1) (3,0) ;
	TERM delicious := (7,0) (9,1);
END_FUZZIFY

DEFUZZIFY tip			
	TERM cheap := (0,0) (5,1) (10,0);
	TERM average := (10,0) (15,1) (20,0);
	TERM generous := (20,0) (25,1) (30,0);
	METHOD : COG;		
	DEFAULT := 0;		
END_DEFUZZIFY

RULEBLOCK No1
	AND : MIN;			
	ACT : MIN;			
	ACCU : MAX;			

	RULE 1 : IF service IS poor OR food IS rancid THEN tip IS cheap;
	RULE 2 : IF service IS good THEN tip IS average; 
	RULE 3 : IF service IS excellent AND food IS delicious THEN tip IS generous;
END_RULEBLOCK

END_FUNCTION_BLOCK

1.  Запись файла типа .fcl#

  1. Необходимо задать название функции блока:

FUNCTION_BLOCK tipper
  1. Определяются входные и выходные переменные. Поддерживаемый тип данных - REAL. По количеству переменных и их названию определяются количество портов с их наименованиями:

VAR_INPUT				
	service : REAL;
	food : REAL;
END_VAR

VAR_OUTPUT				
	tip : REAL;
END_VAR
  1. Каждый входной параметр должен пройти процесс фазификации. Необходимо определить границы и функции принадлежности для каждого признака:

FUZZIFY service			
	TERM poor := (0, 1) (4, 0) ; 
	TERM good := (1, 0) (4,1) (6,1) (9,0);
	TERM excellent := (6, 0) (9, 1);
END_FUZZIFY
  1. Выходную переменную необходимо дефазифицировать. Необходимо определить границы и функции принадлежности для каждого признака:

DEFUZZIFY tip			
	TERM cheap := (0,0) (5,1) (10,0);
	TERM average := (10,0) (15,1) (20,0);
	TERM generous := (20,0) (25,1) (30,0);
  1. Необходимо выбрать метод дефазификации: COG (центр тяжести), COGS (центр тяжести точки), COA (бисектор), LM (наименьший максимум), RM (наибольший максимум), MM (средний максимум):

METHOD : COG;		
	DEFAULT := 0;		
END_DEFUZZIFY
  1. Нужно выбрать принцип действия операций:

RULEBLOCK No1
	AND : MIN;			
	ACT : MIN;			
	ACCU : MAX;	
  1. Задать правила из входных переменных, используя стандартные операции AND, OR, NOT:

	RULE 1 : IF service IS poor OR food IS rancid THEN tip IS cheap;
	RULE 2 : IF service IS good THEN tip IS average; 
	RULE 3 : IF service IS excellent AND food IS delicious THEN tip IS generous;
END_RULEBLOCK

END_FUNCTION_BLOCK

2.  Функции принадлежности#

  1. Треугольный (первая координата по оси x, вторая координата по оси x (вершина), третья координата по оси x).

TERM test := trian 0 5 10;

  1. Трапецеидальный (первая координата по оси x нижнего основания, первая координата по оси x верхнего основания, вторая координата по оси х верхнего основания, вторая координата по оси х нижнего основания).

TERM test := trape 0 2 3 4;

  1. Гаусса (математическое ожидание, среднеквадратичное отклонение)

TERM test := gauss 5 2;

  1. Функция колокола (расстояние спуска по координате х, длинна верхнего основания, значение)

TERM test := gbell 2 4 2;

  1. S и Z образный (усилитель, центр)

TERM test := sigm -4 3;

  1. Точка (координата точки)

TERM test := 5;

  1. Кусочно-линейная ((x1,y1) (x1,y1)… (xn,yn))

TERM test := (0,1) (2,1) (4,0).

3.  Свойства#

Свойство

Значение по умолчанию

Описание

Единицы измерения

Количество входных портов

-

Количество входов и выходов зависит от содержимого загруженного файла

–

Количество выходных портов

-

Количество входов и выходов зависит от содержимого загруженного файла

–

4.  Входы и выходы#

Параметры

Вход/Выход

Описание

Единицы измерения

Тип порта

-

Вход

Определяется по содержимому загруженного файла

–

Автоматика

-

Выход

Определяется по содержимому загруженного файла

–

Автоматика

Для того, чтобы посмотреть возможности подключения блока необходимо перейти на страницу Описание портов блоков

См. также

С примером использования данного блока можно ознакомиться в разделе Системы управления практическое руководство Управление клапаном подачи воды в резервуар на основе нечёткой логики