• Текст документа
  • Статус
Оглавление
Поиск в тексте
Действующий


ГОСТ Р МЭК 61131-7-2017

     
     
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

КОНТРОЛЛЕРЫ ПРОГРАММИРУЕМЫЕ

Часть 7

Программирование нечеткого управления

Programmable controllers. Part 7. Fuzzy control programming

     
     
ОКС 35.240.50
          25.040.40

Дата введения 2018-09-01

     Предисловие

     

     1 ПОДГОТОВЛЕН Негосударственным образовательным частным учреждением дополнительного профессионального образования "Новая инженерная школа" (НОЧУ "НИШ") на основе собственного перевода на русский язык англоязычной версии указанного в пункте 4 стандарта, который выполнен Российской комиссией экспертов МЭК/ТК 65 и Федеральным государственным унитарным предприятием "Всероссийский научно-исследовательский институт стандартизации и сертификации в машиностроении" (ВНИИНМАШ)
     

     2 ВНЕСЕН Техническим комитетом по стандартизации ТК 306 "Измерения и управление в промышленных процессах"
     

     3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 15 сентября 2017 г. N 1127-ст
     

     4 Настоящий стандарт идентичен международному стандарту МЭК 61131-7:2000* "Контроллеры программируемые. Часть 7. Программирование нечеткого управления" (IEC 61131-7:2000 "Programmable controllers - Part 7: Fuzzy control programming", IDT).
________________
     * Доступ к международным и зарубежным документам, упомянутым здесь и далее по тексту, можно получить, перейдя по ссылке на сайт http://shop.cntd.ru. - Примечание изготовителя базы данных.
     
          
     Международный стандарт разработан Техническим комитетом МЭК ТК 65 "Измерение, управление и автоматизация в промышленных процессах".
     
     При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА
     

     5 ВВЕДЕН ВПЕРВЫЕ
     
     
     Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
     
     

Введение

     
     Теория нечеткой логики применительно к вопросам управления называется нечетким управлением. Нечеткое управление представляет собой технологию, которая позволяет расширить возможности промышленной автоматики и пригодна для решения задач уровня управления, выполняемых, как правило, программируемыми контроллерами.
     
     Нечеткое управление, скорее, основано на практическом применении знаний, представленных в так называемых базах лингвистических правил, чем на использовании аналитических моделей (эмпирических или теоретических). Применение нечеткого управления возможно при наличии специальных знаний, которые могут быть представлены математически. При этом становится возможным использование имеющихся знаний для усовершенствования технологических процессов и выполнения различных задач. Например, для:
     
     - управления (замкнутые или разомкнутые системы, одна или несколько переменных в линейных или нелинейных системах);
     
     - настройки параметров систем в интерактивном или автономном режиме;
     
     - классификации и распознавания образов;
     
     - принятия решений в режиме реального времени (отправить изделие на станок А или Б?);
     
     - помощи операторам в принятии решения или при регулировании параметров;
     
     - обнаружения и диагностики неисправностей систем.
     
     Широкий спектр вариантов применения и естественный подход, основанный на приобретенном человеком опыте, делает нечеткое управление основным инструментом, который должен стать стандартом для потребителей программируемых контроллеров.
     
     Кроме того, нечеткое управление может комбинироваться с классическими методами управления.
     
     Применение нечеткого управления может иметь преимущества в тех случаях, когда отсутствует точная модель технологического процесса, аналитическую модель сложно рассчитывать в режиме реального времени или трудно разработать в принципе.
     
     Другим преимуществом нечеткого управления является возможность непосредственного использования опыта, приобретаемого потребителем. Кроме того, отсутствует необходимость моделировать весь контроллер с использованием нечеткого управления, так как в некоторых случаях нечеткое управление применяется для интерполяции между последовательностью локально линейных моделей, для динамической адаптации параметров линейного контроллера, превращающих его в нелинейный, или, наоборот, для концентрации на определенной, требующей оптимизации функции имеющегося контроллера.
     
     Нечеткое управление является многозначным управлением, которое не ограничивается значениями "истина" и "ложь". Поэтому нечеткое управление полезно при создании модели эмпирических знаний, определяющей, какие управляющие воздействия должны выполняться при заданном наборе входных сигналов.
     
     Современная теория и уже внедренные системы нечеткого управления существенно различаются в части терминологии (определения), функций (функциональные возможности) и практической реализации (инструментарий).
     
     Нечеткое управление применяется как при решении небольших и простых задач, так и в сложных проектах. Чтобы охватить все варианты использования, в настоящем стандарте функции соответствующей системы нечеткого управления отображаются в определенных классах соответствия.
     
     Базовый класс определяет минимальный набор функций, который должен обеспечиваться всеми совместимыми системами. За счет этого упрощается обмен программами нечеткого управления.
     
     Дополнительные стандартные функции определяются в расширенном классе. Программы нечеткого управления, использующие такие функции, могут быть перенесены между системами с использованием такого же набора функций только полностью, в противном случае возможен лишь частичный обмен. Настоящий стандарт не требует, чтобы все совместимые системы выполняли все функции расширенного класса, однако допускает возможность (частичного) переноса и предотвращение использования нестандартных функций. Поэтому совместимая система не должна предлагать нестандартные функции, которые могут быть выполнены с использованием стандартных функций базового и расширенного классов.
     
     Чтобы не исключать системы, применяющие свои сложные функции из числа соответствующих настоящему стандарту и не препятствовать процессу дальнейшего развития, настоящий стандарт разрешает применять дополнительные нестандартные функции, которые не охвачены базовым и расширенным классами. Тем не менее такие функции должны быть перечислены стандартным способом для обеспечения простоты их распознавания как нестандартных функций.
     
     Возможность переноса приложений нечеткого управления зависит от разных систем программирования, а также от характеристик систем управления. Эти зависимости приводятся в контрольном перечне данных, который должен быть предоставлен изготовителем.
     
     

