Статус документа
Статус документа

ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления

     5.2 Элементы языка нечеткого управления


В настоящем подразделе приведены примеры описания элементов языка нечеткого управления. Подробное продукционное правило приведено в подразделе 5.4.

5.2.1 Интерфейс функционального блока

В соответствии с разделом 4, внешнее представление нечеткого функционального блока требует, чтобы использовались следующие стандартные элементы языка, установленные в МЭК 61131-3:

FUNCTION_BLOCK function_block_name

Функциональный блок

VAR_INPUT
variable_name: data_type;
....
END_VAR

Описание входного параметра

VAR_OUTPUT
variable_name: data_type;
....

END_VAR
....

Описание выходного параметра

VAR
variable_name: data_type; END_VAR END_FUNCTION_BLOCK

Локальные переменные


С помощью данных элементов языка можно описать интерфейс функционального блока. Интерфейс функционального блока определяется с помощью параметров, которые переходят в функциональный блок и выходят из него. Типы данных параметров должны определяться в соответствии с МЭК 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.

Пример функции принадлежности с тремя точками для лингвистического терма "тепло":