Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

Нечеткая логика для S7-300

PLC, прочие контроллеры, промышленные компьютеры, операторские панели

Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Нечеткая логика для S7-300

Сообщение tangatar » 18 июн 2012, 21:43

Здравствуйте коллеги! Учусь в магистратуре по направлению автоматизация хим процессов и производств, поставили задачу: реализовать нечеткий регулятор на базе контроллера siemens s7-300. На учебном стенде выбрал контур регулирования уровня жидкости в емкости. Имеется аналоговый датчик уровня, и насос. Предполагаю управлять насосом, скажем, в зависимости от величины ошибки и скорости ее изменения выдавать управляющее воздействие на насос. Проблема в том, что я не имел опыта работы с этими контроллерами и языками программирования не владею... Может кто нибудь подсказать код или показать какой-нибудь примерчик реализации подобного нечеткого регулятора в степ 7? Или как вариант: каким образом собранный нечеткий регулятор в матлабе можно поместить в контроллер s7-300?
Заранее признателен.

Аватара пользователя

VADR
администратор
администратор
Сообщения: 2412
Зарегистрирован: 25 июл 2008, 06:12
Ф.И.О.: Диев Александр Васильевич
Благодарил (а): 19 раз
Поблагодарили: 26 раз

Re: Нечеткая логика для S7-300

Сообщение VADR » 18 июн 2012, 21:48

Для начала - как выглядит нечёткий регулятор в матлабе? Я не спец в сименсовских контроллерах, но что-то мне подсказывает, что готовых блоков для этих целей там нет. Однако есть возможность создавать свои...
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 18 июн 2012, 22:02

В матлабе есть возможность промоделировать нечеткий регулятор, представлять он собой будет модель simulink. Работая над данным вопросом наткнулся на информацию, что в матлабе 2010а есть такая штука PLC coder, которая позволяет из блоков simulink генерировать код для PLC. Также сам siemens предлагает некое приложение fuzzycontrol++ которое предназначено для проектирования и внедрения решений основанных на нечеткой логике... достать то я его достал но как его грамотно интегрировать с step7 и поиспользовать толку не хватает) и нигде нет доступного руководства по этому вопросу. Вот и подумал может есть люди кто сталкивался с подобными задачами или обучался этим вещам... Может быть есть примерный код в STL


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2230
Зарегистрирован: 10 ноя 2009, 04:58
Ф.И.О.: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение Михайло » 19 июн 2012, 04:20

Ищи на форуме iadt.siemens.ru/forum пользователя Faust

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 19 июн 2012, 05:11

tangatar писал(а):Также сам siemens предлагает некое приложение fuzzycontrol++ которое предназначено для проектирования и внедрения решений основанных на нечеткой логике... достать то я его достал но как его грамотно интегрировать с step7 и поиспользовать толку не хватает) и нигде нет доступного руководства по этому вопросу.

Не сталкивался, но все дополнительные пакеты под Степ7, не то чтобы интегрируются, они поставляются в виде примеров. Т.е. надо установить, затем в Степ7 открыть на вкладке Example. Мануал на этот пакет не секретный - http://support.automation.siemens.com/W ... en/1135654

tangatar писал(а):Может быть есть примерный код в STL

Дайте ссылку где скачать этот пакет (или выложите), посмотрю, возможно что можно будет посмотреть что внутри.
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))

Аватара пользователя

Nordway_on_ASUTP
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 26 фев 2010, 10:30
Ф.И.О.: Nordway_on_ASUTP

Re: Нечеткая логика для S7-300

Сообщение Nordway_on_ASUTP » 19 июн 2012, 08:19

Почитайте Деменкова "Нечёткое управление в технических системах"...у него есть реализация в Matlab + есть описание языка FCL(fuzzy control language)...как у Семёна реализовано не знаю, у Шнайдера есть точно модуль под Fuzzy


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 10:07

Собственно сам fuzzy Control ++ брал отсюда... http://plcforum.uz.ua/viewtopic.php?f=1&t=1349

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 19 июн 2012, 11:22