1 Область применения

     
     Настоящий стандарт устанавливает язык программирования приложений нечеткого управления, применяемый программируемыми контроллерами.
     
     Целью настоящего стандарта является достижение изготовителями и потребителями общего понимания основных средств интегрирования приложений нечеткого управления в языки программируемых контроллеров в соответствии с МЭК 61131-3, а также возможности обмена переносимыми программами нечеткого управления между разными системами программирования.
     
     Для достижения поставленной цели в приложении А приводится краткое описание теории нечеткого управления и нечеткой логики, необходимое для понимания настоящего стандарта. Пользователям настоящего стандарта, не знакомым с теорией нечеткого управления, может быть полезно сначала обратиться к приложению А.
     
     

2 Нормативные ссылки

     
     В настоящем стандарте использованы нормативные ссылки на следующие стандарты*.
_______________
     * Таблицу соответствия национальных стандартов международным см. по ссылке. - Примечание изготовителя базы данных.     
     
          
     IEC 60050-351:1998, International Electrotechnical Vocabulary (IEV) - Part 351: Automatic control (Международный электротехнический словарь (IEV). Часть 351. Автоматическое управление)
     
     IEC 61131-3:1993, Programmable controllers - Part 3: Programming languages (Программируемые контроллеры. Часть 3. Языки программирования)
     
     

