Подробная инструкция

Описание фаззи-системы
Генерация кода контроллера
Использование сгенерированного кода

Описание фаззи-системы

Описание системы, на основе которого позже будет сгенерирован файл с исходным кодом, пока можно создать только в математическом пакете Matlab. Лично я пользовался версией 5.2 и не знаю, во-первых, в какой версии Матлаба впервые реализована работа с нечеткой логикой, а, во-вторых, не менялся ли формат файла, в котором Матлаб сохраняет описание фаззи-системы.

На данном этапе вы должны запустить Matlab и создать в нем фаззи-систему. Делается это достаточно просто: в командной строке Матлаба вводите команду "fuzzy" и в появившемся окне описываете свою систему. Более подробная информация о создании нечетких систем в Матлабе выходит за рамки данной инструкции.

Убедитесь, что ваша система удовлетворяет ограничениям, налогаемым фаззи-компилятором.

После того, как вы полностью описали систему (т.е. задали набор входных и выходных переменных, их функции принадлежности, базу правил), сохраните результаты вашей работы в файле. Делается это через меню Матлаба и в английской версии выглядит так: File -> Save to disk as...

Теперь можно переходить к генерации исходного кода.

Генерация кода контроллера

Теперь надо сделать следующее: открыть только что сохраненный в Матлабе файл любым текстовым редактором, например "Блокнотом". Выделите весь текст и сохраните его в буфере обмена.

После этого перейдите в браузере на страницу генерации кода (см. ниже) и вставьте содержимое буфера обмена в поле "Описание системы". Теперь нажмите кнопку "Генерировать!". После этого возможны два варианта: либо вы увидите сообщение об ошибке, либо (если учли все ограничения программы) получите ассемблерный код для контроллера.

Выполните обратную операцию: в окне "Код для контроллера" выделите весь текст и скопируйте его в буфер обмена. Запустите текстовый редактор и вставьте в него содержимое буфера обмена. При этом обратите внимание, что запущенный вами текстовый редактор должен уметь сохранять файлы в том виде, который понимает ваш ассемблер. Сохраните полученный документ в новом файле. Осталось подключить данный файл к вашему проекту программы контроллера.

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

Использование сгенерированного кода

Теперь у вас есть обычный файл с исходным кодом для вашего контроллера. В этом файле реализована только функция вычисления выходных переменных в зависимости от входных переменных на основе созданного вами в Матлабе фаззи-алгоритма. Это означает, что сгенерированный файл не является самостоятельной программой, пригодной для выполнения микроконтроллером - вы должны самостоятельно создать основной файл своего проекта, из которого производить вызов данной функции.

Данная функция называется FUZZY_CONTROL и перед ее вызовом вам необходимо заполнить глобальный массив welldef_inputs точными значениями входных переменных. После возврата из функции в глобальном массиве welldef_outputs будут находиться точные значения выходных переменных, вычисленные на основе точных входных по алгоритму, созданному вами в Матлабе. Всё, дальше вы эти точные значения выходных переменных используете по своему усмотрению в зависимости от того, что должна делать программа контроллера.

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

Код "тестирующей" программы
Предупреждение! Не пытайтесь бездумно скопировать приведенный выше код для проверки своей системы - он не будет у вас работать.