В настоящем подразделе приведены примеры описания элементов языка нечеткого управления. Подробное продукционное правило приведено в подразделе 5.4.
5.2.1 Интерфейс функционального блока
В соответствии с разделом 4, внешнее представление нечеткого функционального блока требует, чтобы использовались следующие стандартные элементы языка, установленные в МЭК 61131-3:
FUNCTION_BLOCK function_block_name | Функциональный блок |
VAR_INPUT | Описание входного параметра |
VAR_OUTPUT | Описание выходного параметра |
VAR | Локальные переменные |
С помощью данных элементов языка можно описать интерфейс функционального блока. Интерфейс функционального блока определяется с помощью параметров, которые переходят в функциональный блок и выходят из него. Типы данных параметров должны определяться в соответствии с МЭК 61131-3.
На рисунке 3 представлен пример описания функционального блока на языках структурированного текста (ST) и диаграмм функциональных блоков (FBD).
Рисунок 3 - Пример описания интерфейса функционального блока на языках ST и FBD
5.2.2 Фаззификация
Значения входных переменных должны быть преобразованы в степень принадлежности по функции принадлежности, определенной для переменной. Преобразование описывается между ключевыми словами FUZZIFY и END_FUZZIFY.
FUZZIFY variable_name |
TERM term_name:= membership_function; |
.... END_FUZZIFY |
После ключевого слова FUZZIFY должно быть указано имя переменной, используемой для фаззификации, т.е. имя переменной, предварительно определенной в разделе VAR_INPUT. Лингвистическая переменная должна быть описана одним или несколькими лингвистическими термами. Лингвистические термы, введенные ключевым словом TERM, с целью фаззификации переменной описываются функцией принадлежности. Функция принадлежности представляет собой кусочно-линейную функцию, которая определяется таблицей точек.
membership_function::= (point i), (point j), ... |
Каждая точка представляет собой пару значений переменной и степень принадлежности данных значений, разделенные запятой. Пары заключены в скобки и разделены запятыми.
точка i::= значение входа i | variable_name входа i, значение i степени принадлежности |
С помощью данного выражения могут быть определены все простые элементы, например быстрое изменение по линейному закону и по треугольнику. Точки должны быть заданы в порядке возрастания значения переменной. Функция принадлежности между очередными точками является линейной. Таким образом, степень принадлежности для каждого терма рассчитывается по четкому входному значению с помощью линейной интерполяции между двумя соответствующими соседними точками функции принадлежности.
Минимальное количество точек равно двум. Максимальное количество ограничивается согласно классам соответствия, см. раздел 6.
Пример функции принадлежности с тремя точками для лингвистического терма "тепло":