3 Термины и определения

     
     В настоящем стандарте применены следующие термины с соответствующими определениями. Определения для элементов языка дополнительно приведены в МЭК 61131-3.
     
     Примечание - Термины, определения которых даны в настоящем разделе, выделяются курсивом в тексте определений.
     
     

     3.1 аккумуляция (accumulation)
     
     агрегирование результатов (result aggregation): Объединение результатов лингвистических правил в конечный результат.
     

     3.2 агрегирование (aggregation)
     
     определение степени выполнения (determination of degree of firing): Объединение степени принадлежности всех индивидуальных подусловий в правиле для расчета степени выполнения условия правила.
     

     3.3 активизация (activation): Процесс, которым степень выполнения условия воздействует на выходное нечеткое множество.
     

     3.4 результат (conclusion)
     
     следствие (consequent): Выходное значение лингвистического правила, то есть действие, которое должно выполняться (часть THEN правила нечеткого управления IF..THEN).
     

     3.5 условие (condition)
     
     предпосылка (antecedent): Выражение, включая подусловия, объединенные нечеткими операторами И, ИЛИ, НЕ.
     

     3.6 четкое множество (crisp set): Особый случай нечеткого множества, в котором функция принадлежности принимает только два значения, обычно определяемые как 0 и 1.
     

     3.7 дефаззификация (defuzzification): Преобразование нечеткого множества в числовое значение.
     

     3.8 степень принадлежности (degree of membership): Значение функции принадлежности.
     

     3.9 фаззификация (fuzzification): Определение степени принадлежности четкого входного значения лингвистических термов, определенных для каждой входной лингвистической переменной.
     

     3.10 нечеткое управление (fuzzy control): Тип управления, алгоритм управления в котором основан на нечеткой логике.
     
     [IEV 351-17-51, измененный]
     

     3.11 нечеткая логика (fuzzy logic): Совокупность математических теорий, основанных на принципах нечеткого множества. Нечеткая логика является одним из типов бесконечнозначной логики.
     

     3.12 нечеткий оператор (fuzzy operator): Оператор, используемый в теории нечеткой логики.
     

     3.13 нечеткое множество (fuzzy set): Нечеткое множество A определяется как множество упорядоченных пар (x, ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления), где x - это элемент предметной области U, а ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления - функция принадлежности, которая сопоставляет каждому xГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управленияU действительное число ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления[0,1], определяющее степень того, насколько x принадлежит множеству.
     

     3.14 логический вывод (inference): Применение лингвистических правил к входным значениям с целью определения выходных значений.
     

     3.15 лингвистическое правило (linguistic rule): Правило IF-THEN (если ..., то ...) с условием и результатом, причем одно или оба являются лингвистическими.
     

     3.16 лингвистический терм (linguistic term): В контексте лингвистического управления лингвистические термы определяются нечеткими множествами.
     

     3.17 лингвистическая переменная (linguistic variable): Переменная, которая принимает значения из диапазона лингвистических термов.
     

     3.18 функция принадлежности (membership function): Функция, которая в предметной области определяет степень принадлежности данному нечеткому множеству.
     
     [IEV 351-17-52, измененный]
     

     3.19 синглтон (singleton): Нечеткое множество, функция принадлежности которого равна единице в одной точке и нулю во всех других точках.
     

     3.20 подусловие (subcondition): Элементарное выражение в форме переменной или терма "лингвистическая переменная IS лингвистический терм".
     

     3.21 база правил (rule base): Набор лингвистических правил для достижения определенных целей.
     

     3.22 весовой коэффициент (weighting factor): Значение в интервале 0...1, которое устанавливает степень важности, достоверности, уверенности для лингвистического правила.
     
     

4 Интеграция в программируемый контроллер

     
     В соответствии с разделом 5, приложения нечеткого управления, программируемые на языке нечеткого управления FCL, должны быть заключены в функциональные блоки (или программы), как это определено в МЭК 61131-3. В настоящем стандарте применяются понятия типов и экземпляров функциональных блоков, приведенные в МЭК 61131-3.
     
     Типы функциональных блоков, определенные в языке нечеткого управления FCL, должны устанавливать входные и выходные параметры, а также специфические правила и описания нечеткого управления.
     
     Соответствующие экземпляры функциональных блоков должны содержать специфические данные приложений нечеткого управления.
     
     Функциональный блок, определенный в языке нечеткого управления FCL, может применяться в программах и функциональных блоках, написанных на любом из языков, приведенных в МЭК 61131-3, например, на языке релейной логики, на языке программирования и т.д. Типы данных входных и выходных параметров функционального блока или программы, написанных на FCL, должны совпадать с соответствующей "вызывающей средой", как показано на рисунке 1.
     
     

Рисунок 1 - Пример функционального блока нечеткого управления в представлении FBD

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

     
Рисунок 1 - Пример функционального блока нечеткого управления в представлении FBD

     
     В данном примере Valve_Control_1 - это экземпляр определенного потребителем функционального блока, имеющий тип Fuzzy_FB. В соответствии с разделом 5, тип функционального блока Fuzzy_FB может программироваться на языке нечеткого управления FCL. В данном случае функциональный блок Fuzzy_FB используется в программе или в функциональном блоке, который представлен на графическом языке FBD (Function Block Diagram, диаграммы функциональных блоков) в МЭК 61131-3.
     
     

5 Язык нечеткого управления FCL

