- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Нечеткая логика для S7-300
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Нечеткая логика для S7-300
Здравствуйте коллеги! Учусь в магистратуре по направлению автоматизация хим процессов и производств, поставили задачу: реализовать нечеткий регулятор на базе контроллера siemens s7-300. На учебном стенде выбрал контур регулирования уровня жидкости в емкости. Имеется аналоговый датчик уровня, и насос. Предполагаю управлять насосом, скажем, в зависимости от величины ошибки и скорости ее изменения выдавать управляющее воздействие на насос. Проблема в том, что я не имел опыта работы с этими контроллерами и языками программирования не владею... Может кто нибудь подсказать код или показать какой-нибудь примерчик реализации подобного нечеткого регулятора в степ 7? Или как вариант: каким образом собранный нечеткий регулятор в матлабе можно поместить в контроллер s7-300?
Заранее признателен.
Заранее признателен.
-
- администратор
- Сообщения: 4732
- Зарегистрирован: 25 июл 2008, 07:12
- Имя: Диев Александр Васильевич
- Страна: Россия
- город/регион: г. Сегежа, Карелия
- Благодарил (а): 225 раз
- Поблагодарили: 393 раза
Re: Нечеткая логика для S7-300
Для начала - как выглядит нечёткий регулятор в матлабе? Я не спец в сименсовских контроллерах, но что-то мне подсказывает, что готовых блоков для этих целей там нет. Однако есть возможность создавать свои...
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
В матлабе есть возможность промоделировать нечеткий регулятор, представлять он собой будет модель simulink. Работая над данным вопросом наткнулся на информацию, что в матлабе 2010а есть такая штука PLC coder, которая позволяет из блоков simulink генерировать код для PLC. Также сам siemens предлагает некое приложение fuzzycontrol++ которое предназначено для проектирования и внедрения решений основанных на нечеткой логике... достать то я его достал но как его грамотно интегрировать с step7 и поиспользовать толку не хватает) и нигде нет доступного руководства по этому вопросу. Вот и подумал может есть люди кто сталкивался с подобными задачами или обучался этим вещам... Может быть есть примерный код в STL
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
Не сталкивался, но все дополнительные пакеты под Степ7, не то чтобы интегрируются, они поставляются в виде примеров. Т.е. надо установить, затем в Степ7 открыть на вкладке Example. Мануал на этот пакет не секретный - http://support.automation.siemens.com/W ... en/1135654tangatar писал(а):Также сам siemens предлагает некое приложение fuzzycontrol++ которое предназначено для проектирования и внедрения решений основанных на нечеткой логике... достать то я его достал но как его грамотно интегрировать с step7 и поиспользовать толку не хватает) и нигде нет доступного руководства по этому вопросу.
Дайте ссылку где скачать этот пакет (или выложите), посмотрю, возможно что можно будет посмотреть что внутри.tangatar писал(а):Может быть есть примерный код в STL
--------------------------------------------------------------------------------------------
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 26 фев 2010, 10:30
- Имя: Nordway_on_ASUTP
- Страна: Россия
- город/регион: Москва
Re: Нечеткая логика для S7-300
Почитайте Деменкова "Нечёткое управление в технических системах"...у него есть реализация в Matlab + есть описание языка FCL(fuzzy control language)...как у Семёна реализовано не знаю, у Шнайдера есть точно модуль под Fuzzy
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Собственно сам fuzzy Control ++ брал отсюда... http://plcforum.uz.ua/viewtopic.php?f=1&t=1349
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
Ну тогда еще покопайтесь на том форуме и скачайте курс для начинающих ST-7PRO1 и ST-7PRO2. Без начальных знаний как работать с контроллером и со средой программирования, толку от наличия пакета нечеткой логики никакой ))
Вечером посмотрю FB пакета - а что даст Вам наличие исходников?
Вечером посмотрю FB пакета - а что даст Вам наличие исходников?
--------------------------------------------------------------------------------------------
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Эти курсы я уже скачал - штудирую, спасибо) А наличие исходников... Нашел руководство по этому приложению на англ языке, насколько понял: эта штука должна генерировать блок для степа, который уже можно вызывать в основной программе, но может быть можно прописать подобный блок вручную? или что-либо похожее вот поэтому и спрашиваю о наличии кода на STL. Конечно если мне удастся крякнуть фазикантрол по-людски может быть сумею воспользоваться прямо им в соответствии с руководством пользователя, правда пока что-то не выходит(
-
- администратор
- Сообщения: 4732
- Зарегистрирован: 25 июл 2008, 07:12
- Имя: Диев Александр Васильевич
- Страна: Россия
- город/регион: г. Сегежа, Карелия
- Благодарил (а): 225 раз
- Поблагодарили: 393 раза
Re: Нечеткая логика для S7-300
А вручную "с нуля" никак не сделать? Каким образом хотите использовать нечёткую логику?
К примеру, один из вариантов реализации (используется некоторыми фирмами): сначала каждый входной аналоговый сигнал прогоняется через "фаззификацию", т.е. обработку по набору правил. Каждое правило на координатной плоскости выглядит как трапеция и задаётся массивом из 4 точек x1, x2, x3, x4. При значении входного параметра ниже x1 или выше x4 - функция принадлежности по этому правилу равна нулю, при значениях от x2 до x3 - единице, от x1 до x2 и от x3 до x4 - интерполируется по отрезку прямой. На выходе - массив значений диапазона 0..1, количество элементов массива соответствует количеству правил обработки.
Затем идёт обработка (в буржуйских документациях иногда применяют слово inference - логический вывод или что-то типа того). Здесь над элементами массивов входных параметров по некоторой базе правил при помощи операций "нечеткие" "И", "ИЛИ", "НЕ" (хотя какие они нафиг нечёткие - не люблю это название) принимаются решения о воздействии на выходной параметр (опят таки, массив решений - массив из значений 0..1, количество которых соответствует количеству возможных предопределённых воздействий).
В конце - по выходному массиву расчитывается результирующее воздействие на исполнительный механизм.
Если система позволяет работать с массивами и создавать свои функциональные блоки - ничего невозможного в этих операциях нет.
К примеру, один из вариантов реализации (используется некоторыми фирмами): сначала каждый входной аналоговый сигнал прогоняется через "фаззификацию", т.е. обработку по набору правил. Каждое правило на координатной плоскости выглядит как трапеция и задаётся массивом из 4 точек x1, x2, x3, x4. При значении входного параметра ниже x1 или выше x4 - функция принадлежности по этому правилу равна нулю, при значениях от x2 до x3 - единице, от x1 до x2 и от x3 до x4 - интерполируется по отрезку прямой. На выходе - массив значений диапазона 0..1, количество элементов массива соответствует количеству правил обработки.
Затем идёт обработка (в буржуйских документациях иногда применяют слово inference - логический вывод или что-то типа того). Здесь над элементами массивов входных параметров по некоторой базе правил при помощи операций "нечеткие" "И", "ИЛИ", "НЕ" (хотя какие они нафиг нечёткие - не люблю это название) принимаются решения о воздействии на выходной параметр (опят таки, массив решений - массив из значений 0..1, количество которых соответствует количеству возможных предопределённых воздействий).
В конце - по выходному массиву расчитывается результирующее воздействие на исполнительный механизм.
Если система позволяет работать с массивами и создавать свои функциональные блоки - ничего невозможного в этих операциях нет.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Что ничего невозможного нет согласен, а вот кааак это проделать руками вот в чем загвоздка) Идея как раз таки именно такая как Вы описали, то есть на вход регулятора ошибка и скорость изменения ошибки, на выходе упр воздействие на насос. Ошибка и ее производная (скорость изменения ошибки) это лингвистические переменные, то есть они как раз подвергаются фаззификации по термам, только форма их трапеция или треугольник тут вопрос, в классике похоже используют треугольную форму функций принадлежности. Но описать такую штуку скажем для пяти терм на языке stl в симатике я не могу, моих познаний в нем не хватает а время поджимает. Для этого процесса у меня есть реализованный ПИД регулятор этим мои познания и ограничиваются. А каким образом задать базу правил, как фаззифицировать сигнал в определенных пределах и посчитать необходимое выходное воздействие ( его я кстати предполагаю четким) вот тут у меня все плохо)) Хотел воспользоваться универсальным готовым блоком с помощью fuzzyCantrol++, дак не хочет коннектится с STEPом.
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
Да не должен он ничего генерировать. Как обычно у семена, для опциональных пакетов регуляторов, есть готовые блоки под Степ7 (в виде Samples) и некая надстройка которая позволяет иметь графический интерфейс к этим "готовым блокам". Вот ни разу не пользовался этой надстройкой в пакетах StandartPIDControl, PIDSelfTuner. Я думаю и здесь можно обойтись и без нее. То, что эта надстройка не запускается - ну так сейчас уже сложно понять с какой версией Степ7 и WinCC v.6 она дружила.tangatar писал(а): Нашел руководство по этому приложению на англ языке, насколько понял: эта штука должна генерировать блок для степа, который уже можно вызывать в основной программе, но может быть можно прописать подобный блок вручную? (
Я снял защиту с функциональных блоков и функций примера Fuzzy, можете смотреть в Step7
У вас нет необходимых прав для просмотра вложений в этом сообщении.
--------------------------------------------------------------------------------------------
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Вааай азбука китайская... Спасибо огромное вскрыл степом хоть на это толку хватило)) Щас буду думать чего куда пихать авось что нить получится, тему не закрываю вдруг кто еще чего подскажет. Спасибо вам господа!
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
Да не за что...
Мануалы в зубы и читать. Начать лучше с структуры самого проекта - что откуда и зачем вызывается. Ну и проект можно загрузить в симулятор PLCSim и в нем , через VAT таблицу, насиловать до опупения в рунтайме)))
А, да! Разбирайтесь с версией проекта 4к (4 килобайта), так как 20к это уж для 400 серии.
Мануалы в зубы и читать. Начать лучше с структуры самого проекта - что откуда и зачем вызывается. Ну и проект можно загрузить в симулятор PLCSim и в нем , через VAT таблицу, насиловать до опупения в рунтайме)))
А, да! Разбирайтесь с версией проекта 4к (4 килобайта), так как 20к это уж для 400 серии.
--------------------------------------------------------------------------------------------
-
- администратор
- Сообщения: 4732
- Зарегистрирован: 25 июл 2008, 07:12
- Имя: Диев Александр Васильевич
- Страна: Россия
- город/регион: г. Сегежа, Карелия
- Благодарил (а): 225 раз
- Поблагодарили: 393 раза
Re: Нечеткая логика для S7-300
Трапеция имеет два преимущества:tangatar писал(а):Ошибка и ее производная (скорость изменения ошибки) это лингвистические переменные, то есть они как раз подвергаются фаззификации по термам, только форма их трапеция или треугольник тут вопрос, в классике похоже используют треугольную форму функций принадлежности.
1. Можно выделить зону "нормальных значений" где регулятору можно "ничего не делать".
2. Если всё-таки понадобился треугольник, то его можно сделать из трапеции простым уравниванием x2 = x3.
А вообще, функции принадлежности в теории могут быть самые разные, но не всегда это удобно в практической реализации. Тут компромисс нужен.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Уф что-то не могу понять в каком блоке база правил задается... как-то мутно тут все работает) Я так понимаю нужные по минимуму блоки это FC31, FC30, FB30, DB30 ну и конечно OB1. А как на данный момент работает пример не до конца ясно да еще с кривым гугловским переводом... может кто-то может слегка прокомментировать?
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
FB30 -сам фаззи
FC1 сравнивает чтобы первый INPUT лежал в диапазоне от и до, и дает команду HILFSMERKER_1 потом, каждые 100 мс, прибавляет по двойке на входную величину INPUT1, по выходу за границу начинает отнимать.
FC2 сравнивает чтобы чтобы второй INPUT лежал в диапазоне от и до, потом, каждые 100 мс, прибавляет по единице на входную величину INPUT2, по выходу за границу начинает отнимать.
FC1 и FC2 симуляторы входных величин!
FC30/31 обработка аналоговых входных/выходных величин, в данном примере не используются!
FC1 сравнивает чтобы первый INPUT лежал в диапазоне от и до, и дает команду HILFSMERKER_1 потом, каждые 100 мс, прибавляет по двойке на входную величину INPUT1, по выходу за границу начинает отнимать.
FC2 сравнивает чтобы чтобы второй INPUT лежал в диапазоне от и до, потом, каждые 100 мс, прибавляет по единице на входную величину INPUT2, по выходу за границу начинает отнимать.
FC1 и FC2 симуляторы входных величин!
FC30/31 обработка аналоговых входных/выходных величин, в данном примере не используются!
--------------------------------------------------------------------------------------------
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Хм получается мне надо заменить input 1 и input 2 на реальные величины... значит input 1 будет ошибка, а как можно посчитать в степ 7 производную от ошибки? Чтобы узнать скорость ее изменения. Затем нужно задать массивы функций принадлежности для обеих переменных. А где тут рассчитывается управляющее воздействие?
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
В первую очередь, я так понял, надо заполнить массив в DB30 - пока он не заполнен, результат работы FB30 (INFO) - B#16#11 (нет данных в массиве). На симуляторе посмотрел, после подачи команды Старт, вылетает на конец блока, так как нечего рассчитывать. По всей вероятности массив заполняется данными из графической оболочки FuzzyControl++ по каким-то принципам...копаться не охота.
В общем читайте документацию, где-то собака зарыта.
Засим откланиваюсь. Убивать время на нечОткий результат - бездарная трата времени, есть дела поважней. :)
Если попадется пакет сименса по нейронной сети, не забудьте ссылку кинуть )))) в коллекцию пригодится. )
В общем читайте документацию, где-то собака зарыта.
Засим откланиваюсь. Убивать время на нечОткий результат - бездарная трата времени, есть дела поважней. :)
Если попадется пакет сименса по нейронной сети, не забудьте ссылку кинуть )))) в коллекцию пригодится. )
--------------------------------------------------------------------------------------------
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Нейронная сеть там же)) Спасибо большое за консультацию, пришел к выводу что проще написать на SCL с нуля как говорится, уж больно замудрили они блоки.
-
- почётный участник форума
- Сообщения: 981
- Зарегистрирован: 25 июл 2008, 23:23
- Имя: Бондарев Михаил Владимирович
- Страна: Россия
- город/регион: Магнитогорск
- Благодарил (а): 6 раз
- Поблагодарили: 3 раза
Re: Нечеткая логика для S7-300
Вам кажется. Эти жжжж неспроста.пришел к выводу что проще написать на SCL с нуля как говорится
А вообще надо начать с математики. Там, как я понял, еще конь не валялся.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
С чего ж это вы уважаемый "поняли"?) Сделали выводы из моего вопроса про производную? Дак там ключевое слово Step 7. А про "жжжж" извините я не понял. Спасибо за дельные консультации, тем кто их дал, займусь, пожалуй, сименсом плотнее, интересная штука)
-
- почётный участник форума
- Сообщения: 981
- Зарегистрирован: 25 июл 2008, 23:23
- Имя: Бондарев Михаил Владимирович
- Страна: Россия
- город/регион: Магнитогорск
- Благодарил (а): 6 раз
- Поблагодарили: 3 раза
Re: Нечеткая логика для S7-300
Matlab PLCCoder в помощь. Там буквально в пару щелчков код появляется, хорошие примеры в хелпнике есть.эта штука должна генерировать блок для степа, который уже можно вызывать в основной программе
вот с этогоС чего ж это вы уважаемый "поняли"?)
Чистая математика 7го(6го?) класса. уравнение прямой по двум точкам.в классике похоже используют треугольную форму функций принадлежности. Но описать такую штуку скажем для пяти терм на языке stl в симатике я не могу, моих познаний в нем не хватает а время поджимает
А с производной то что? dZ/dt = (Zt-Z(t-1))/deltaT, где deltaT - шаг квантования и численно равен периоду работы OB (ну например 100мсек)
Для реализации можете создать отдельную структуру ТЕРМ, которая бы содержала все данные термов. Функция фаззификации эти структуры пробегает в массиве (скорее всего это именно эти пустые массивы из готового блока S7).. ну и далее по алгоритму.
Это я о том что для создания рабочего продукта приходится учитывать кучу ньюанасов, реализация и ее оптимизация заставляет использовать массивы и проч.Эти жжжж неспроста
Самым верным решением было бы, не отбрасывая готовое решение, вычитать мануал на предмет заковык и аспектов. Уяснить для себя сущность (физическую и математическую) всех процессов в системе (как в ОУ так и в СУ) и только потом принимать решения о написании "с нуля".
Вы же не думаете, что глупые немцы, тиражируя свой продукт тысячами и десятками тысяч копий, насовали туде непойми чего, просто для развлечения и создания имиджа. Фофан таксказать.
-
- эксперт
- Сообщения: 1465
- Зарегистрирован: 25 июл 2008, 10:25
- Имя: Эдуард Владимирович
- Страна: СССР
- город/регион: Оренбург
- Благодарил (а): 45 раз
- Поблагодарили: 104 раза
Re: Нечеткая логика для S7-300
Да, чуть не забыл, то что я выложил с исходниками - это не проект, это библиотека. Для того чтобы попробовать с симулятором PLCSim, надо собрать в HWConfig аппаратную конфигурацию институтского стенда и потом перенести программу из библиотеки. Только после этого можно вязать по MPI сам ехешник FuzzyControl с симулятором, или контроллером. Настройка связи, в картинках, приведена в handbook.
--------------------------------------------------------------------------------------------
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Нечеткая логика для S7-300
Спасибо всем, еще нюанс... с какой версии матлаба PLC coder поддерживает симатик? В инете нашел упоминание что с 2010а но там симатика нет, лишь CoDeSys, Generic, и т.п. Нацелился качать 2011b, но хотелось бы знать точно, все ж таки 5гб)