Fuzzy Logic#
Внешний вид блока в REPEAT VISION#
Fuzzy Logic - это блок, который реализует работу с нечеткой логикой. При выборе блока происходит инициализация (рис. 1), где необходимо загрузить файл с расширением .fcl - Fuzzy Contol Language.
Важно
Количество и названия портов определяются по содержимому загруженного файла.
Рис. 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#
Необходимо задать название функции блока:
FUNCTION_BLOCK tipper
Определяются входные и выходные переменные. Поддерживаемый тип данных - REAL. По количеству переменных и их названию определяются количество портов с их наименованиями:
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
Выходную переменную необходимо дефазифицировать. Необходимо определить границы и функции принадлежности для каждого признака:
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);
Необходимо выбрать метод дефазификации: COG (центр тяжести), COGS (центр тяжести точки), COA (бисектор), LM (наименьший максимум), RM (наибольший максимум), MM (средний максимум):
METHOD : COG;
DEFAULT := 0;
END_DEFUZZIFY
Нужно выбрать принцип действия операций:
RULEBLOCK No1
AND : MIN;
ACT : MIN;
ACCU : MAX;
Задать правила из входных переменных, используя стандартные операции 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. Функции принадлежности#
Треугольный (первая координата по оси x, вторая координата по оси x (вершина), третья координата по оси x).
TERM test := trian 0 5 10;
Трапецеидальный (первая координата по оси x нижнего основания, первая координата по оси x верхнего основания, вторая координата по оси х верхнего основания, вторая координата по оси х нижнего основания).
TERM test := trape 0 2 3 4;
Гаусса (математическое ожидание, среднеквадратичное отклонение)
TERM test := gauss 5 2;
Функция колокола (расстояние спуска по координате х, длинна верхнего основания, значение)
TERM test := gbell 2 4 2;
S и Z образный (усилитель, центр)
TERM test := sigm -4 3;
Точка (координата точки)
TERM test := 5;
Кусочно-линейная ((x1,y1) (x1,y1)… (xn,yn))
TERM test := (0,1) (2,1) (4,0).
3. Свойства#
Свойство |
Значение по умолчанию |
Описание |
Единицы измерения |
|---|---|---|---|
Количество входных портов |
- |
Количество входов и выходов зависит от содержимого загруженного файла |
– |
Количество выходных портов |
- |
Количество входов и выходов зависит от содержимого загруженного файла |
– |
4. Входы и выходы#
Параметры |
Вход/Выход |
Описание |
Единицы измерения |
Тип порта |
|---|---|---|---|---|
- |
Вход |
Определяется по содержимому загруженного файла |
– |
Автоматика |
- |
Выход |
Определяется по содержимому загруженного файла |
– |
Автоматика |
Для того, чтобы посмотреть возможности подключения блока необходимо перейти на страницу Описание портов блоков
См. также
С примером использования данного блока можно ознакомиться в разделе Системы управления практическое руководство Управление клапаном подачи воды в резервуар на основе нечёткой логики