5.1 Обмен программами нечеткого управления

     
     Определение языка нечеткого управления FCL основывается на определении языков программирования, определенных в МЭК 61131-3. Взаимодействие алгоритма нечеткого управления с его программной средой "прячет" его от программы. Поэтому в соответствии с МЭК 61131-3 внешне алгоритм нечеткого управления представлен в виде функционального блока. В соответствии с настоящим разделом должны быть определены элементы, необходимые для описания внутренних логических частей функционального блока нечеткого управления, например функции принадлежности, правила, операторы и методы.
     
     Элементы языка FCL стандартизируют общее представление обмена данными между средствами настройки нечеткого управления разных изготовителей, как показано на рисунке 2. Используя данное общее представление, каждый изготовитель программируемых контроллеров может поддерживать аппаратное обеспечение, редакторы программного обеспечения и компиляторы. Изготовитель должен лишь применить интерфейс данных к его специфическому редактору. Заказчик должен иметь возможность обмениваться проектами нечеткого управления с разными изготовителями.
     
     

Рисунок 2 - Обмен данными программ в языке нечеткого управления (FCL)

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

     
Рисунок 2 - Обмен данными программ в языке нечеткого управления (FCL)

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

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

     
Рисунок 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.
     
     Пример функции принадлежности с тремя точками для лингвистического терма "тепло":
     

     TERM тепло: = (17,5; 0,0) (20,0; 1,0) (22,5; 0,0);

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

Рисунок 4 - Пример термов быстрого изменения по линейному закону

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

     
Рисунок 4 - Пример термов быстрого изменения по линейному закону

     
     Примечание - Тип данных для точек функций принадлежности не определяется. Изготовитель должен предоставить компилятор, который поддерживает любые необходимые преобразования.
     
     
     Для адаптации приложения нечеткого управления в интерактивном режиме базовые точки в функции принадлежности могут быть изменены. Это можно сделать с помощью переменных, которые вводятся в функциональный блок. Такие переменные должны быть описаны в разделе функционального блока VAR_INPUT. Пример использования переменных для определения точек для функций принадлежности приведен на рисунке 5.
     
     Примечание - Значения точек функции принадлежности во время выполнения могут лежать вне последовательности.
     
     

Рисунок 5 - Пример использования переменных функции принадлежности

VAR_INPUT

Температура: REAL;

(*данный ввод должен быть фаззифицирован*)

Давление: REAL;

(*данный ввод должен быть фаззифицирован*)

bp_warm1, bp_warm2: REAL;

(*данные вводы для адаптации в интерактивном режиме*)

END_VAR

FUZZIFY температура

TERM тепло:= (bp_warm1, 0,0), (21,0; 1,0), (bp_warm2, 0,0);

..
END_FUZZIFY

     
Рисунок 5 - Пример использования переменных функции принадлежности

     

     5.2.3 Дефаззификация
     
     Лингвистическая переменная для выходной переменной должна быть преобразована в значение. Такое преобразование описывается между ключевыми словами DEFUZZIFY и END_DEFUZZIFY.
     
     После ключевого слова DEFUZZIFY должно быть указано имя переменной, используемой для дефаззификации. Это имя предварительно определенной в разделе VAR_OUTPUT переменной.
     

DEFUZZIFY variable_name

RANGE (min..max);
TERM term_name:= membership_function;
defuzzification_method;
default_value;

END_DEFUZZIFY

     
     Определение лингвистических термов дается в 5.2.2.
     
     Синглтоны представляют собой специальные функции принадлежности, используемые для выходов с целью упрощения дефаззификации. Синглтоны описываются только одним значением лингвистического терма. На рисунке 6 приведены примеры термов синглтонов.
     
     

Рисунок 6 - Примеры термов синглтонов

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

     
Рисунок 6 - Примеры термов синглтонов

     
     Метод дефаззификации должен быть определен с помощью элемента языка METHOD.
     

METHOD: defuzzification_method;

     
     Допускаются следующие методы дефаззификации (см. таблицы 1 и 2).
     
     
Таблица 1 - Методы дефаззификации
     

Ключевое слово

Расшифровка

CoG

Центр тяжести (примечание 1)

CoGS

Центр тяжести для синглтонов

CoA

Центр площади (примечания 2 и 3)

LM

Крайний левый максимум (примечание 4)

RM

