Общие сведения.
Введение.
Рассматриваемые в этом разделе 8–разрядные контроллеры используются во встраиваемых микропроцессорных системах управления, создание которых помимо разработки алгоритма функционирования, выбора элементной базы и проектирования аппаратных средств включает разработку программного обеспечения, а также отладку отдельных частей системы и системы в целом в автономном режиме работы и совместно с объектом управления в реальных условиях.
Характеристики и параметры созданного приложения (микропроцессорной системы совместно с объектом управления) зависят от эффективности взаимодействия аппаратного и программного обеспечения. Поэтому важную роль в процессе создания приложений играет обеспеченность микроконтроллера средствами программирования и отладки. Объединение инструментальных средств разработки программного и аппаратного обеспечения является важным фактором, который не только существенно облегчает процесс разработки конкретного устройства, но и позволяет получить требуемые его характеристики и параметры.
Языки программирования.
Общие понятия. Работу любой микропроцессорной (в том числе и микроконтроллерной) системы можно рассматривать как исполнение последовательности поступающих на ее центральный процессор машинных команд в виде двоичных кодов, каждая из которых реализует некоторое элементарное действие. Микроконтроллерная система управления функционирует по определенному алгоритму, представляющему собой строго регламентированную последовательность действий, или машинных команд. Набор команд, на котором можно задать алгоритм функционирования системы управления, составляет машинный язык, или язык кодовых комбинаций. Какие команды включить в машинный язык решает разработчик при создании микроконтроллера (процессорного ядра). Поэтому каждое семейство микроконтроллеров имеет свой набор команд, или свой машинный язык. Обычно стремятся к упрощению машинных команд, что позволяет избежать сложных схемных решений и снизить затраты на изготовление контроллера. Так как большинство машинных языков примитивны, непосредственное использование их для описания алгоритма связано с известными трудностями.
Для представления алгоритма системы управления в понятном для человека виде служат специальные языки программирования, отличающиеся от естественных языков ограниченным количеством слов (операторов, команд) и строгими правилами их записи. Совокупность правил записи слов образует синтаксис языка программирования, а смысловое содержание слов и других конструкций языка — его семантику. Формализованное описание алгоритма с использованием языков программирования называется программой. Для составления текста программы используются редакторы. Нарушение формы записи программы приводит к синтаксическим ошибкам, а несоответствие текста программы алгоритму — к семантическим ошибкам. Процесс поиска ошибок в программе называется тестированием, процесс устранения ошибок — отладкой.
Языки
низкого
уровня
(Low–Level Language).
Для микроконтроллера (процессора) единственно понятным является язык кодовых комбинаций, образующих систему его команд. Программирование на этом языке позволяет:
? рационально использовать особенности архитектуры микроконтроллера и каждой его команды;
? наилучшим образом выполнять адресацию;
? задействовать для хранения программ минимальный объем памяти и, следовательно, снизить аппаратные затраты;
? получить минимальное время исполнения программы.
Главный недостаток языка кодовых комбинаций — трудности составления программ, связанные с написанием, поиском ошибок и внесением исправлений. Поэтому он применялся на раннем этапе развития компьютерной техники.
Вместо языка кодовых комбинаций стал использоваться язык ассемблера, относящийся к языку низкого уровня, который представляет каждую машинную команду не в виде кода, а с помощью символьных (условных) обозначений, называемых мнемониками. Так как система команд для каждой модели МК отличаются, каждой конкретной архитектуре соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде.
Мнемоническая форма записи операций, уменьшает указанные выше трудности при составлении программ. Составленная на языке ассемблера программа перед исполнением переводится на язык кодовых комбинаций и в таком виде помещается в память микропроцессорного устройства. Эта функция обычно выполняется с помощью программы трансляции, называемой ассемблером (отсюда и название языка), хотя ее можно выполнить и вручную. Язык макроассемблера, в котором предусмотрена возможность присвоения имени некоторой последовательности команд, позволяет в еще большей мере сократить запись программ и улучшить их обозримость. Язык ассемблера (макроассемблера) не является универсальным языком, т. е. каждому микроконтроллеру (микропроцессору) присущи свои особенности языка.
Язык ассемблера относится к машинно–ориентированным языкам и требует хорошего знания архитектуры микроконтроллера.
Достоинство
языков низкого уровня (ассемблеров) — возможность создания эффективных и компактных программ благодаря тому, что разработчик имеет доступ ко всем ресурсам микроконтроллера.
Недостатки
— требование знания архитектуры и понимания функционирования микроконтроллера, трудности написания и отладки больших программ, невозможность использования созданной программы на другой модели микроконтроллера.
Области применения
— микроконтроллеры, небольшие системные приложения, драйверы устройств, модули стыковки с нестандартным оборудованием, библиотеки, т. е. когда важнейшими требованиями являются компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам.
Языки высокого уровня
(
High
–
Level
Language
). Эти языки создавались с ориентацией на облечение труда программистов, поэтому в них используются термины, которые ближе к словам естественного языка или к математическим формулам, чем к командам ассемблера. Языки высокого уровня позволяют пользователю составлять программы, не имея представления о тех действиях, которые осуществляет микроконтроллер (процессор) во время выполнения программы. Особенности конкретных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносятся на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. Каждая команда языка высокого уровня эквивалентна нескольким командам в машинных кодах, поэтому программы, написанные на языках высокого уровня, более компактны, чем аналогичные программы в машинных кодах.
Языки высокого уровня предназначены для решения общих задач (проблем), и поэтому их часто называют проблемно–ориентированными языками. Благодаря указанным выше достоинствам они находят широкое применение при программировании микроконтроллерных систем управления.
Средства выполнения программы.
С помощью языка программирования создается текстовый вариант программы, описывающей разработанный алгоритм приложения. Для получения готовой для исполнения программы используется технология трансляции, которая реализуется с помощью дополнительной специальной программы. Такая программа, называемая транслятором, преобразует исходную программу в машинные коды. Трансляторы подразделяются на ассемблеры, компиляторы и интерпретаторы.
Ассемблер
(
Assembler
) является транслятором с языка ассемблера и жестко привязан к конкретному микропроцессору или микроконтроллеру. Трансляция исходной программы осуществляется за несколько проходов. В первом проходе команды преобразуются в машинный код и выделяются метки, символизирующие адреса. На втором (и возможно третьем) проходе метки преобразуются в коды соответствующих адресов, а при необходимости определяются обращения в библиотеки.
Компилятор
(
Compiler
) обрабатывает полный текст исходной программы, при этом:
? просматривает его (иногда несколько раз) в поисках синтаксических ошибок и выполняет определенный смысловой анализ;
? автоматически транслируют на машинный язык, т. е. генерируют машинный код;
? выполняет оптимизацию, позволяющую повысить быстродействие программы (например, с помощью инструкций, ориентированных на конкретный процессор, путем исключения ненужных команд, промежуточных вычислений и т. д.). В результате компиляции законченная программа получается компактной и эффективной, работает быстрее программы, выполняемой с помощью интерпретатора, и может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код. Однако следует учитывать, что эффективность разных версий компиляторов для одного и того же языка является различной, так что программы могут существенно отличаться, особенно при переводе в машинные коды коротких программ, к примеру, утилит.
Основной недостаток компиляторов — трудоемкость трансляции языков программирования, ориентированных на обработку данных сложной структуры, часто заранее неизвестной или динамически меняющейся во время работы программы. Тогда в машинный код приходится вставлять множество дополнительных проверок, анализировать наличие ресурсов операционной системы, динамически их захватывать и освобождать, формировать и обрабатывать в памяти компьютера сложные объекты, что на уровне жестко заданных машинных инструкций осуществить довольно трудно, а для ряда задач практически невозможно.
Интерпретатор
(
Interpreter
) — это специальная программа, которая сразу выполняет исходную программу по принципу строка — за строкой, преобразуя каждый оператор исходной программы в машинные коды и немедленно его выполняя. После выполнения текущего оператора интерпретатор переходит к следующему. Таким образом, интерпретатор моделирует некую виртуальную машину, для которой базовыми инструкциями служат не элементарные команды микроконтроллера (процессора), а операторы языка программирования.
Достоинства
интерпретатора состоят в том, что с его помощью можно в любой момент остановить работу программы, исследовать содержимое памяти, организовать диалог с пользователем, выполнить сколь угодно сложные преобразования данных и при этом постоянно контролировать состояние окружающей программно–аппаратной среды, благодаря чему достигается высокая надежность работы. Интерпретатор при выполнении каждого оператора проверяет множество характеристик и при необходимости подробно информирует разработчика о возникающих проблемах. Благодаря этому в исходной программе немедленно обнаруживаются не только синтаксические, но и некоторые логические ошибки и о них сразу же сообщается разработчику, который может скорректировать программу. Интерпретатор также удобен для использования в качестве инструмента изучения программирования, так как позволяет понять принципы работы любого отдельного оператора языка.
К недостаткам следует отнести большое время, затрачиваемое на выполнение программы. Это обусловлено тем, что:
? анализу подвергается каждый оператор исходной программы, поэтому один и тот же оператор будет выполняться в программе столько раз, сколько раз встречается по ходу ее выполнения;
? циклы активизируются и повторяются столько раз, сколько их указано в исходной программе (кстати, всего лишь одной строкой). Кроме того, при компиляции отсутствует возможность оптимального кодирования, поскольку программа выполняется сразу оператор за оператором.
Применение.
В силу указанных достоинств интерпретаторы используются при диалоговом режиме разработки, отладки и исполнения программы.
Основные этапы программирования.
Рассмотрим основные этапы создания
готовых программных модулей:
? создание исходной программы. На этом этапе составляется алгоритм задачи–приложения, выбирается язык программирования и с помощью редактора пишется текст программы. Использование специализированного редактора, позволяет в процессе ввода текста выделять ключевые слова и идентификаторы, автоматически проверять правильность синтаксиса программы. Исходная программа представляет собой один или несколько (для больших программ) текстовых файлов–модулей (с расширением .ТХТ);
? трансляция
исходной программы. На этом этапе исходный текст с помощью программы–компилятора переводится в объектный код (двоичные файлы–модули со стандартным расширением .
OBJ
). При обнаружении синтаксических ошибок объектный код не создается;
? создание загрузочного модуля. Полученные при компиляции отдельные файлы с объектным кодом необходимо объединить в одно целое. Кроме того, к ним надо добавить машинный код подпрограмм, реализующих стандартные функции (например, синус или логарифм). Такие функции содержатся в библиотеках (файлах со стандартным расширением .
LIB
), которые поставляются вместе с компилятором. Поэтому объектный код обрабатывается специальной программой — редактором связей (компоновщиком, сборщиком, линкером), который выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в библиотеках. Результатом обработки является исполнимый код, представляющий собой законченную программу–приложение в виде файла с расширением .ЕХЕ или .СОМ. Эта программа может быть выполнена только в среде с операционной системой, для которой она создавалась.
Инструментарий программирования.
Следует выделить пять базовых инструментов, которые используются для разработки приложений на основе микроконтроллеров:
? текстовый редактор, предназначенный для создания исходного кода программы. Существует множество самых разнообразных редакторов: от простых, которые позволяют ввести код с клавиатуры в файл, до специализированных редакторов, в которых после нажатия клавиш выполняется определенная программа. При этом клавиши могут программироваться пользователем. Программируемые редакторы избавляют пользователя от необходимости заботиться о правильном синтаксисе операторов;
? компилятор/ассемблер, выполняющий преобразование исходного кода в ассемблерные команды микроконтроллера и затем в формат, который может быть загружен в память программ;
? программный симулятор, представляющий собой программу, которая выполняет откомпилированный программный код в инструментальном компьютере системы разработки так, как он выполнялся бы в реальной (целевой) системе. Программный симулятор дает возможность вести наблюдение за программой и реакцией микроконтроллера на различные события. Он позволяет исследовать ситуации, трудно воспроизводимые на реальной аппаратуре. Для имитации внешних условий и ситуаций обычно используется специальный файл входных воздействий. Этот файл задает последовательность входных сигналов, поступающих на моделируемое устройство. Несмотря на то, что симуляторы не обеспечивают выполнение программы в режиме реального времени, многие разработчики предпочитают использовать их для моделирования работы устройств в процессе проектирования. Это обусловлено тем, что при симуляции используется исходный текст, а не файлы, сгенерированные компилятором. Следить за выполнением программы с помощью исходного текста намного проще, чем контролировать скомпилированный объектный код. Симуляция используется перед сборкой и включением реального устройства;
? аппаратный, или схемный (
In
–
Circuit
Emulator
—
ICE),
эмулятор,
позволяющий организовать интерфейс с микроконтроллером в реальном времени. При его использовании микроконтроллер подключается не к ПЗУ, а к ОЗУ программ и выполняет прикладные задачи с реальной скоростью;
? программатор памяти программ микроконтроллера. Помимо дешевых микроконтроллеров с масочно–программируемой памятью программ, выпускается широкий ассортимент контроллеров с
E(E)PROM
и флэш–памятью.
Такие МК программируются при разработке приложения. Для некоторых типов микроконтроллеров требуется специальный программатор, но чаще всего используются возможности внутрисистемного программирования
ISP
. В этом случае программатор является частью проектируемого устройства.
Проектирование МК–систем.
Исходные данные для проектирования микроконтроллерных систем содержат требования к алгоритмам управления и основным технико–экономическим показателям (производительности, энергопотреблению, стоимости, надежности, конструктивным и другим параметрам). Рассмотрим основные этапы проектирования МК–систем (рис. 5.1.1).
Разработка архитектуры системы.
На этом этапе решаются общие вопросы по выбору состава аппаратных и программных средств для разрабатываемой системы управления, при этом:
? распределяются функции между аппаратными и программными средствами, т. е. решаются, какие функции системы будут реализованы аппаратными средствами, а какие — программным обеспечением;
? выбираются тип микроконтроллера, тип памяти и ее объем, номенклатура периферийных устройств, протоколы обмена информацией и состав требуемых сигналов управления системой. Выбор типа микроконтроллера является ответственным шагом при создании системы, соответствующей современным требованиям. Поэтому необходимо учитывать не только технико–экономические характеристики микроконтроллера, но и уровень развития программно–аппаратных средств, предлагаемых для использования в процессе проектирования и отладки систем на его основе. Широкая номенклатура микроконтроллеров и средств отладки, выпускаемых различными фирмами, позволяет удовлетворить запросы подавляющего большинства потребителей;
? определяется номенклатура необходимых программных модулей, характер их взаимодействия, используемый язык программирования. Результатом выполнения этого этапа являются частные технические задания на проектирование аппаратных средств и программного обеспечения.
Разработка и автономная отладка аппаратных средств.
Этот этап может быть выполнен традиционными методами проектирования аппаратных средств, с помощью которых разрабатываются электрическая схема и печатная плата (или комплект плат), после чего выполняются монтаж и отладка системы. Однако путем использования полуфабрикатов или готовых изделий, выпускаемых в большом количестве рядом производителей, можно не только сократить сроки разработки аппаратных средств, но и повысить их качество. К таким изделиям относятся:
? оценочные комплекты (
Evaluation
Kit
), представляющие собой набор размещенных на плате аппаратных средств, достаточных для реализации несложных систем управления;
? отладочные платы или системы (
Evaluation
Board
,
System
) — размещенные на плате программно–аппаратные средства, обеспечивающие моделирование и отладку систем различного назначения на базе определенных моделей микроконтроллеров;
? целевые платы (
Target
Board
— ТВ) — программно–аппаратные средства, ориентированные на использование после автономной отладки в качестве прототипной системы;
? одноплатные компьютеры и контроллеры (
Single
–
Board
Computer
,
Controller
—
SBC
) — конструктивные комплексы, предназначенные для использования в качестве базовых модулей при реализации целевых систем промышленного применения.
Обычно перечисленные выше изделия содержат базовый микроконтроллер, память (ОЗУ, флэш–память, служебное ПЗУ), ряд периферийных и вспомогательных схем, а также разъем для подключения к инструментальному (персональному) компьютеру, используемому при комплексной отладке системы. С их помощью реализуется прототип проектируемой системы, на котором можно выполнить комплексную отладку программных и аппаратных средств, а в ряде случаев и провести проверку их функционирования в рабочих условиях. После этого нетрудно разработать рабочий вариант системы, объединив на одной плате используемые модули прототипной системы. Прототипная плата может непосредственно использоваться в качестве рабочей (целевой) системы, если ее параметры и конструктивное оформление удовлетворяют требованиям технического задания. Если имеющихся на плате средств недостаточно, то дополнительные средства проектируются и размещаются на вспомогательной плате.
При разработке аппаратных средств весьма перспективна мезонинная технология, предназначенная для унификации прототипных плат. В этой технологии используется базовая плата–носитель стандартного размера (обычно 45×99 мм2), на которой размещаются от 2 до 12 небольших плат — мезонинов. Мезонины выполняют функции дополнительной памяти и различных периферийных устройств (параллельных и последовательных портов, таймеров–счетчиков, АЦП и ЦАП, сетевых и шинных контроллеров и др.).
Каждый мезонин соединяется с платой–носителем с помощью двух разъемов, при этом:
? один из разъемов предназначен для подключения к локальной шине платы–носителя;
? функциональное назначение второго разъема определяется типом мезонина, который может содержать многоканальную систему ввода/вывода, сетевые адаптеры и другие устройства.
Платы–носители
представляют собой одноплатные контроллеры
SBC
, реализованные на базе высокопроизводительных микроконтроллеров (МС68332, МС68360 и др.). Они имеют связь с персональным компьютером, могут выполнять функции плат развития и использоваться в составе прототипных и целевых систем.
Платы–носители и набор мезонинов серийно выпускаются рядом производителей. Используя их, разработчик может быстро реализовать сложные с функциональной точки зрения целевые системы для разнообразных применений.
Для автономной отладки аппаратных средств используются традиционные измерительные приборы (осциллографы, вольтметры, пробники и др.). Широкими возможностями обладают логические анализаторы, позволяющие осуществлять контроль состояния различных узлов системы в заданные моменты времени. Весьма эффективным для этих целей являются средства тестирования по стандарту
JTAG
, которые имеются в составе многих современных моделей микроконтроллеров.
Разработка и автономная отладка программного обеспечения.
В процессе разработки и отладки программного обеспечения микроконтроллерных систем используются:
? языковые средства, ассемблеры, компиляторы. При программировании микроконтроллерных систем часто применяется язык ассемблера, позволяющий существенно уменьшить объем памяти программ и время выполнения программных модулей (до 20–50%). Ассемблеры с широким набором функциональных возможностей, включая макросы (макроассемблеры), поставляются рядом фирм–разработчиков. В качестве языков высокого уровня чаще всего используются С, С++. Поставляемые для них компиляторы обеспечивают также программирование на языке ассемблера. Многие компиляторы содержат компоновщики для связи программных модулей, библиотеки функций;
? отладчики, реализующие пошаговый режим выполнения транслированной программы или режим с остановами в контрольных точках, что позволяет производить просмотр и коррекцию содержимого регистров и ячеек памяти, обеспечивает в точке останова просмотр трассы (контроль выполнения предыдущих шагов программы), дизассемблирование команд. Отладчики позволяют воспринимать информацию на уровне исходного кода или в наиболее наглядном и удобном, для программиста символическом виде, с использованием введенных имен и меток. В состав отладчиков обычно входят:
• симулятор,
реализующий программно–логическую модель микроконтроллера;
• компоновщик–загрузчик
объектного кода;
• библиотеки стандартных функций,
предназначенные для вычисления специальных и тригонометрических функций, обработки чисел с плавающей точкой и другие операции. Для визуализации состояния системы на экране монитора современные отладчики используют многооконный графический интерфейс. Многие из них способны работать не только с симуляторами, но со схемными эмуляторами на этапе комплексной отладки системы в реальных условиях;
? операционные системы реального времени (ОСРВ), предназначенные для разработки объектов управления, работающих в реальном масштабе времени. В составе многих ОСРВ имеются средства поддержки программирования, которые могут использоваться при проектировании и отладке системы. В настоящее время программирование и отладка чаще всего выполняются с использованием интегрированной среды развития и ли средств ОСРВ. Программирование производится обычно с помощью кросс–средств, инсталлированных на инструментальном компьютере, в качестве которых используются персональные компьютеры (например,
IBM
–
PC
старших моделей) или рабочие станции.
Комплексная отладка системы.
Это наиболее сложный и ответственный этап разработки системы, на котором задействован весь набор программных и аппаратных средств, используемый на этапе автономной отладки, а также ряд специальных средств. К числу наиболее эффективных средств комплексной отладки относятся схемные эмуляторы (эмуляторы ПЗУ), включаемые вместо микроконтроллера (или ПЗУ) прототипной системы и обеспечивающие возможность контроля ее работы с помощью инструментального (персонального) компьютера.
Заключительной процедурой комплексной отладки является запись в ПЗУ объектных модулей отлаженной программы (с помощью специальных программаторов) и завершающее испытание ее работоспособности.
Испытание системы.
На заключительном этапе проектирования проводится испытание отлаженной прототипной системы в рабочих условиях с подключением полного набора реальных периферийных устройств и объектов управления. В процессе опытной эксплуатации выявляются ошибки, не обнаруженные на этапе отладки.
Нечеткая логика.
Назначение и общие положения. Традиционная теория управления системами строится на основе математических методов решения задач управления (абстрактно), которые иногда очень трудно визуализировать. Во многих случаях человеку желательно визуально представить решаемую задачу, чтобы понять, что происходит в системе, и найти правильное решение. Такие возможности предоставляет нечеткая логика, которая появилась в 1965 г. и может рассматриваться как расширенный вариант алгебры–логики, в которой:
? переменные могут принимать ряд значений в диапазоне между 0 и 1;
? сохраняют силу все булевы преобразования и законы (например, ассоциативность);
? используется набор основных логических операций И, ИЛИ и НЕ (с некоторыми особенностями их реализации).
Основу нечеткой логики составляют следующие правила:
? все утверждения даются в относительном представлении (скорее Истинно, чем Ложно);
? точное утверждение (Истинно–Ложно) является предельным случаем приближенного утверждения;
? любая логическая система может быть представлена в терминах нечеткой логики («фаззифицирована»);
? функционирование системы определяется набором нечетких (вероятностных) правил (преобразований), которые оперируют с набором четких входных переменных;
? логический вывод реализуется с помощью последовательности вероятностных преобразований.
В Японии, нечеткая логика стала важной технологией, используемой во многих приложениях, от термостатов в кондиционерах до сложных управляемых комплексов.
Особенности использования нечеткой логики покажем на примере решения задачи управления перевернутым маятником (рис. 5.1.2, а): необходимо, перемещая тележку назад или вперед, удержать маятник в вертикальном положении.
Решение задачи включает следующие основные этапы.
Фаззификация системы.
На этом этапе определяются вероятности появления различных выходных переменных в зависимости от входных. В рассматриваемом примере входными переменными являются угловое положение маятника и его угловая скорость, а выходными переменными — скорость и направление движения тележки, которые определяют текущее положение тележки.
Можно задать пять выходных зон, в которых может находиться тележка: центр, близко справа, близко слева, далеко справа, далеко слева. Зоны должны покрывать все части базовой переменной (ось ОХ на рис. 5.1.2, б). Для каждой входной переменной должно быть задано нечеткое множество ее состояний (зон).
Разработка правил для определения отклика системы.
Набор правил формируется для того, чтобы определить величину выходного отклика (направление движения и скорость тележки) на данные условия. Для их разработки могут использоваться различные методы, например, правила типа условий «если — то» или модифицированные карты Карно.
Некоторые правила для рассматриваемой задачи формулируются в следующем виде:
1.
Если
Угол
=
Вертикаль
AND
Угловая
скорость
=
Останов
AND
Позиция
=
Центр
,
то
Скорость
= 0 (if Angle = Vertical AND Angular_Speed = Stopped AND
Pos
= Centre then Speed = 0);
2.
Если
Угол
= –
Наклон
AND
Угловая
скорость
= –
Низкая
AND
Позиция
=
Центр
,
то
Скорость
= –
Низкая
(if Angle = – Lean AND Angular_Speed = – Slow AND
Pos
= Centre then Speed = – Slow).
Аналогичным образом формулируются и другие правила.
Вычисление выходных переменных при различных значениях входных переменных.
Для правила 2 возможное значение отрицательного угла отображается, как показано на рис. 5.1.2, а. Значение этого угла равно нечеткому значению 0,4. Это значение объединяется с помощью операции Логическое И по правилу 2 со значениями Угловая скорость
(Angular_Speed)
и Положение (
Pos
), чтобы получить окончательный результат. При выполнении операции И нечеткое значение одной переменной (0,4 для угла в этом примере) сравнивается с нечеткими значениями других переменных, и в качестве результата используется наименьшее из значений переменных. Отметим, что для операции ИЛИ результатом является максимальное значение входных переменных; при выполнении операции НЕ — разность 1 и текущего значения переменной.
Найденные значения служат для определения веса выходной величины. Если при вычислениях используется несколько правил, то окончательный результат получается путем комбинирования найденных значений. Для рассматриваемого примера используются два правила, поэтому комбинируются два весовых значения выходной величины. Как показано на рис. 5.1.2, г, значение выходной переменной (отклик) располагается в выделенной области. В качестве отклика выбран центр масс.