Ну тогда еще покопайтесь на том форуме и скачайте курс для начинающих ST-7PRO1 и ST-7PRO2. Без начальных знаний как работать с контроллером и со средой программирования, толку от наличия пакета нечеткой логики никакой ))
Вечером посмотрю FB пакета - а что даст Вам наличие исходников?
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 11:42

Эти курсы я уже скачал - штудирую, спасибо) А наличие исходников... Нашел руководство по этому приложению на англ языке, насколько понял: эта штука должна генерировать блок для степа, который уже можно вызывать в основной программе, но может быть можно прописать подобный блок вручную? или что-либо похожее вот поэтому и спрашиваю о наличии кода на STL. Конечно если мне удастся крякнуть фазикантрол по-людски может быть сумею воспользоваться прямо им в соответствии с руководством пользователя, правда пока что-то не выходит(

Аватара пользователя

VADR
администратор
администратор
Сообщения: 2412
Зарегистрирован: 25 июл 2008, 06:12
Ф.И.О.: Диев Александр Васильевич
Благодарил (а): 19 раз
Поблагодарили: 26 раз

Re: Нечеткая логика для S7-300

Сообщение VADR » 19 июн 2012, 12:24

А вручную "с нуля" никак не сделать? Каким образом хотите использовать нечёткую логику?
К примеру, один из вариантов реализации (используется некоторыми фирмами): сначала каждый входной аналоговый сигнал прогоняется через "фаззификацию", т.е. обработку по набору правил. Каждое правило на координатной плоскости выглядит как трапеция и задаётся массивом из 4 точек x1, x2, x3, x4. При значении входного параметра ниже x1 или выше x4 - функция принадлежности по этому правилу равна нулю, при значениях от x2 до x3 - единице, от x1 до x2 и от x3 до x4 - интерполируется по отрезку прямой. На выходе - массив значений диапазона 0..1, количество элементов массива соответствует количеству правил обработки.
Затем идёт обработка (в буржуйских документациях иногда применяют слово inference - логический вывод или что-то типа того). Здесь над элементами массивов входных параметров по некоторой базе правил при помощи операций "нечеткие" "И", "ИЛИ", "НЕ" (хотя какие они нафиг нечёткие - не люблю это название) принимаются решения о воздействии на выходной параметр (опят таки, массив решений - массив из значений 0..1, количество которых соответствует количеству возможных предопределённых воздействий).
В конце - по выходному массиву расчитывается результирующее воздействие на исполнительный механизм.

Если система позволяет работать с массивами и создавать свои функциональные блоки - ничего невозможного в этих операциях нет.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 12:45

Что ничего невозможного нет согласен, а вот кааак это проделать руками вот в чем загвоздка) Идея как раз таки именно такая как Вы описали, то есть на вход регулятора ошибка и скорость изменения ошибки, на выходе упр воздействие на насос. Ошибка и ее производная (скорость изменения ошибки) это лингвистические переменные, то есть они как раз подвергаются фаззификации по термам, только форма их трапеция или треугольник тут вопрос, в классике похоже используют треугольную форму функций принадлежности. Но описать такую штуку скажем для пяти терм на языке stl в симатике я не могу, моих познаний в нем не хватает а время поджимает. Для этого процесса у меня есть реализованный ПИД регулятор этим мои познания и ограничиваются. А каким образом задать базу правил, как фаззифицировать сигнал в определенных пределах и посчитать необходимое выходное воздействие ( его я кстати предполагаю четким) вот тут у меня все плохо)) Хотел воспользоваться универсальным готовым блоком с помощью fuzzyCantrol++, дак не хочет коннектится с STEPом.

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 19 июн 2012, 16:21