Крайний правый максимум (примечание 4)

     Примечание 1 - Центр тяжести эквивалентен центроиду.
     
     Примечание 2 - Центр площади эквивалентен медиане.
     
     Примечание 3 - При использовании синглтонов CoA неприменим.
     
     Примечание 4 - Методы дефаззификации LM и RM асимметричны относительно нуля.
     

     
     
Таблица 2 - Формулы методов дефаззификации
     

COG

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

COGS

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

COA

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

RM

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

LM

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

     

     где:
     
     U - результат дефаззификации;
     
     u - выходная переменная;
     
     p - количество синглтонов;
     
     ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления - функция принадлежности накопленных нечетких множеств;
     
     i - индекс;
     
     Min - минимальное значение дефаззификации, определенное в RANGE. В случае синглтонов ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления;
     
     Max - максимальное значение дефаззификации, определенное в RANGE. В случае синглтонов ГОСТ Р МЭК 61131-7-2017 Контроллеры программируемые. Часть 7. Программирование нечеткого управления*;
     
     sup - наибольшее значение;
     
     inf - наименьшее значение.

________________
     * Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.     
     
     
     Если степень принадлежности равна 0 для всех лингвистических термов выходной переменной, то это значит, что активные правила для данной выходной переменной отсутствуют. В таком случае дефаззификация не может сгенерировать подходящее выходное значение. Поэтому для выходного значения допускается назначать значение по умолчанию. Такое значение по умолчанию является значением выходной переменной только в том случае, если не работает ни одно правило.
     

     DEFAULT:= значение | NC;

     
     Значение должно быть указано после ключевого слова DEFAULT. В противном случае должно быть задано NC (без изменений) для указания на то, что выходное значение останется неизменным, если не работает ни одно правило.
     
     Диапазон - это описание минимального и максимального значений, которые разделяются двоеточием.
     

     RANGE:= (минимальное значение... максимальное значение);

     
     RANGE используется для ограничения каждой функции принадлежности до диапазона каждой выходной переменной. Если для выходных функций принадлежности используется синглтон, RANGE не действует.
     
     Если диапазон не определен, по умолчанию должен использоваться диапазон типа данных переменной, указанный в МЭК 61131-3.
     

     5.2.4 Блок правил
     
     Логический вывод нечеткого алгоритма должен быть определен одним или несколькими блоками правил. Для надлежащей обработки и обеспечения возможности разделения базы правил на разные модули допускается использование нескольких блоков правил. Каждый блок правил должен иметь уникальное имя.
     
     Правила должны быть указаны между ключевыми словами RULEBLOCK и END_RULEBLOCK.
     

RULEBLOCK имя_блока_правил

определение_операции;
[метод_активизации;]
метод_аккумуляции;
правила;

END_RULEBLOCK

     
     Внутри блока правил используются нечеткие операции.
     

определение_операции ::= операция: алгоритм

     
     Для соблюдения закона Моргана алгоритмы операций AND и OR должны применяться попарно; например, MAX необходимо применять с операцией OR, если с операцией AND применяется MIN.
     
     
Таблица 3 - Парные алгоритмы
     

Операция OR

Операция AND

Ключевое слово для алгоритма

Алгоритм

Ключевое слово для алгоритма

Алгоритм

MAX

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

MIN

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

ASUM

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

PROD

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

BSUM

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

BDIF

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

     

     Пример блоков правил:
     

     первый RULEBLOCK

AND: MIN;

..

     END_RULEBLOCK

     второй RULEBLOCK

AND: PROD;

..

     END_RULEBLOCK

     
     Метод активизации определяется следующим элементом языка:
     

     ACT: метод_активизации;

     
     Могут использоваться следующие методы активизации (см. таблицу 4):
     
     
Таблица 4 - Методы активизации
     

Название

Ключевое слово

Алгоритм

Продукт

PROD

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

Минимальная

MIN

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

Примечание - Метод активизации не имеет отношения к синглтонам.

     
     Метод аккумуляции определяется следующим элементом языка:
     

ACCU: метод_аккумуляции;
     

     
     Могут применяться следующие методы аккумуляции (см. таблицу 5):
     
     
Таблица 5 - Методы аккумуляции
     

Название

Ключевое слово

Формула

Максимум

MAX

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

Ограниченная сумма

BSUM

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

Нормализованная сумма

