|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
18.04.2013, 06:31 | #1 |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Мой вариант PID-регулятора
Время от времени читаю на форуме пожелания иметь ПИД регулятор с возможностью на лету менять коэффициенты. Во вложении вариант такого регулятора. По входам/выходам аналогичен стандартному. Во вложении проект для сравнения поведения регуляторов. Один нюанс. Для корректного сравнения поведения регуляторов необходимо запускать в режим регулирования с нулевым рассогласованием (SP - PV). Связано с разными алгоритмами загрузки начального значения в регулятор. Для меня логичней, что бы в режиме загрузки значение на выходе было равно значению на входе. У стандартного несколько иначе. Мой вариант регулятора работает с любым вариантом соотношения коэффициентов P, I, D. В совместимых режимах работы небольшие различия в поведении регуляторов есть. Связано с ограниченой точностью выполнения математический операций, да и математика у регуляторов несколько разная.
|
Благодарность от: |
18.04.2013, 10:30 | #2 | |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 175
Благодарил(а): 242 раз(а)
Поблагодарили:
166 раз(а) в 158 сообщениях
|
Ответ: PID, PI, PD, P регулятор, аналоговый
Цитата:
|
|
18.04.2013, 11:17 | #3 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: PID, PI, PD, P регулятор, аналоговый
Цитата:
|
|
18.04.2013, 11:31 | #4 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Что касается наличия вариантов нашего макроса с загрузкой "на лету" - эти варианты уже давно существуют и всегда высылаются при необходимости для человека. Однако за 7 лет такая необходимость возникла примерно у 4-6 человек, не помню уже точно. В том же Конструкторе, кстати, работает макрос с обратными расчётами всех трёх коэффициентов. Но при задании коэффициентов оператором данная возможность заблокирована. Кстати, вы выбрали похожее название для макроса Наш макрос называется "my_PID_v7". __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
18.04.2013, 11:41 | #5 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
|
|
18.04.2013, 11:52 | #6 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Посмотреть не получится, макрос закрыт от просмотра. Его применение на живых объектах лишено практического смысла, т.к. приносит только моральное удовлетворение программисту ("смотрите какая у меня фишечка есть!"). Загрузка в "my_PID_v5" более "правильная", т.к. позволяет регулятору реагировать на текущее состояние объекта управления, а не только на изменение этого состояния, как это делает ваш макрос и макрос серии "my_PID_v7". Ну и сверху "накладываются" всякие "неправильные" состояния объекта, такие как помехи, случайные девиации состояния и переходное состояние. Если в этот момент сменить коэффициенты регулятора, то ошибка расчёта управляющего воздействия может принять катастрофический характер с очень долгим выходом регулятора на правильный режим. Поэтому мой вам совет: не используйте свой макрос в программах. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
18.04.2013, 12:54 | #7 | |||
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Цитата:
Цитата:
Если касается самой идеи регулятора с изменяемыми на ходу коэффициентами, то тем более не согласен. У сименса в ACX это стандартная функция. Там ПИД имеет 2 набора коэффициентов: один для обычной работы, другой для выхода из предаварийных ситуаций. Ваши опасения о чудесах при смене коэффициентов хорошо бы подкрепить примерами. Выставленный проект это позволяет. Ну и сравнить с поведением стандартного макроса. |
|||
18.04.2013, 13:00 | #8 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Я вам рассказал своё мнение. Вы вольны как прислушаться к нему, так и проигнорировать его.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
18.04.2013, 22:24 | #9 | |
Member
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
|
|
19.04.2013, 06:44 | #10 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
|
|
02.10.2014, 22:20 | #11 |
Member
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Мой вариант PID-регулятора
В общем затестил. Работает хорошо, без сбоев. Спасибо tvf, извиняюсь что долго тянул, но не было возможности. Поставил на Pixel, регулирую скорость по тензодатчику. Если появяться подробности или тонкости отпишусь.
|
03.10.2014, 12:32 | #12 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
|
|
11.12.2015, 12:16 | #13 |
Member
Регистрация: Jun 2012
Адрес: Магнитогорск
Сообщения: 71
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Мой вариант PID-регулятора
Вы просили отписаться тем, кто тестировал Ваш PID-регулятор. Я его проверил на стенде, применяя все (ну или почти все) возможные в работе смены его состояний и настроек. Однозначно могу сказать, что его поведение по сравнению с дефолтным макросом от Арсения (my_PID_v5) является более правильным... Скажу даже так - несравненно более правильным! Спасибо Вам за реализацию. Для себя я добавил лишь одну вещь - на вход "задание уставки" поставил макрос по типу простейшего аналогового фильтра, что позволяет избежать скачков на выходе при смене уставки "на лету".
|
11.12.2015, 13:41 | #14 |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Спасибо на добром слове. В общем то стояла задача сделать макрос "один в один" со штатным и наиболее простым. Поэтому ни какой фильтрации внутри макроса нет. Но если уж добавлять фильтрацию, то не совсем в то место, которое вы предлагаете. Сам по себе ПИД регулятор работает не с PV и не c SP. Он работает с (SP-PV). Вот эту разность и надо фильтровать. Тогда одним фильтром вы избавляетесь и от скачков при смене SP и от скачков при шуме на PV. Примерно так сделано на контарах (МЗТА). Так что я тут первооткрывателем не являюсь.
__________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
11.12.2015, 19:23 | #15 | |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
|
|
14.12.2015, 08:38 | #16 |
Member
Регистрация: Jun 2012
Адрес: Магнитогорск
Сообщения: 71
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Мой вариант PID-регулятора
Согласен - кстати, некорректно написал, конечно же фильтрация была сделана по обоим входам когда писал забыл это уточнить. Ну, естественно параметры фильтра одинаковые для обоих входов.
|
14.12.2015, 19:08 | #17 | |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
|
|
17.12.2015, 19:09 | #18 |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
В соседней ветке
http://forum.segnetics.com/showthread.php?t=2291 активно обсуждалась тема о импульсном регуляторе. Решил здесь выложить свой вариант импульсного регулятора. Без всякого ШИМ. Собственно сам регулятор состоит из 2 частей: РДД-регулятор и модулятор для привода. РДД-регулятор взял из своего же макроса, выложенного в начале темы. Ни каких изысков типа фильтрации или сглаживания РДД-регулятор не содержит. Это сделано намеренно для определения устойчивости к помехам модулятора для привода. Целью было получить регулятор, максимально близкий к аналоговому регулятору по характеру поведения. 100% идентичности получить не удалось, да это и невозможно в принципе, тем более в рамках FBD. Возможность менять коэффициенты на лету сохранилась. Для сравнения приведен и стандартный импульсный регулятор из библиотеки Сегнетикса. Так что смотрите, сравнивайте. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
20.12.2015, 12:41 | #19 |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
В продолжение темы:
1. Удалось избавиться от мелких шероховатостей. Теперь суммарное время открытия/закрытия клапана четко кратно Мин импульс,% в тиках. Точность позиционирования (расчетная) +/- Мин импульс,%. 2. Получился в принципе универсальный регулятор - и аналоговый и импульсный. Отличие от стандартного аналогового регулятора только в режиме насыщения. У стандартного отключается только накопление интегральной составляющей, в моем отключается полностью накопление. Можно замутить и полностью универсальный регулятор, но это лишено смысла. 3. Есть ограничения на Мин импульс,%: должно быть больше чем 2 тика. 4. Есть ограничения на точность позиционирования со стороны арифметики чисел с плавающей запятой. При отсутствии шума в сигнале датчика ошибки накапливаются и точность позиционирования снижается. Наличие небольшого шума в сигнале датчика устраняет эту проблему. 5. Сигнал на выходе регулятора учитывает конечную скорость перемещения привода. Сравнивать показания надо при нулевом рассогласовании. 6. Библиотечный макрос регулятора не то что бы совсем не рабочий, но в ряде ситуаций ведет себя неадекватно. Возьмем к примеру такую ситуацию: - Датчик=Уставка. выход регулятора 0, клапан стоит. - Датчик<Уставка. Регулятор начинает открывать клапан. - Датчик=Уставка. Регулятор продолжает открывать клапан. Причем до бесконечности, пока не настанет ситуация когда Датчик>Уставка. Это ошибка. В принципе допилить библиотечный макрос до рабочего состояния возможно, но макрос защищен от редактирования. Надо то всего лишь: - зафиксировать значение на выходе аналогового ПИД в конце периода ШИМ. - сбросить ПИД. Причем именно в такой последовательности. Только имеет ли это смысл? Так что смотрите, сравнивайте, пишите отзывы. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
20.12.2015, 16:28 | #20 | |
Senior Member
Регистрация: Nov 2013
Адрес: Санкт-Петербург
Сообщения: 213
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Вижу, здесь накопилось много интересного материала, особенно по фильтрам аналогового сигнала и ПИД-регуляторам. Была бы возможность, по-тестировал бы всё это дело с удовольствием Сейчас уж никак не могу, ибо Сахалин Плюс в свободное от перекуров время пишу свой вариант, с нуля, но его тоже никак не потестить пока. Вернее, свой предыдущий вариант при тестировании на объекте показал ряд недостатков, сейчас его сильно перерабатываю. |
|
20.12.2015, 18:46 | #21 |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Именно для этого и выложен не голый макрос, а проект, где можно смоделировать ситуацию и посмотреть поведение регуляторов. Хотя в одном вы правы практика - критерий истинности.
__________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
21.12.2015, 01:00 | #22 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
PS. Кстати, iReset - тот самый сброс, который вы предлагаете ввести в регулятор. Просто он работает чуть хитрее, чем банальный сброс в конце каждого цикла. PPS. Попробуйте I=0, библиотечный регулятор станет работать понятнее для вас. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
21.12.2015, 04:30 | #23 | |||
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Цитата:
Цитата:
__________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
|||
21.12.2015, 09:12 | #24 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Тогда вам нужно правильно понимать работу регулятора PI2D. Ну или хотя бы, как минимум, допустимый диапазон соотношений I1:I2.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
21.12.2015, 09:19 | #25 | ||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Цитата:
Сброс регулятора в каждом цикле превращает его в PID, с временем интегрирования, связанным с временем хода. Поэтому я повторю ещё раз: поставьте I=0, работа регулятора сразу станет понятнее для вас. И многие ваши советы даже вам самому покажутся неактуальными. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||
21.12.2015, 09:58 | #26 | |
Senior Member
Регистрация: Dec 2011
Сообщения: 767
Благодарил(а): 1 раз(а)
Поблагодарили:
11 раз(а) в 11 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Параметр I определяет скорость накопления интегральной составляющей ПИД. Время хода клапана - ограничивающий фактор, определяющий когда привод достигнет положения, указанного регулятором. При скорости накопления всех составляющих ПИД ниже, чем скорость клапана ограничение снимается. Спорить мы можем долго, и каждый останется при своем мнении. Откройте макрос вашего регулятора на редактирование. И я доведу его до рабочего состояния, не лазя в закрытые макросы. По крайней мере попытаюсь. Вот тогда и сравним. На данный момент при одинаковых настройках аналогового и импульсного регулятора и при одинаковых возмущающих воздействиях ваши же регуляторы показывают разные значения. __________________ Нет абсолютно бездарных людей. Каждый бездарен в своей области. |
|
21.12.2015, 10:28 | #27 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
- Я просто ни с кем не спорю. - Да это же невозможно! - Ну, невозможно так невозможно... __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
21.12.2015, 10:41 | #28 | |
Senior Member
Регистрация: May 2009
Сообщения: 1 034
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
__________________ RTFM |
|
21.12.2015, 10:58 | #29 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Мой вариант PID-регулятора
Цитата:
Как я уже много раз говорил: перезагрузка регулятора теряет главное - историю его работы, т.е. накопленную функцию изменения P и I во времени. Т.е. возможность сменить коэффициенты безударно чаще всего даёт мнимые надежды, чем реальные возможности. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
21.12.2015, 11:48 | #30 |
Senior Member
Регистрация: May 2009
Сообщения: 1 034
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Мой вариант PID-регулятора
Может тогда здесь? Оно оффтоп, конечно, но потом ведь и удалить можно, а может кто решение и подскажет без смены коэффициентов.
Ситуация такая. Насосная станция, работающая по довольно таки стандартному алгоритму: первый насос разгоняется ЧРП, если давления не хватает, включается следующий насос напрямую от сети питания, а первый вновь начинает разгонятся с минимальной частоты и т.д. Регулятор my PID v7. При тех коэффициентах, что подобраны сейчас выходит на рабочий режим не быстро (что при первом запуске не критично), но давление держит хорошо. И всё бы ничего, если бы не одно но: минимум раз в сутки расход резко увеличивается, давление, соответственно, падает, а в рабочем режиме этого допускать нельзя. Вот и возникла идея (очень возможно что неправильная) при падении давления ниже определённой уставки менять коэффициенты. __________________ RTFM |