• Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже предостаточно - придумайте что-то пооригинальнее.
  • Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО и средств взлома - бан без предупреждения.
  • Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать - читать здесь и здесь.

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

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

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

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

Сообщение tangatar »

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

VADR
администратор
администратор
Сообщения: 3959
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 149 раз
Поблагодарили: 213 раз

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

Сообщение VADR »

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

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

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

Сообщение tangatar »

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

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

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

Сообщение Михайло »

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

tangatar писал(а):Также сам siemens предлагает некое приложение fuzzycontrol++ которое предназначено для проектирования и внедрения решений основанных на нечеткой логике... достать то я его достал но как его грамотно интегрировать с step7 и поиспользовать толку не хватает) и нигде нет доступного руководства по этому вопросу.
Не сталкивался, но все дополнительные пакеты под Степ7, не то чтобы интегрируются, они поставляются в виде примеров. Т.е. надо установить, затем в Степ7 открыть на вкладке Example. Мануал на этот пакет не секретный - http://support.automation.siemens.com/W ... en/1135654
tangatar писал(а):Может быть есть примерный код в STL
Дайте ссылку где скачать этот пакет (или выложите), посмотрю, возможно что можно будет посмотреть что внутри.
--------------------------------------------------------------------------------------------
Аватара пользователя

Nordway_on_ASUTP
здесь недавно
здесь недавно
Сообщения: 34
Зарегистрирован: 26 фев 2010, 10:30
Имя: Nordway_on_ASUTP
Страна: Россия
город/регион: Москва

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

Сообщение Nordway_on_ASUTP »

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

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

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

Сообщение tangatar »

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

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

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

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

Сообщение tangatar »

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

VADR
администратор
администратор
Сообщения: 3959
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 149 раз
Поблагодарили: 213 раз

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

Сообщение VADR »

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

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

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

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

Сообщение tangatar »

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

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

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

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

Сообщение tangatar »

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

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

А, да! Разбирайтесь с версией проекта 4к (4 килобайта), так как 20к это уж для 400 серии.
--------------------------------------------------------------------------------------------
Аватара пользователя

VADR
администратор
администратор
Сообщения: 3959
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 149 раз
Поблагодарили: 213 раз

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

Сообщение VADR »

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

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

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

Сообщение tangatar »

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

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

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

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

Сообщение tangatar »

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

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

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

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

Сообщение tangatar »

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

Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 976
Зарегистрирован: 25 июл 2008, 23:23
Имя: Бондарев Михаил Владимирович
Страна: Россия
город/регион: Магнитогорск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

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

Сообщение Бондарев Михаил »

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

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

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

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

Сообщение tangatar »

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

Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 976
Зарегистрирован: 25 июл 2008, 23:23
Имя: Бондарев Михаил Владимирович
Страна: Россия
город/регион: Магнитогорск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

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

Сообщение Бондарев Михаил »

эта штука должна генерировать блок для степа, который уже можно вызывать в основной программе
Matlab PLCCoder в помощь. Там буквально в пару щелчков код появляется, хорошие примеры в хелпнике есть.
С чего ж это вы уважаемый "поняли"?)
вот с этого
в классике похоже используют треугольную форму функций принадлежности. Но описать такую штуку скажем для пяти терм на языке stl в симатике я не могу, моих познаний в нем не хватает а время поджимает
Чистая математика 7го(6го?) класса. уравнение прямой по двум точкам.

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

CHANt
эксперт
эксперт
Сообщения: 1435
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
Благодарил (а): 27 раз
Поблагодарили: 77 раз

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

Сообщение CHANt »

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

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

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

Сообщение tangatar »

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

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