NSUM

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

     
     Входными данными блока правил являются лингвистические переменные с набором лингвистических термов. Каждый терм имеет присвоенную ему степень принадлежности.
     
     Правила определяются внутри блока правил. Каждое правило должно начинаться с ключевого слова RULE с идущим за ним названием правила, а заканчиваться должно точкой с запятой. Каждое правило внутри блока имеет уникальный номер.
     

     Номера RULE: IF условие THEN результат [WITH весовой коэффициент];

     
     Само правило должно начинаться с ключевого слова IF с идущим за ним условием. После условия следует результат, начинающийся с ключевого слова THEN.
     
     Допускается комбинировать в одном правиле несколько подусловий и входных переменных. Назначение переменных состоит в разрешении импорта нечеткой степени принадлежности в нечеткий функциональный блок. Переменные должны быть определены между ключевыми словами IF и THEN и объединены операциями с ключевыми словами AND, OR или NOT.
     
     Приоритет операций (см. таблицу 6) определяется в соответствии с булевой алгеброй, приведенной в таблице 3.
     
     
Таблица 6 - Приоритет операций
     

Приоритет

Операция

1

( ) скобки

2

NOT

3

AND

4

OR

     
     Упрощенный пример правила:
     

     RULE 1: IF подусловие 1 AND переменная 1 OR переменная 2 THEN результат;

     
     На базовом уровне соответствия операция OR может быть реализована определением двух правил:
     

     RULE 3: IF подусловие 1 OR подусловие 2 THEN результат;
     

заменено на:

     
     RULE 3а: IF условие 1 THEN результат;
     
     RULE 3b: IF условие 2 THEN результат.

     
     Подусловие начинается с названия лингвистической переменной, за которым идет ключевое слово IS с необязательным NOT и одним лингвистическим термом лингвистической переменной, используемой в условии.
     

Подусловие := лингвистическая_переменная IS [NOT] лингвистический_терм

     
     Лингвистические термы, применяемые в условии, должны соответствовать лингвистической переменной в том же условии. Применяемый терм должен быть предварительно определен с помощью ключевого слова TERM.
     
     Пример подусловий:
     

Темп. IS жарко

Темп. IS NOT жарко

     
     Кроме того, перед подусловием можно применять ключевое слово NOT. При этом могут применяться скобки.
     

IF NOT темп. IS жарко THEN ...

или

IF NOT (темп. IS жарко) THEN ...

     
     Результат может быть разделен на несколько подрезультатов и выходных переменных.
     
     Подрезультат должен начинаться с названия лингвистической переменной, за которым идет ключевое слово IS и один лингвистический терм данной лингвистической переменной.
     

     Подрезультат := лингвистическая_переменная IS лингвистический_терм

     
     Пример с несколькими подрезультатами из одной или нескольких строк:
     
     Допускается присваивать каждому подрезультату весовой коэффициент, который является числом со значением, лежащим между 0,0 и 1,0, или переменной. Это делается с помощью ключевого слова WITH, за которым следует весовой коэффициент.
     
     Весовой коэффициент должен уменьшать степень принадлежности (функция принадлежности) подрезультата путем умножения итога подрезультата на весовой коэффициент.
     
     Для внешнего управления параметрами приложения нечеткого управления весовой коэффициент может быть переменным. В таком случае переменная должна быть описана в разделе VAR_INPUT. Это дает возможность во время работы менять весовой коэффициент для адаптации программы нечеткого управления к требованиям технологического процесса.
     
     Если подрезультату не присвоено ключевое слово WITH, должен быть по умолчанию принят весовой коэффициент 1,0.
     

     IF условие THEN подрезультат [WITH весовой_коэффициент] подрезультат;

     
     Пример постоянного весового коэффициента:
     

     F темп. IS холодно AND давление IS низкое THEN

клапан 1 IS вход WITH 0,5,

клапан 2 IS закрыт;

     
     Пример переменного весового коэффициента:
     

VAR_INPUT

w_мое_правило1: REAL:= 0,8;

END_VAR

RULEBLOCK правило_темп

RULE 1:

IF темп.

IS холодная AND давление IS низкое

THEN клапан

IS вход WITH w_мое_правило1;

..