tangatar писал(а): Нашел руководство по этому приложению на англ языке, насколько понял: эта штука должна генерировать блок для степа, который уже можно вызывать в основной программе, но может быть можно прописать подобный блок вручную? (

Да не должен он ничего генерировать. Как обычно у семена, для опциональных пакетов регуляторов, есть готовые блоки под Степ7 (в виде Samples) и некая надстройка которая позволяет иметь графический интерфейс к этим "готовым блокам". Вот ни разу не пользовался этой надстройкой в пакетах StandartPIDControl, PIDSelfTuner. Я думаю и здесь можно обойтись и без нее. То, что эта надстройка не запускается - ну так сейчас уже сложно понять с какой версией Степ7 и WinCC v.6 она дружила.
Я снял защиту с функциональных блоков и функций примера Fuzzy, можете смотреть в Step7 :lol:
Fuzs7ex.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 16:48

Вааай азбука китайская... Спасибо огромное вскрыл степом хоть на это толку хватило)) Щас буду думать чего куда пихать авось что нить получится, тему не закрываю вдруг кто еще чего подскажет. Спасибо вам господа!

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 19 июн 2012, 16:56

Да не за что...
Мануалы в зубы и читать. Начать лучше с структуры самого проекта - что откуда и зачем вызывается. Ну и проект можно загрузить в симулятор PLCSim и в нем , через VAT таблицу, насиловать до опупения в рунтайме)))

А, да! Разбирайтесь с версией проекта 4к (4 килобайта), так как 20к это уж для 400 серии.
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))

Аватара пользователя

VADR
администратор
администратор
Сообщения: 2412
Зарегистрирован: 25 июл 2008, 06:12
Ф.И.О.: Диев Александр Васильевич
Благодарил (а): 19 раз
Поблагодарили: 26 раз

Re: Нечеткая логика для S7-300

Сообщение VADR » 19 июн 2012, 18:44

tangatar писал(а):Ошибка и ее производная (скорость изменения ошибки) это лингвистические переменные, то есть они как раз подвергаются фаззификации по термам, только форма их трапеция или треугольник тут вопрос, в классике похоже используют треугольную форму функций принадлежности.

Трапеция имеет два преимущества:
1. Можно выделить зону "нормальных значений" где регулятору можно "ничего не делать".
2. Если всё-таки понадобился треугольник, то его можно сделать из трапеции простым уравниванием x2 = x3.
А вообще, функции принадлежности в теории могут быть самые разные, но не всегда это удобно в практической реализации. Тут компромисс нужен.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 19:14

Уф что-то не могу понять в каком блоке база правил задается... как-то мутно тут все работает) Я так понимаю нужные по минимуму блоки это FC31, FC30, FB30, DB30 ну и конечно OB1. А как на данный момент работает пример не до конца ясно да еще с кривым гугловским переводом... может кто-то может слегка прокомментировать?

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 19 июн 2012, 19:40

FB30 -сам фаззи
FC1 сравнивает чтобы первый INPUT лежал в диапазоне от и до, и дает команду HILFSMERKER_1 потом, каждые 100 мс, прибавляет по двойке на входную величину INPUT1, по выходу за границу начинает отнимать.
FC2 сравнивает чтобы чтобы второй INPUT лежал в диапазоне от и до, потом, каждые 100 мс, прибавляет по единице на входную величину INPUT2, по выходу за границу начинает отнимать.
FC1 и FC2 симуляторы входных величин!
FC30/31 обработка аналоговых входных/выходных величин, в данном примере не используются!
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 20:35

Хм получается мне надо заменить input 1 и input 2 на реальные величины... значит input 1 будет ошибка, а как можно посчитать в степ 7 производную от ошибки? Чтобы узнать скорость ее изменения. Затем нужно задать массивы функций принадлежности для обеих переменных. А где тут рассчитывается управляющее воздействие?

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 19 июн 2012, 21:44

В первую очередь, я так понял, надо заполнить массив в DB30 - пока он не заполнен, результат работы FB30 (INFO) - B#16#11 (нет данных в массиве). На симуляторе посмотрел, после подачи команды Старт, вылетает на конец блока, так как нечего рассчитывать. По всей вероятности массив заполняется данными из графической оболочки FuzzyControl++ по каким-то принципам...копаться не охота.
В общем читайте документацию, где-то собака зарыта.
Засим откланиваюсь. Убивать время на нечОткий результат - бездарная трата времени, есть дела поважней. :)
Если попадется пакет сименса по нейронной сети, не забудьте ссылку кинуть )))) в коллекцию пригодится. )
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 21:47

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


Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 945
Зарегистрирован: 25 июл 2008, 22:23
Ф.И.О.: Бондарев Михаил Владимирович
Поблагодарили: 1 раз

