1. Регулятор влажности на PIC16F877 и SHT11.
2. CCP в PIC16F877.
3.Память 24С01 и PIC16F877.
исходник 24c01_pic16f877
4.Часы DS1302 и микроконтроллер PIC16F877.
исходник clock1302_pic16f877
исходник 24c01_pic16f877
исходник clock1302_pic16f877
Автоматическая система токовой диагностики, предназначена для автоматического контроля токов двигателей. Она также:
Измерительная система представляет собой измерительный на 72 — аналоговых канала постоянного тока.
Ранее фирмой OSI на большое количество двигателей (около 300) были установлены трансформаторы тока и выведены в шкаф информатики. Аналоговые каналы измерительного блока подключаются непосредственно к этим трансформаторам, что позволяет контролировать работу 72 двигателей. Измерительный блок подключается к компьютеру, на котором установлено программное обеспечение и выполняет следующие функции:
Измеряет аналоговые сигналы с датчиков тока и преобразует в цифровую форму.
Передаёт поступающую информацию на компьютер.
Вычислительная часть состоит из компьютера в который информация с измерительного блока поступает по линии связи и программного обеспечения. Программа производит прием и обработку информации, поступающей от измерительного блока, а также представляет ее в удобной для восприятия и документирования форме. На экране компьютера отображаются регистрируемые и расчетные параметры измерения. Они могут быть представлены в виде: — развернутой диаграммы, где при помощи перемещающегося по экрану курсора можно определить значения тока и напряжения в любой момент времени измеряемого процесса, а также таблицы со значениями измеряемых параметров. Данные измеряемого процесса заносятся в архив, и при помощи программы «просмотрщик архивов» архивные данные могут быть просмотрены с любого компьютера подключённого к сети, в виде графика и таблиц, а также сохранены в формате «EXEL» или графика для последующей обработки.
К данной системе подключаются самые аварийноопасные и важные двигатели завода, выход из строя, которых приводит к большим простоям и сверхбольшим убыткам. Это экструдер, дробилки, сушилки, спв и печи.
Программное обеспечение для работы под управлением операционной системы Microsoft Windows.
Программное обеспечение производит:
Программное обеспечение состоит из двух независимых программных продуктов — программы измерения токов и напряжений и программы просмотра архивных данных. Оператор управляет системой измерения посредством виртуальных панелей (ВП), каждая из которых представляет собой окно на экране компьютера с набором управляющих и отображающих элементов.
Контроль за изменением токов приводов в современных заводах и в автоматических линиях является стандартной функцией защиты.
Главное окно программы измерения токов и напряжений.
Окно калибровки и настройки измерительных каналов.
Окно программы чтения архивных данных.
Программы написаны на Delphi, исходники здесь progi_toki
Потребовалось для картофелехранилища изготовить преобразователь ток/сопротивление и при этом, чтобы преобразование проходило через определенную функцию. Дело в том, что системой хранения картошкой управляли голландские контроллеры «Агровент», в них зашита технология управления системой хранения.
Заказчик приобрел в начале один контроллер с датчиками, а потом купил еще три но без датчиков. Когда стали проектировать под них оборудование, выяснилось что в качестве датчиков голландцы используют термистор с нелинейной характеристикой, и стандартные термосопротивления с токовым(унифицированным) выходом не подjqlen. Но заказчик хотел использовать стандартные датчики 4-20 Ма, так как у родных датчиков если произойдет обрыв провода и конец провода упадет в гнилую картошку, то контролер что ни будь да будет показывать так как датчики высоко Омные. Ну и стоимость оригинальных датчиков очень высокая. Решил сделать такую систему:
На каждый контроллер приходиться по тридцать шесть датчиков, так что потребовалось сто восемь таких измерительных каналов.
Микроконтроллер выбрал PIC16F627, через два года, по желанию заказчика, расширил температурный диапазон, пришлось переделать на PIC16F877 так как не хватило памяти. АЦП десяти разрядное TLС1549, потенциометр AD5231, тоже десяти разрядный на 50 кОм.
По ногам чипа как раз хватало обрабатывать пять температурных канала. Когда предложили этот проект я только освоил PIC16F84 и ассемблер, и благодаря вышедшей в это время книги «Устройства управления роботами» автора Майка Предко, начал изучать HI-TECH PICC LITE, и перешел на более продвинутый PIC16F627. Конечно, используй я сразу PIC16F877, то не стал бы городить дополнительные АЦП, так как в нем имеются встроенные. Да, кстати на схеме не указан источник опорного напряжения, какой здесь я применил уже не помню, помню что был очень точный аж до тысячных после запятой.
Принцип работы устройства.
В токовые петли 4-20 мА от температурных датчиков включены прецизионные резисторы: R2, R4, R6, R8, R10, соединяющие вход с землей –на 220 Ом, в них ток по известному закону преобразуется в напряжение в диапазоне от 0.88 вольт до 4.4 вольта, при опорном напряжении пять вольт . Далее измеренное значение напряжения оцифровывается и обрабатывается в микроконтроллере по определенной функции и, исходя, из полученного результата изменяется сопротивление цифрового потенциометра, выход которого подключен вместо оригинального датчика.
Начал я с того что cнял с помощью калибратора характеристику датчика температуры, и получил такую таблицу.
Забил эту таблицу в программу для анализа графиков «Advanced Grapher», на рисунке черный график. Не MatCad конечно, но меня вполне устраивает.
Проведя регрессионный анализ, получил такое полиномиальное уравнение, и его график. На рисунке он красный.
Так как это был мой первый проект в этом компиляторе, и попытка запихать эту функцию в чип не увенчалась успехом. То ли не мог включить плавающую запятую, то ли еще что то, давно было. В общем, промучился недели две, но благодаря этому немного освоил компилятор. В итоге решил пойти другим путем.
В этой же программе для анализа графиков, построил графики для платиновых термосопротивлений с токовым выходом ТСПУ, которые нужно было подключить к контроллерам, а также получил таблицу значений сопротивления для оригинального датчика уже используя полином, полученный ранее. Перевел полученную таблицу сопротивлений в цифру, которую надо отправлять на потенциометр.
Вот что получилось.
Вся таблица есть в архиве.
Из таблицы видно что при -28°С сопротивление оригинального датчика будет равно 44.449 Ом. С АЦП, к которому подключен датчик с токовым выходом, при этой же температуре -28°, мы получим цифру 384, и чтобы на выходе потенциометра было сопротивление как у оригинального датчика 44.449 Ом, надо послать на него цифру 911, ну и так далее.
Для проверки правильности расчетов собрал два стенда. Один на PIC, на нем можно с кнопок задавать число, которое передается на цифровой потенциометр. Этот стенд я подключал к контроллеру вместо оригинального датчика и прогонял по всему диапазону, сравнивая по таблице, соответствует или нет отображаемая температура на контроллере и число которое должно подаваться на потенциометр. Расчеты подтвердились.
Второй стенд использовался для выбора потенциометра для проекта и написан на Делфи. Исходник также находиться в архиве. Потенциометры подключаются к LPTпорту. Софт поддерживает потенциометры DS1267, AD8400.
На момент написания программы, я не умел использовать в СИ полиномы, по этому пошел по простому пути и реализовал через оператор CASE.
switch(j) {
case 10 : i=2 ; break; // -25,0
case 11 : i=4 ; break; // -24,9
case 12 : i=10 ; break; // -24,8
case 13 : i=16 ; break; // -24,7
case 14 : i=24 ; break; // -24,6
case 15 : i=33 ; break; // -24,4
Вот что получилось.
Весть проект можно скачать здесь.
Система работает уже много лет, заказчик доволен.
Этод стенд как и перевернутый маятник, был разработан и собран как дополнение для моего дипломного проекта.
Собирал его из того что под руку попалось, так что дизайн не очень, задача была, что бы работало.
Разработка нечеткого управления устойчивого объекта на базе калорифера
Устойчивый объект обладает свойством самовыравнивания, т.е. самостоятельно приходить в новое равновесное состояние после нанесения возмущения. В качестве устойчивого объекта принят калорифер (объект для производства теплого воздуха) для снижения влажности в производственных помещениях.
Рассмотрим микропроцессорную САР с четким и нечетким управлением статического объекта.
Описание лабораторной установки
Лабораторная установка включает в себя компьютер и регулируемый физический объект. Регулируемый объект (РО) есть макет калорифера с постоянным наддувом и регулируемым током нагрева с помощью разного типа программных регуляторов температуры.
Рис.1 Структурная схема САР температуры
Для поддержания заданной температуры в камере калорифера с постоянным наддувом используем нечёткий регулятор. Температура в камере калорифера измеряется датчиком температуры типа DS 18B20. Исходя из динамических свойств РО, задаем диапазон изменения ошибки от — 5 до +5 заданного значения и диапазон изменения скорости изменения ошибки от -3 до +3 . Для перехода от четкого значения входа к нечёткой переменной по отклонению температуры и скорости ее изменения примем, соответственно, терму ОМ (отрицательная малая) типа Z, терму Н (норма) типа Л и терму ПМ (положительная малая) типа S, которые приведены на рис.2.
Потребляемая мощность калорифера пропорционально связана с изменением температуры в камере РО, поэтому управляющий сигнал выразим в единицах мощности в диапазоне от 0 до 150 Вт. Лингвистическую переменную µ управления дефаззификатора представим девятью термами,
Рис.2. Термы фаззификатора
№1 (5Вт), №2 (10Вт), №3 (15Вт), №4 (20Вт), №5 (25Вт), №6 (30Вт), №7 (35Вт), №8 (40Вт), №9 (45Вт).
Для примера составим произвольно матрицу решений, приведенную на рис.3.
Рис. 3. Матрица решений
Примем следующие правила:
— если отклонение температура на объекте ОМ, а её производная ОМ, то мощность калорифера должна увеличиться:
= ОМ и = ОМ то P = №1;
— если температура на объекте норма (Н), а её производная (ОМ), то мощность калорифера необходимо увеличить:
= Н и = ОМ то P = №2;
— если температура на объекте больше заданной (ПМ), а её производная отрицательна, то мощность калорифера необходимо оставить прежней:
= ПВ и = ОМ то P = №5;
и т.д.
Совокупность правил отразим в матрице решений 33, в которой на пересечения столбцов и строк записываются коды терм управления . Для устранения нечёткости применим метод центроида, где точное значение выводимой переменной вычисляется как значение координаты «центра тяжести» на оси абсцисс комбинированной термы (аккумуляция).
Допустим, имеет место отклонение температуры равное — 0,33, которая продолжается снижаться со скоростью — 0,15. В этом случае термы ОМ и Н отклонения температуры имеют степень принадлежности 0,33 и 0,67 ,соответственно, а термы ОМ и Н скорости измерения равны 0,15 и 0,85. Терм ПМ имеет степень принадлежности 0.
Из матрицы решений 33, показанной на рис.9, для данного случая имеем:
На первом шаге логического вывода используется связка «И» с помощью оператора min:
На втором шаге логического вывода используется связи «ИЛИ» с помощью оператора max.
Например, выражения 2 и 3 дают разные значения степени принадлежности для терма (№2), но берётся максимальное значение (max).
Таким образом, для текущих значений входных сигналов степени принадлежности термов выходной переменной имеют значения:
Для перехода от нечётких выводов к управляющему воздействию используем метод центроида (метод определения координаты центра тяжести на оси абсцисс:
Программное обеспечение лабораторной установки позволяет изучить принцип работы и настройку программных ПИД- и FUZZY – регуляторов, проводить эксперимент в реальном времени, создавать архив и анализировать раннее полученные результаты экспериментов.
При запуске программы проверяется наличие COM- и LPT – портов в компьютере, подключена или нет физическая модель объекта. Если порты не обнаружены, то программа выдаст сообщение об этом. При отсутствии физической модели объекта возможен только просмотр архивов. На рис. 10 приведено главное окно САР температуры.
Описание главного окна САР температуры
Главное окно (см. рис.4) состоит из меню (1), панелей « Регулятор №1» (2), «Регулятор №2» (3), «текущие измерения» (4), «управление» (5), «ШИМ» (6), «вых. регул. №1», «вых. регул. №2», «таймер» (7). Внизу отображаются графики изменения текущего параметра (температуры) и ее заданного значения (8).
Рис 4. Главное окно САР температуры
Панель (2) «Регулятор №1» содержит регулирующее устройство типа «Fuzzy – регулятор». Фаззификатор «Fuzzy – регулятора» переводит четкие значения лингвистических переменных «Отклонение» и «Скорость» в нечеткие значения с помощью трех терм, соответственно, графики которых показаны в панели (2.1) с указанием степеней принадлежности к термам. Ниже слева находится база знаний и продукционных правил (панель 2.2), в которой задаются девять терм дефаззификатора. В панели (2.3) задаются коэффициенты пропорциональный и интегральной составляющей отклонения и дифференциальный составляющей (скорости) входа базы знаний (см. рис. 1) , там же отображается выход каждой составляющей и находится включатель каждой составляющей, а также можно произвести сброс накопленной интегральной составляющей отклонения.
Панель (3) «Регулятор №2» содержит регулятор типа «ПИД – регулятор». В панели задаются коэффициенты пропорциональный, интегральной и дифференциальный составляющей ПИД- регулятора, там же отображается выход с каждой составляющей и находится включатель каждой составляющей, а также можно выполнить сброс накопленной интегральной составляющей регулятора.
Панель (4) «текущие измерения» отображает численные значения текущей температуры, отклонения текущего значения от задания и выход раздельно с регуляторов №1 и №2 (управляющее воздействие, которое идет на нагреватель калорифера) в текущий момент времени в процентах.
На панели (5) находятся кнопки управления. Кнопка «старт» запускает в работу выбранный регулятор в системе. Кнопкой «вкл.» в панели «нагрев» включается нагреватель только для снятия кривой разгона. При этом на объект подается максимальная мощность.
В панели «задание» указывается заданное значение температуры. Ниже в виде таблицы выдаются текущие значения температуры, ошибки регулирования и время отсчета через равные интервалы времени.
С помощью панели (6) «ШИМ» задается ручное широтно-импульсное управляющее воздействие на объект в виде тока нагрева калорифера для снятия кривых разгона.
В панели (7) «вых. регул. №1», «вых. регул. №2» цифровые индикаторы показывают по желанию выход каждого регулятора. Там же находятся выключатели, позволяющие включить нужный регулятор в схему регулирования (см. рис.10).
В панели «таймер» задается интервал времени для снятия отсчетов при записи заданного и текущего значений.
Для запуска лабораторной установки необходимо:
— выбрать в меню (см. рис.10) вкладку «порт» и установить тот, к которому подключена установка (например, СОМ 1);
— выбрать в меню (1) вкладку «файл» и в открывшемся меню нажать «новый» (она активируется, если датчик обнаружен), и создать файл, куда будут архивироваться данные об эксперименте (например, 11августа). По умолчанию он сохраняются в папке «DATA», которая находится в том же каталоге, где и программное обеспечение;
— в меню (1) во вкладке «настройка» выбрать «термы» или два раза щелкните левой мышкой на графике (2.1) входных терм. Откроется окно «Термы», где задаются термы фаззификатора и дефаззификатора и диапазон их отображения. Любые проведенные изменения предыдущей информации нужно подтвердить кнопкой «OK»;
— выбрать регулятор, который хотите использовать в панели (7) «вых.регул. №1» или «вых.регул. №2» и задать нужные коэффициенты;
— в меню (1) во вкладке «скорость» задать скорость измерения в миллисекундах (например, 1000мс=1с);
— в панели задание установить заданную температуру на объекте;
— включить блок питания установки;
— включить питание ШИМ-приставки;
— нажать кнопку «старт».
После нажатия кнопки «старт» начнётся регулирование по заданному Вами закону. Все изменения коэффициентов, терм, скорости измерения фиксируется и записывается в архив. Верхний предел измерения температуры составляет 125, по достижении которого нагрев калорифера прекращается и сработает звуковая и световая сигнализация.
На рис.5 приведена панель настройки термов.
Рис. 5. Панель настройки термов
Просмотр архивов
Чтобы просмотреть архив переходного процесса необходимо:
— после завершения переходного процесса, не выходя из программы, нажать кнопку «стоп»;
— в меню (1), во вкладке файл выбрать «архив», откроется окно архива;
— работая левой клавишей мышки, навести ее на график или на табличные данные. В панелях будут отображаться данные: какой регулятор в данный момент использовался и какие коэффициенты были установлены, а также какая температура, время и ошибка регулирования была на данный момент времени.
Пример архива показан на рис. 6
Рис. 6. Осциллограммы работы САР температуры (архив)
Окно «Архив» почти не отличается от окна «Регулятор». Чтобы просмотреть проведенные эксперименты, в меню «файл» выберите «открыть», откроется текущий каталог «DATA», где нужно выбрать для открытия необходимый файл
Описание аппаратной части лабораторной установки
Регулируемый объект есть макет калорифера с постоянным обдувом, содержащий датчик температуры с программируемым разрешением типа DS18B20, блок питания нагревательного элемента калорифера и ШИМ — приставку для управления током нагревателя. В качестве нагревателя используется проволочный резистор с рассеиваемой мощностью 20 Вт. В установке для работы с датчиком температуры использован адаптер 1-Wire, который подключается к Com-порту компьютера. Принципиальная схема адаптера показана на рис.7.
Рис. 7. Принципиальная схема адаптера
В качестве температурного датчика используется широко распространенная микросхема цифрового термометра DS18B20.
ШИМ – регулятор
На рис.8 приведена принципиальная схема ШИМ-приставки на базе микроконтроллера PIC16F84 и управляется через LPT-порт компьютера. Подробно ШИМ-регулятор описан в описании устройства « Перевёрнутый маятник ».
Рис.8. Принципиальная схема ШИМ-приставки
Программы с исходниками FUZZY, ПИД — регуляторы.
В интернете есть множество моделей перевернутого маятника(inverted pendulum). Я решил остановиться на обычной тележке с прикрепленным к ней маятником.
Вот что получилось.
Задача — при помощи перемещений физической тележки необходимо удерживать физический маятник, на который действует сила притяжения, в вертикальном положении. Маятник нижним концом прикреплен к тележке при помощи шарнира, а тележка может с помощью привода перемещается вдоль прямой, лежащей на горизонтальной плоскости. Удержание в равновесии системы “перевернутый маятник на тележке” является классической задачей теории автоматического управления (система стабилизации). Для решения задачи балансирования маятником система управления должна получать информацию о текущем угле и угловой скорости маятника. Управление построено на Fuzzy Logic ( нечеткой логике). В этом случае одна лингвистическая переменная будет задаваться значениями угла, а другая лингвистическая переменная будет задаваться угловой скоростью маятника. Управление системой системы “перевернутый маятник на тележке” осуществляет нечеткий контроллер. Он реализован в виде системы нечеткого логического вывода типа Сугэно с двумя входами: угол наклона маятника, скорость изменения угла наклона маятника. Для лингвистической оценки входных переменных используется по семь терм с Л-, Z- и S-образными функциями принадлежности. База знаний содержит 49 правил.
Стенд состоит из физического перевернутого маятника, ШИМ-приставки, блока питания и компьютера. Принцип работы: Текущий угол и угловую скорость маятника измеряются с помощью потенциометра, на оси которого закреплен перевернутый маятник. Сопротивление преобразуем в напряжение и на АЦП. С АЦП в цифре передаем все на компьютер, там обрабатываем, прогоняем через регулятор, и получаем число которое надо выдать исполнительный механизм. В цифре выдаем на ШИМ это число, а с него на двигатель.
Аппаратная часть лабораторной установки
Рис. 1. Принципиальная схема ШИМ-приставки и измерителя угла маятника
На рис. 1 приведена принципиальная схема ШИМ-приставки и АЦП. ШИМ реализован на базе микроконтроллера PIC16F84. Если на входа D0…D7 подать все нули, двигатель остановиться, а если на все подать единицу, будет крутиться с максимальной скоростью. С микроконтроллера сигнал ШИМ подается на вход специализированной микросхемы управления двигателем L293. Она преобразовывает управляющие сигналы малой мощности в токи для управления моторами.
Для управления двигателем, в микросхеме L293D есть три входа, один как говорилось выше для управления скоростью вращения электромоторов с помощью широтно модулированного сигнала. Два других для выбора направления вращения двигателя.
Измеритель угла собран на десятиразрядном аналого-цифровом преобразователе TLC1549 (рис. 37), источнике опорного напряжения TL431 и переменном резисторе. Потенциометр угла маятника включен по схеме делителя напряжения. Изменяя положение движка переменного резистора, можно задать любое напряжение от нуля до опорного напряжения АЦП. Подвижный вывод подключен к входу десятиразрядного АЦП последовательного приближения, что позволяет измерять напряжение с дискретностью 0,005 вольта, и частотой 40 кГц. Данные о положении движка потенциометра поступают с АЦП в цифровой форме в компьютер через LPT-порт принтера.
Аналого-цифровой преобразователь TLC1549 подключен непосредственно к порту принтера без каких либо коммутирующих устройств, что позволяет проводить сканирование положения и скорость перевернутого маятника с частотой один килогерц. LPT порт управляется с помощью драйвера взятого с http://progrex.narod.ru.
Описание интерфейса ПО
При запуске программы открывается панель регулятора рис.2.
Рис.2. Главное окно САР перевернутого маятника
Вверху слева находятся термы отклонения и скорости отклонений фаззификатора, а так же их степень принадлежности (1). Правее отображена база знаний (панель 4), в которой заданы термы дефаззификатора. Во время работы регулятора ячейки, которые в данный момент используются, подсвечены цветом и в них отображается численные значение степени принадлежности данного терма. Панели (2) отображается выход дефаззификатора, там же задаются числовые значения терм дефаззификатора (2.3), после ввода которых нужно подтвердить нажатием кнопки «ОК» (2.1). При работе регулятора в ячейках (2.2), отображается числовые значения степень принадлежности тех терм, которые активизирован (они подсвечены желтым цветом). Панель (5) «текущие измерения» отображает численные значения текущего угла перевернутого маятника в градусах, а также ошибку отклонения от вертикального положения в текущий момент времени в градусах и скорость отклонения перевернутого маятника. Там же отображается выход регулятора (управляющее воздействие). На панели (3) находятся кнопки управления. Кнопка «старт» включает питание двигателя тележки. В панели «задание» задаётся угол, который нужно удерживать. Чтобы задать термы фаззификатора нужно нажать кнопку «настр.терм», при этом откроется панель «термы». Там задаются диапазоны терм (1) и (2). Все изменения нужно подтвердить кнопкой «ОК».
Рис. 3. Панель настройки термов фаззификатора
Для запуска лабораторной установки необходимо:
— найти вертикальное положение маятника, которое не равно нулю и занести его значение в панель «задание», подтвердив кнопкой «ОК».
— при необходимости сохранить настройки или загрузить новые настройки. По умолчанию они сохраняются в папке «DATA», которая находится в том же каталоге, где и программное обеспечение;
— задать или загрузить из файла термы фаззификатора и дефаззификатора и диапазон их изменения. Любые проведенные изменения предыдущей информации нужно подтвердить кнопкой «OK»;
— нажать кнопку «старт».
После нажатия кнопки «старт» начнётся регулирование.
Исходники здесь telezhka_5_term
и прога тестирования тележки. upravlenie
Теория нечеткой логики впервые была рассмотрена в работах Лотфи А. Задэ, профессора Калифорнийского университета в Беркли в 1965 г. Несмотря на то, что математический аппарат нечеткой логики был разработан в США, активное развитие данного метода началось в Японии, и новая волна вновь достигла США и Европы. Основной причиной появления новой теории стало наличие нечетких и приближенных рассуждений при описании человеком процессов, систем, объектов.
Нечеткая логика является многозначной логикой, что позволяет определить промежуточные значения для оценок да/нет, истинно/ложно и т. д. Выражения подобные таким, как «слегка тепло» или «довольно холодно» возможно формулировать математически и обрабатывать на компьютерах.
Лингвистическая переменная – дистанция, температура, ошибка отклонения, производная ошибки отклонения, давление и т.д.
Терм – значение лингвистической переменной, выраженное словами естественного языка. Число термов выбирается из условия точности описания от трех и более. Например, 7:
– ошибка положительная большая (ПБ);
– ошибка положительная средняя (ПС);
– ошибка положительная малая (ПМ);
– ошибка близка к нулю (Н);
– ошибка отрицательная малая (ОМ);
– ошибка отрицательная средняя (ОС);
– ошибка отрицательная большая (ОБ).
Число 7 обусловлено емкостью кратковременной памяти человека, в которой, по современным представлениям, может храниться до семи единиц информации.
Понимание нечёткого управления можно получить через теорию нечётких множеств. Лингвистические переменные дают возможность применять математический аппарат к исходным данным, которые заданы неточно и если допускается результат невысокой точности.
Функция принадлежности – характеристическая функция, а ее значения mА(х) называется степенью принадлежности переменной х нечеткому множеству А и определяет соответствие числа между 1 и 0 данному значению физической величины (ФВ). Например: лингвистической переменной «ДИСТАНЦИЯ» для расстояния в 50 м можно задать степень принадлежности к терму «ДАЛЕКО», равную 0,85, а к терму «БЛИЗКО» – 0,15. Характеры функций принадлежности приведены на рис. 1: Z-функция, П-функция; Л-функция; S-функция. Выбор конкретной функции принадлежности осуществляется экспертами или экспертными системами.
Рис. 1. Характеры функции принадлежности
Фаззификация – переход к нечеткости. Фаззификатор преобразует четкие входные сигналы, после их нормализации в относительный диапазон изменения –1, 0, +1, в термы, например: ОБ, ОС, ОМ, Н, ПМ, ПС, ПБ.
Дефаззификация – устранение нечеткости. Дефаззификатор преобразует нечеткие значения величин к определенным физическим параметрам которые служат командами исполнительному устройству.
Контроллер нечеткой логики отличается от обычных контроллеров тем, что для описания системы используются знания экспертов вместо дифференциальных уравнений.
База знаний (БЗ) включает в себя продукционные правила, связывающие лингвистические переменные. БЗ формируется на стадии проектирования нечеткого регулятора на основе знаний о свойствах объекта управления по следующей технологии: задается цель управления и при выделении существенных и отсечении второстепенных факторов определяется начальное состояние системы, ее желаемое конечное состояние и правила действий, переводящее систему в желаемое конечное состояние.
На рис. 3 и рис. 4 показаны термы, соответственно, фаззификация ошибки и производной ошибки.
Рис. 3. Фаззификация ошибки
Рис. 4. Фаззификация производной ошибки
Формирование матрицы решений (7 7), которая приведена в табл. 1, выполнялось по следующим рассуждениям эксперта.
Матрица решений
Если ошибка большая (ПБ или ОБ) и скорость ее изменения большая и того же знака, то решение (управляющее воздействие) должно быть большим и того же знака, т.е. соответственно, ПБ или ОБ.
Если ошибка большая (ПБ или ОБ) и скорость ее изменения большая, но другого знака, то решение должно быть нулевым, так как ошибка быстро уменьшается.
Так, например, для изображенного на рис. 3 фаззификатора ошибки, четкое значение ошибки в 0,44 имеет нечеткие значения в виде терма ПС со степенью принадлежности 0,3 и терма ПМ со степенью принадлежности 0,7. Аналогично фаззифицируется и производная ошибки и при той же структуре фаззификатора при четком значении производной ошибки в 0,066 будем иметь нечеткие значения в виде терма ПМ со степенью принадлежности 0,2 и терма Н со степенью принадлежности 0,8. Остальные термы имеют степень принадлежности равную 0.
В матрице решений (табл.1) окаймлены четыре правила для нахождения нечеткого значения выходной переменной.
Первое правило: если Ds = ПМ и = Н, то a = ПМ. Степень принадлежности выходного терма ПМ
Второе правило: если Ds = ПМ и = Н, то a = ПМ. Степень принадлежности выходного терма ПМ
Третье правило: если Ds = ПМ и = ПМ, то a = Пм. Степень принадлежности выходного терма ПМ
Четвертое правило: если Ds = ПС и = ПМ, то a = ПС. Степень принадлежности выходного терма ПС
Далее для формирования нечеткого вывода определим степень принадлежности термов выходной переменной по максимуму. Так как терм ПМ имеет разные значения, то берем максимум
Таким образом, при данном состоянии входных сигналов степени принадлежности термов выходной переменной μ имеют значения
Заключительная операция в работе нечеткого регулятора переводит полученное результирующее нечеткое множество выходной переменной регулятора в четкое ее значение для управления. Устранение нечеткости окончательного результата (деффазификация), показанной на рис. 5, выполним методом полной интерпретации (вычислением координаты «центра тяжести» функции принадлежности на оси абсцисс).
Запишем формулу дефаззификации по методу центра тяжести (полная интерпретация)
Подставив в формулу численные значения степеней принадлежности выходной переменной, получим:
Рис. 5. Деффазификация управления
На рис. 6 приведено графическое представление инференц-механиз-ма дефаззификации.
Таким образом, рассчитано управляющее воздействие m (угол открытия a управляемого выпрямителя).
Порядок проектирования фаззи-регулятора
Достоинства нечеткой логики
Рис. 6. Графическое представление инференц-механизма дефаззификации.
Статья в pdf:Fuzzy logic
программа регулятора:
Когда-то я обслуживал АСУ ТП, построенную на оборудовании фирмы Siemens. Изучая ПО и оборудование, наткнулся на ПО Fuzzy logic и NEUROSYSTEMS для контроллеров S7-400 в среде PCS-7.
На сайте Siemens зарегистрировавшись можно скачать эти регуляторы.
Программное обеспечение PCS-7, включает в себя и верхний и нижний уровень АСУ ТП. Построение схем управления исполнительными механизмами производиться CFC-схемами которые строятся из функциональных блоков. Рис.№1.
Рис.№1.
Эти схемы загружаются в контроллер. К большинству блоков, таких как CTRL_PID, FuzzyControl и др. для управления с верхнего уровня автоматически создаются панели управления (паспорта). Рис.№3. Более подробно по работе с PCS-7 можно узнать из документа PCS7_GettingStarted_V6_r.pdf.
Рис.№2.
Так выглядят функциональные блоки FuzzyControl. Рис.№2.
А так выглядит паспорт (панель управления) FuzzyControl для верхнего уровня. Рис.№3.
Рис.№3.
Для настройки функционального блока используется отдельная программа конфигуратор. Рис.№4.
Рис.№4.
В ней задается сколько входов и выходов будет использоваться у функционального блока. Если кликнуть мышкой по изображению входных терм одного из входов, откроется окно настройки этих терм.
Рис.№5.
Если кликнуть мышкой по среднему прямоугольнику, с надписью «if…then», то откроется окно настройки базы знаний.
База знаний для управления клапаном:
Рис.№6.
Выходные Свойства
Двойной щелчок мышкой на прямоугольнике рядом с надписью «Output01» открывает окно настройки выходных терм. Рис.№7.
Рис.№7.
Дальше можно проверить, как каждый выход будет отрабатывать в зависимости от входных величин. Входа назначены на оси X и Y, а выход с Fuzzy logic на ось Z. Можно наглядно увидеть как будет меняться выходная переменная от входных переменных. Рис.№8.
Рис.№8.
Есть еще один инструмент для тестирования регулятора, он так же позволяет просмотреть эти переменные в графиках и записать в память.
Рис.№9.
Так же вместе с программным пакетом Fuzzy Control, приводиться несколько примеров с применением нечеткой логики.
Один из примеров это изменение коэффициентов ПИД регулятора с помощью Fuzzy System, в зависимости от температуры. Рис.№10.
Рис.№10.
По этой таблице должны изменяться коэффициенты ПИД регулятора
Изменение коэффициентов Kp, Ki, Tv в 3D.
Второй пример: управление задвижкой по давлению и скоростью изменения давления.
Рис.11.
Конфигуратор.
Для управления плохо изученных процессов фирма SIEMENS предлагает программный пакет NeuroSystem.
Точность перевода гарантировать не могу, а излагаю то, как сам понял этот пакет ПО, так что буду очень рад, если кто ни будь чего ни будь, добавит.
Преимущества и неудобства нейронных сетей
☺ большое преимущество нейронных сетей в решение проблемы, это использование данных из примера. Это данные могут быть в форме ряда измерений.
☺ Другое преимущество нейронных сетей – это их адаптируемость, то есть они могут приспосабливаться к новой ситуации, изменяя свое поведение.
☺ нейронная сеть особенно подходит для моделирования нелинейной зависимости.
? Одно неудобство нейронных сетей — то, что вообще невозможно понять как они решили проблему.
? сеть — не умнее чем данные, которыми Вы «обучили», эту сеть, то есть в примере должно быть адекватное представление проблемы.
На рисунке изображен MP нейрон разработанный У.Маккалоком и У.Питтсом, еще в 1943 году. Нейрон I имеет несколько входов х (к), и один выход Yi (к), где к время, от которого функция нейрона рассматривается.
Из линий входов и выходов видно, что выходное значение зависит только от входных значений, а не наоборот.
(Выход может быть «подаваться обратно» на «дополнительный вход». Этот «нейрон с внутренней обратной связью «не обсуждается здесь.)
На поведение нейронов большое влияние имеет функция веса(Wij) и функция активации f(U).
Нейрон считается активным, если его выход имеет определенное значение, например, превышает пороговое значение.
Эта деятельность является результатом стимуляции входов и весов нейрона. Весовые коэффициенты могут способствовать стимуляции, если они больше нуля — или подавлять её, если они меньше нуля. Если весовой коэффициент равен нулю, то вход не влияет на деятельность нейрона.
(a)Функция Выключателя:
(b)Сигмойндная функция:
(c)Гиперболический тангенс:
(d)Линейная функция:
Следующие диаграммы показывают кривую для каждой функции.
(a) Функция выключателя (b) Сигмойндная функция
(с) Гиперболический тангенс (d) Линейная функция
Статические сети и их свойства
Статические сети достаточно хорошо изучены и уже используются для широкого спектра применений.
Динамические сети возникают потому, что внутренняя обратная связь была внедрена так, что выход нейрона в момент времени к зависит от его собственного выхода в момент к-1 (выход — дополнительный вход). Динамические сети все еще находятся на стадии исследования и редко используются в практике, потому что большая трудность убедиться в их устойчивости и комплексе обучения.
В этом ПО используются три типа нейронных сетей, это: MLP, RBF и NeuroFuzzy.
Многослойный персептрон (MLP Network)
Наверное, самый известный тип нейронной сети является многослойный персептрон. В этом случае, несколько нейронов соединены между собой прямыми связями. В сети MLP, нейроны расположены в несколько слоев. Два слоя, которые соединены с внешним миром называют входной и выходной слои. Слои между входным и выходным слоем, называют скрытые слои. Следующая диаграмма иллюстрирует эту структуру.
Входной слой Скрытые слои Выходной слой
Нейроны входного слоя используются только для распределения входов к нейронам первого, скрытого слоя и поэтому каждый имеет только один вход. Вес входного соединения можно использовать для масштабирования входного сигнала. Входные нейроны являются частным случаем нейрона. Некоторые авторы, не включает входной слой в число слоев в сети. В NEUROSYSTEMS, входной слой учитывается.
Радиально базисные функции (RBF сети)
Метод, используемый в RBF сети немного отличается от используемого для многослойного персептрона.
Они всегда состоят из трех слоев:
• Входной слой,
• Второй слой RBF нейронов, функция активации которых является функцией Гаусса (как
показано на рисунке ниже),
• И выходного слоя.
Входной слой слой RBF Выходной слой
( Здесь: j=1 … 3) (здесь: i=1 … 4) (здесь: k=1 … 3)
NeuroFuzzy сетей (NFN)
Для того, чтобы воспользоваться преимуществами нейронных сетей и нечетких систем в одном проекте, вам потребуется система, которая обрабатывает нечеткие функции принадлежности и правила базы знаний нечеткой модели и может определить знания из выборки данных с использованием нейронных способов обучения.
Вы можете решить эту проблему с помощью специальной нейронной сетью, называемой neurofuzzy сеть (NFN). Она состоит из трех нейронных подсетей (NSN), имитирующие три подзадачи — fuzzification, обработка правил и defuzzification.
НЕЧЕТКАЯ СИСТЕМА
НЕЙРОННАЯ СЕТЬ
1) Fuzzification в 1-й слой NSN подсети.
Fuzzification – перевод входных переменных в нечеткий формат, реализует слой нейронов с функцией активации, аналогичной как в сети RBF. Один нейрон присваивается каждой функции принадлежности входных переменных.
2) Вывод во 2-ом NSN слое подсети.
Основные правила базы знаний нечеткой системы находится в 2-ом NSN слое, и один нейрон назначен на каждое правило.
3) Defuzzification в 3-ем NSN слое подсети. Преобразование нечетких множеств в четкое число производиться одним из стандартных методов — центра тяжести.
Получается такая схема.
У системы иллюстрированной выше, есть входные сигналы x1 и x2. Три функции: (Nnegative, Z-ноль, P-positive), распределенные на каждый входной сигнал. Три функции ( N-negative, Z-ноль, P-positive) также приняты для выходного сигнала Y.
Создание сети.
Для демонстрации работы с NEUROSYSTEMS, приводиться очень простой пример: Предположим, контроллер должен выполнить операцию, исключающую ИЛИ, т. е. функцию XOR, для двух входных сигналов. Данные для обучения берутся из таблицы истинности функции XOR:
После запуска программы, создаем новый проект, где указываем, сколько входов и выходов нам нужно, то есть два входа и один выход.
После начальных настроек, открывается блок схема нейронной сети, по умолчанию MLP. Заходим в настройку входа Input01. Нормализуем его, установив верхнюю — один, и нижнюю границу – ноль, для входного сигнала. Тоже проделаем и со вторым входом и выходом.
Еще нужно выбрать тип сети.
NEUROSYSTEMS предоставляет следующие типы сетей:
• MLP сеть (многослойный персептрон)
Этот тип сети подходит, если только относительно небольшой объем обучающих данных.
• RBF сеть (радиально базисные функции)
Этот тип сети должен использоваться, если много данных для обучения сети.
• NFN сеть (neurofuzzy )
Сети этого типа обрабатывают функции принадлежности и базу знаний нечеткой логики.
По умолчанию устанавливается нейронная сеть MLP (многослойный персептрон).
Далее настраиваем структуру нейронной сети. Структура сети определяется количеством слоев и число нейронов в слоях (для MLP и RBF), или числом функций принадлежности у входов и выходов (для NFN). Входной и выходной слои сети подключаются к внешним устройствам, поэтому число нейронов в этих слоях обязательно совпадает с числом входов и выходов, определенных в проекте.
Количество скрытых слоев может быть выбрано в зависимости от типа сети. Для сети MLP, вы можете выбрать один или два слоя. Для каждого скрытого слоя, вы можете назначить от 1 до 50 нейронов.
Для выбора структуры сети полезна следующая информация:
• Чем меньше данных для обучения, тем меньше нейронов, вы должны выбрать.
• Начните с малого количества нейронов, и увеличивайте их количество, пока не получите удовлетворительный результат.
Обучение сети означает выполнение шагов обучения до получения удовлетворяющего результата.
Каждый шаг обучения включает в себя:
• Расчет текущей, фактической на выходе от входного образца;
• Определение текущей разницы между фактической и заданной модели;
• Сравнение с отличием от предыдущего шага;
• Изменение подключение весов нейронов таким образом, что разница между
двумя отличиями становилась меньше.
Набор связанных данных входной и выходной модели называют обучающим набором данных. Здесь, сеть должна научиться поведению логической функции XOR с помощью таблицы истинности.
В блокноте составим таблицу истинности и сохраним с расширением .DAT.
Теперь подключим его к проекту.
Посмотрим на учебный набор данных в графическом виде. На рисунке два нижних графика – входные данные, а верхний график – выходные данные.
Четыре значения каждой переменной (входа или выхода) могут быть соединены прямой линией, и отображается в виде кривой сигнала на оси времени. Это интерпретирует изучения данных таким образом, что четыре этапа обучения появится в сети один за другим к раз.
На графике выходного сигнала, трапециевидная кривая – желаемый результат, а красная кривая (почти горизонтальная линия) фактический сигнал на выходе не обученной сети.
Откроем 3-D дисплей. Выходной сигнал – ось Z, входные сигналы – ось X, Y. На рисунке изображен график зависимости выхода Z от входов X,Y у не обученной сети.
Теперь обучим сеть с помощью таблицы в файле xor.DAT.
При запуске обучения нужно установить предел погрешности и время обучения.
Проверку данных оставим RANDOM(случайный выбор).
Начальный процесс обучения является неудачным и останавливается после прохождения изучения 10000 шагов.
В процессе обучения ошибка не достигает допустимой погрешности. (левый нижний график).
Обучение был неудачным, потому что случайная выборка проверки данных (RANDOM) является непригодным методом обучения для этой сети, так как крайне мал файл с обучающими данными. Во второй попытке, мы будем использовать none в проверке данных.
Процесс обучения достигает предела ошибки и завершается успешно после сорока шагов обучения.
А теперь ради эксперимента я увеличил размер обучающих данных простым копированием и при запуске обучения установил опять проверку данных RANDOM(случайный выбор).
Обучение прошло успешно. Поменяв сеть на RBF, получил похожий результат.
Успешное обучение. Из левого нижнего графика видно, что эта сеть RBF обучается за шесть шагов.
И не успешное обучение.
С большим количеством обучающих данных сеть RBF так же обучилась за меньшее количество шагов.
Сеть NFN еще быстрее обучается, почти за два шага.
Попробовал создать хаотичные обучающие данные и попробовал их на разных сетях, меняя количество нейронов. Получился довольно неплохой результат.
Только сеть NFN не захотела обучаться с этими данными.
Статья в PDF:Нейронные сети и нейро нечеткие системы фирмы SIEMENS
Оригинал: NEUROSYSTEMS
Скачать ПО можно с сайта фирмы SIEMENS.
По заказу компании «Джинн» был разработан универсальный контроллер с четырьмя выходами, контроллер позволяет регулировать
температуру по двум датчикам в режиме вентиляции и в режиме обогрева. Так же в нем есть возможность управлять выходами по времени и по таймеру.
Блочная схема.
Принципиальная схема блока приведена ниже. Прибор построен на микроконтроллере PIC18F4520, часы и дата передаются на микроконтроллер от часов реального времени DS1307. В качестве датчиков температуры используются DS18B20.
Схема приведена урезанная, нет силовой и питающей части, так как для тестирования программы они ненужны, а плату со схемой разрабатывал мой старый знакомый, но это было давно, и вряд ли осталась какая- то информация.
Фото печатных плат.
Спецификация и чертеж печатных плат лежат в архиве.
Это схема настроек прибора.
Любой из выходов можно переименовать, на пример по имени нагрузки, настроить режим работы выхода под любую конфигурацию: вентиляция, обогрев, время, таймер. Так же на любой выход, через меню прибора можно подать питание, снять его, или оставить работать по программе.
Диапазон измеряемой температуры от -50 до +125 ºС. Таймер поддерживает периодичность до 60 суток. Руководство на прибор в архиве. С помощью данного прибора можно реализовать различные варианты автоматики.
Скоро выйдет двухканальный вариант.
Возможности у него такие же, как и четырехканального контроллера.
Вот такая получилась плата в Протеусе.
А это готовый пробный вариант.
Ну и вставив в корпус, получил такой вот результат.
А так выглядит конечный результат.
Сейчас контроллер проходит тестирование, После тестирования передам заказчику.
Программное постоянно дорабатывается, и скоро добавятся такие новые функции как: управление по времени и температуре, то есть в разное время можно поддерживать разную температуру.
Другая функция — управление по времени и таймеру, например, ночью включает какое-нибудь устройство с одной периодичностью (с одними настройками таймера), а днем с другой с периодичностью (с другими настройками таймера). Можно настроить вентиляцию дома, ночью реже включаться, а днем чаще.
Функция таймер и температура – поддерживать один период таймера одну заданную температуру (25-28С), а в другой период таймера другую заданную температуру (35-37С). Ну и много других вариантов.
Демо проект demo_4_canel
руководство руководство на контроллер Джин