END_RULEBLOCK

     

     5.2.5 Необязательные параметры
     
     Для реализации различных целевых систем может потребоваться предоставить системе дополнительную информацию, позволяющую осуществить наилучшее преобразование приложений нечеткого управления.
     
     Такая дополнительная информация может быть необходима элементу языка, находящемуся между OPTIONS и END_OPTIONS.
     

OPTIONS

спец_параметры_приложения

END_OPTIONS

     
     Согласно разделу 6, данные элементы языка должны применяться для функций в классе соответствия открытого уровня.
     
     

5.3 Пример FCL

     
     На рисунке 7 приведен пример языка нечеткого управления.
     
     

Рисунок 7 - Пример нечеткого функционального блока

FUNCTION_BLOCK Нечеткий_ФБ

VAR_INPUT

температура:

REAL;

давление:

REAL;

END_VAR

VAR_OUTPUT

клапан:

REAL;

END_VAR

FUZZIFY температура

TERM холодно

:= (3, 1) (27, 0);

TERM жарко

:= (3, 0) (27, 1);

END_FUZZIFY

FUZZIFY давление

TERM низкое

:= (55, 1) (95, 0);

TERM высокое

:= (55, 0) (95, 1);

END_FUZZIFY

DEFUZZIFY клапан

TERM дренаж

:= -100;

TERM закрыт

:= 0;

TERM вход

:= 100;

METHOD: CoGS;

DEFAULT

:= 0;

END_DEFUZZIFY

RULEBLOCK N 1

AND: MIN;

ACCU: MAX;

RULE 1: IF температура IS холодно AND давление IS низкое

THEN клапан IS вход;

RULE 2: IF температура IS холодно AND давление IS высокое

THEN клапан IS закрыт WITH 0,8;

RULE 3: IF температура IS жарко AND давление IS низкое

THEN клапан IS закрыт;

RULE 4: IF температура IS жарко AND давление IS высокое

THEN клапан IS дренаж;

END_RULEBLOCK

END_FUNCTION_BLOCK

     
Рисунок 7 - Пример нечеткого функционального блока

5.4 Продукционные правила и ключевые слова языка нечеткого управления (FCL)

     
     Метод спецификации текстовых языков для программируемых контроллеров определяется в соответствии с МЭК 61131-3, приложение А. Данный метод спецификации применяется в настоящем стандарте для FCL.
     
     Формальные характеристики элементов текстовых языков программирования, установленных в МЭК 61131-3, определяются в соответствии с МЭК 61131-3, приложение В. Для FCL применяется следующее подмножество элементов языка в соответствии с МЭК 61131-3, приложение В:
     

     В.1.1 Буквы, цифры и идентификаторы;
     

     В.1.2 Константы;
     

     В.1.3 Типы данных;
     

     В.1.4 Переменные.
     

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

     описание_функционального_блока ::=

'FUNCTION_BLOCK' имя_функционального_блока
{описания_пер_ввода_вывода_фб}
{другие_описания_пер}
тело_функционального_блока
'END_FUNCTION_BLOCK'

     описания_пер_ввода_вывода_фб ::=

входные_описания | выходные_описания

     другие_описания_пер ::=

описания_пер

     тело_функционального_блока ::=

{блок_фаззификации}
{блок_дефаззификации}
{блок_правил}
{доп_блок}

     блок_фаззификации ::=

'FUZZIFY' имя_переменной

     {лингвистический_терм}

'END_FUZZIFY

     блок_дефаззификации ::=

Доступ к полной версии этого документа ограничен

Ознакомиться с документом вы можете, заказав бесплатную демонстрацию систем «Кодекс» и «Техэксперт».

Что вы получите:

После завершения процесса оплаты вы получите доступ к полному тексту документа, возможность сохранить его в формате .pdf, а также копию документа на свой e-mail. На мобильный телефон придет подтверждение оплаты.

При возникновении проблем свяжитесь с нами по адресу spp@kodeks.ru

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

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

Номер документа: МЭК 61131-7-2017

Вид документа: ГОСТ Р

Принявший орган: Росстандарт

Статус: Действующий

Опубликован: Официальное издание. М.: Стандартинформ, 2017 год
Дата принятия: 15 сентября 2017

Дата начала действия: 01 сентября 2018
Информация о данном документе содержится в профессиональных справочных системах «Кодекс» и «Техэксперт»
Узнать больше о системах