Re: Нечеткая логика для S7-300

Сообщение Бондарев Михаил » 19 июн 2012, 21:49

пришел к выводу что проще написать на SCL с нуля как говорится

Вам кажется. Эти жжжж неспроста.

А вообще надо начать с математики. Там, как я понял, еще конь не валялся.


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 19 июн 2012, 22:02

С чего ж это вы уважаемый "поняли"?) Сделали выводы из моего вопроса про производную? Дак там ключевое слово Step 7. А про "жжжж" извините я не понял. Спасибо за дельные консультации, тем кто их дал, займусь, пожалуй, сименсом плотнее, интересная штука)


Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 945
Зарегистрирован: 25 июл 2008, 22:23
Ф.И.О.: Бондарев Михаил Владимирович
Поблагодарили: 1 раз

Re: Нечеткая логика для S7-300

Сообщение Бондарев Михаил » 19 июн 2012, 23:32

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

Matlab PLCCoder в помощь. Там буквально в пару щелчков код появляется, хорошие примеры в хелпнике есть.

С чего ж это вы уважаемый "поняли"?)

вот с этого
в классике похоже используют треугольную форму функций принадлежности. Но описать такую штуку скажем для пяти терм на языке stl в симатике я не могу, моих познаний в нем не хватает а время поджимает

Чистая математика 7го(6го?) класса. уравнение прямой по двум точкам.

А с производной то что? dZ/dt = (Zt-Z(t-1))/deltaT, где deltaT - шаг квантования и численно равен периоду работы OB (ну например 100мсек)
Для реализации можете создать отдельную структуру ТЕРМ, которая бы содержала все данные термов. Функция фаззификации эти структуры пробегает в массиве (скорее всего это именно эти пустые массивы из готового блока S7).. ну и далее по алгоритму.

Эти жжжж неспроста

Это я о том что для создания рабочего продукта приходится учитывать кучу ньюанасов, реализация и ее оптимизация заставляет использовать массивы и проч.
Самым верным решением было бы, не отбрасывая готовое решение, вычитать мануал на предмет заковык и аспектов. Уяснить для себя сущность (физическую и математическую) всех процессов в системе (как в ОУ так и в СУ) и только потом принимать решения о написании "с нуля".
Вы же не думаете, что глупые немцы, тиражируя свой продукт тысячами и десятками тысяч копий, насовали туде непойми чего, просто для развлечения и создания имиджа. Фофан таксказать.

Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1247
Зарегистрирован: 25 июл 2008, 09:25
Ф.И.О.: Гринев Эдуард Владимирович
Откуда: Оренбург
Благодарил (а): 12 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Нечеткая логика для S7-300

Сообщение CHANt » 20 июн 2012, 05:54

Да, чуть не забыл, то что я выложил с исходниками - это не проект, это библиотека. Для того чтобы попробовать с симулятором PLCSim, надо собрать в HWConfig аппаратную конфигурацию институтского стенда и потом перенести программу из библиотеки. Только после этого можно вязать по MPI сам ехешник FuzzyControl с симулятором, или контроллером. Настройка связи, в картинках, приведена в handbook.
--------------------------------------------------------------------------------------------
"Почти все начальники - дилетанты." © цитата из поста hell_boy )))


Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 21:20
Ф.И.О.: Ачкасов Юрий Владимирович

Re: Нечеткая логика для S7-300

Сообщение tangatar » 20 июн 2012, 07:10

Спасибо всем, еще нюанс... с какой версии матлаба PLC coder поддерживает симатик? В инете нашел упоминание что с 2010а но там симатика нет, лишь CoDeSys, Generic, и т.п. Нацелился качать 2011b, но хотелось бы знать точно, все ж таки 5гб)


Вернуться в «Средний уровень автоматизации»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя