Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2013, 06:31   #1
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Мой вариант PID-регулятора

Время от времени читаю на форуме пожелания иметь ПИД регулятор с возможностью на лету менять коэффициенты. Во вложении вариант такого регулятора. По входам/выходам аналогичен стандартному. Во вложении проект для сравнения поведения регуляторов. Один нюанс. Для корректного сравнения поведения регуляторов необходимо запускать в режим регулирования с нулевым рассогласованием (SP - PV). Связано с разными алгоритмами загрузки начального значения в регулятор. Для меня логичней, что бы в режиме загрузки значение на выходе было равно значению на входе. У стандартного несколько иначе. Мой вариант регулятора работает с любым вариантом соотношения коэффициентов P, I, D. В совместимых режимах работы небольшие различия в поведении регуляторов есть. Связано с ограниченой точностью выполнения математический операций, да и математика у регуляторов несколько разная.
Вложения
Тип файла: psl ПИД.psl (121.1 Кбайт, 1290 просмотров)
tvf вне форума   Ответить с цитированием
Благодарность от:
Старый 18.04.2013, 10:30   #2
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 160
Благодарил(а): 240 раз(а)
Поблагодарили: 165 раз(а) в 157 сообщениях
По умолчанию Ответ: PID, PI, PD, P регулятор, аналоговый

Цитата:
Сообщение от tvf Посмотреть сообщение
Время от времени читаю на форуме пожелания иметь ПИД регулятор с возможностью на лету менять коэффициенты. Во вложении вариант такого регулятора. По входам/выходам аналогичен стандартному. Во вложении проект для сравнения поведения регуляторов. Один нюанс. Для корректного сравнения поведения регуляторов необходимо запускать в режим регулирования с нулевым рассогласованием (SP - PV). Связано с разными алгоритмами загрузки начального значения в регулятор. Для меня логичней, что бы в режиме загрузки значение на выходе было равно значению на входе. У стандартного несколько иначе. Мой вариант регулятора работает с любым вариантом соотношения коэффициентов P, I, D. В совместимых режимах работы небольшие различия в поведении регуляторов есть. Связано с ограниченой точностью выполнения математический операций, да и математика у регуляторов несколько разная.
не увидел, коэфф-т усиления остался за скобку вынесен или только при ошибке?


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 18.04.2013, 11:17   #3
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: PID, PI, PD, P регулятор, аналоговый

Цитата:
не увидел, коэфф-т усиления остался за скобку вынесен или только при ошибке?
не понял вопроса
tvf вне форума   Ответить с цитированием
Старый 18.04.2013, 11:31   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Время от времени читаю на форуме пожелания иметь ПИД регулятор с возможностью на лету менять коэффициенты.
Вопрос на форуме всё время звучит применительно к Конструктору.

Что касается наличия вариантов нашего макроса с загрузкой "на лету" - эти варианты уже давно существуют и всегда высылаются при необходимости для человека. Однако за 7 лет такая необходимость возникла примерно у 4-6 человек, не помню уже точно.

В том же Конструкторе, кстати, работает макрос с обратными расчётами всех трёх коэффициентов. Но при задании коэффициентов оператором данная возможность заблокирована.

Кстати, вы выбрали похожее название для макроса Наш макрос называется "my_PID_v7".


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 18.04.2013, 11:41   #5
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
В том же Конструкторе, кстати, работает макрос с обратными расчётами всех трёх коэффициентов
Можно с этого места чуть поподробней? Ну или сам макрос можно как то посмотреть?
tvf вне форума   Ответить с цитированием
Старый 18.04.2013, 11:52   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Можно с этого места чуть поподробней? Ну или сам макрос можно как то посмотреть?
При смене коэффициентов при активном сбросе выход идеально равен значению на входе Data. Всех трёх коэффициентов.

Посмотреть не получится, макрос закрыт от просмотра. Его применение на живых объектах лишено практического смысла, т.к. приносит только моральное удовлетворение программисту ("смотрите какая у меня фишечка есть!").

Загрузка в "my_PID_v5" более "правильная", т.к. позволяет регулятору реагировать на текущее состояние объекта управления, а не только на изменение этого состояния, как это делает ваш макрос и макрос серии "my_PID_v7".

Ну и сверху "накладываются" всякие "неправильные" состояния объекта, такие как помехи, случайные девиации состояния и переходное состояние. Если в этот момент сменить коэффициенты регулятора, то ошибка расчёта управляющего воздействия может принять катастрофический характер с очень долгим выходом регулятора на правильный режим.

Поэтому мой вам совет: не используйте свой макрос в программах.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 18.04.2013, 12:54   #7
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
При смене коэффициентов при активном сбросе выход идеально равен значению на входе Data. Всех трёх коэффициентов.
Ну это не бог весть какое достижение. Механизм достаточно прост. В режиме загрузки полностью отключаем D составляющую, значение с Data грузим в I составляющую, но с учетом текущего рассогласования и коэффициента усиления. Это я года полтора назад сделал на основе стандартного макроса.
Цитата:
Загрузка в "my_PID_v5" более "правильная", т.к. позволяет регулятору реагировать на текущее состояние объекта управления, а не только на изменение этого состояния, как это делает ваш макрос и макрос серии "my_PID_v7".
У нас разные понятия о правильности. Если регулятор отключен от регулирования, то ему нет необходимости следить за состоянием объекта управления. В этом режиме его задача тупо транслировать значение со входа загрузки на выход.
Цитата:
Ну и сверху "накладываются" всякие "неправильные" состояния объекта, такие как помехи, случайные девиации состояния и переходное состояние. Если в этот момент сменить коэффициенты регулятора, то ошибка расчёта управляющего воздействия может принять катастрофический характер с очень долгим выходом регулятора на правильный режим.
Если это касается именно варианта реализации, то согласен, макрос не идеален, но абсолютно работоспособен. Задача стояла написать наиболее простой макрос с возможностью смены коэффициентов на лету без применения "танцев с бубнами" типа внешней объвязки. Ну так и стандартный макрос не шедевр инженерной мысли. Тупо реализация формулы ПИД регулятора. Хотя и очень экономичный с точки зрения расходования ресурсов. Мой вариант занимает раза в 1,5 больше блоков.
Если касается самой идеи регулятора с изменяемыми на ходу коэффициентами, то тем более не согласен. У сименса в ACX это стандартная функция. Там ПИД имеет 2 набора коэффициентов: один для обычной работы, другой для выхода из предаварийных ситуаций. Ваши опасения о чудесах при смене коэффициентов хорошо бы подкрепить примерами. Выставленный проект это позволяет. Ну и сравнить с поведением стандартного макроса.
tvf вне форума   Ответить с цитированием
Старый 18.04.2013, 13:00   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Ваши опасения о чудесах при смене коэффициентов хорошо бы подкрепить примерами. Выставленный проект это позволяет. Ну и сравнить с поведением стандартного макроса.
Я вам рассказал своё мнение. Вы вольны как прислушаться к нему, так и проигнорировать его.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 18.04.2013, 22:24   #9
Vorgehen
Member
 
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Время от времени читаю на форуме пожелания иметь ПИД регулятор с возможностью на лету менять коэффициенты. Во вложении вариант такого регулятора. По входам/выходам аналогичен стандартному. Во вложении проект для сравнения поведения регуляторов. Один нюанс. Для корректного сравнения поведения регуляторов необходимо запускать в режим регулирования с нулевым рассогласованием (SP - PV). Связано с разными алгоритмами загрузки начального значения в регулятор. Для меня логичней, что бы в режиме загрузки значение на выходе было равно значению на входе. У стандартного несколько иначе. Мой вариант регулятора работает с любым вариантом соотношения коэффициентов P, I, D. В совместимых режимах работы небольшие различия в поведении регуляторов есть. Связано с ограниченой точностью выполнения математический операций, да и математика у регуляторов несколько разная.
Скоро нужен будет регулятор. Хочу затестить с Вашего позволения.
Vorgehen вне форума   Ответить с цитированием
Старый 19.04.2013, 06:44   #10
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Хочу затестить с Вашего позволения.
Для этого и вывложил. Если не составит труда по результатам отпишитесь.
tvf вне форума   Ответить с цитированием
Старый 02.10.2014, 22:20   #11
Vorgehen
Member
 
Регистрация: Apr 2013
Адрес: Санкт-Петербург
Сообщения: 34
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

В общем затестил. Работает хорошо, без сбоев. Спасибо tvf, извиняюсь что долго тянул, но не было возможности. Поставил на Pixel, регулирую скорость по тензодатчику. Если появяться подробности или тонкости отпишусь.
Vorgehen вне форума   Ответить с цитированием
Старый 03.10.2014, 12:32   #12
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Если появяться подробности или тонкости отпишусь.
Погоняйте. Интересно мнение независимого тестера. Если не секрет, что за объект с тезодатчиками?
tvf вне форума   Ответить с цитированием
Старый 11.12.2015, 12:16   #13
igor_kvik
Member
 
Регистрация: Jun 2012
Адрес: Магнитогорск
Сообщения: 71
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Вы просили отписаться тем, кто тестировал Ваш PID-регулятор. Я его проверил на стенде, применяя все (ну или почти все) возможные в работе смены его состояний и настроек. Однозначно могу сказать, что его поведение по сравнению с дефолтным макросом от Арсения (my_PID_v5) является более правильным... Скажу даже так - несравненно более правильным! Спасибо Вам за реализацию. Для себя я добавил лишь одну вещь - на вход "задание уставки" поставил макрос по типу простейшего аналогового фильтра, что позволяет избежать скачков на выходе при смене уставки "на лету".
igor_kvik вне форума   Ответить с цитированием
Старый 11.12.2015, 13:41   #14
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от igor_kvik Посмотреть сообщение
Спасибо Вам за реализацию. Для себя я добавил лишь одну вещь - на вход "задание уставки" поставил макрос по типу простейшего аналогового фильтра, что позволяет избежать скачков на выходе при смене уставки "на лету".
Спасибо на добром слове. В общем то стояла задача сделать макрос "один в один" со штатным и наиболее простым. Поэтому ни какой фильтрации внутри макроса нет. Но если уж добавлять фильтрацию, то не совсем в то место, которое вы предлагаете. Сам по себе ПИД регулятор работает не с PV и не c SP. Он работает с (SP-PV). Вот эту разность и надо фильтровать. Тогда одним фильтром вы избавляетесь и от скачков при смене SP и от скачков при шуме на PV. Примерно так сделано на контарах (МЗТА). Так что я тут первооткрывателем не являюсь.


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 11.12.2015, 19:23   #15
СВМ
Senior Member
 
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили: 3 раз(а) в 3 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Спасибо на добром слове. В общем то стояла задача сделать макрос "один в один" со штатным и наиболее простым. Поэтому ни какой фильтрации внутри макроса нет. Но если уж добавлять фильтрацию, то не совсем в то место, которое вы предлагаете. Сам по себе ПИД регулятор работает не с PV и не c SP. Он работает с (SP-PV). Вот эту разность и надо фильтровать. Тогда одним фильтром вы избавляетесь и от скачков при смене SP и от скачков при шуме на PV. Примерно так сделано на контарах (МЗТА). Так что я тут первооткрывателем не являюсь.
Ещё ПИД регуляторы. Для разнообразия.
Вложения
Тип файла: msl ПИД-RC.msl (28.7 Кбайт, 383 просмотров)
Тип файла: msl ПИД-МЗТА.msl (35.3 Кбайт, 412 просмотров)
Тип файла: msl ПИД-Ремиконт.msl (46.4 Кбайт, 375 просмотров)
Тип файла: doc Регуляторы.doc (32.5 Кбайт, 695 просмотров)
СВМ вне форума   Ответить с цитированием
Старый 14.12.2015, 08:38   #16
igor_kvik
Member
 
Регистрация: Jun 2012
Адрес: Магнитогорск
Сообщения: 71
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Согласен - кстати, некорректно написал, конечно же фильтрация была сделана по обоим входам когда писал забыл это уточнить. Ну, естественно параметры фильтра одинаковые для обоих входов.
igor_kvik вне форума   Ответить с цитированием
Старый 14.12.2015, 19:08   #17
СВМ
Senior Member
 
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили: 3 раз(а) в 3 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от igor_kvik Посмотреть сообщение
Вы просили отписаться тем, кто тестировал Ваш PID-регулятор. Я его проверил на стенде, применяя все (ну или почти все) возможные в работе смены его состояний и настроек. Однозначно могу сказать, что его поведение по сравнению с дефолтным макросом от Арсения (my_PID_v5) является более правильным... Скажу даже так - несравненно более правильным! Спасибо Вам за реализацию. Для себя я добавил лишь одну вещь - на вход "задание уставки" поставил макрос по типу простейшего аналогового фильтра, что позволяет избежать скачков на выходе при смене уставки "на лету".
Попробуйте ограничитель скорости изменения уставки. Ставится на вход уставки. Уставка изменяется с постоянной заданной скоростью, в отличие от аналогового фильтра.
Вложения
Тип файла: msl Огр.скорости.msl (12.7 Кбайт, 227 просмотров)
СВМ вне форума   Ответить с цитированием
Старый 17.12.2015, 19:09   #18
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

В соседней ветке
http://forum.segnetics.com/showthread.php?t=2291
активно обсуждалась тема о импульсном регуляторе. Решил здесь выложить свой вариант импульсного регулятора. Без всякого ШИМ. Собственно сам регулятор состоит из 2 частей: РДД-регулятор и модулятор для привода. РДД-регулятор взял из своего же макроса, выложенного в начале темы. Ни каких изысков типа фильтрации или сглаживания РДД-регулятор не содержит. Это сделано намеренно для определения устойчивости к помехам модулятора для привода. Целью было получить регулятор, максимально близкий к аналоговому регулятору по характеру поведения. 100% идентичности получить не удалось, да это и невозможно в принципе, тем более в рамках FBD. Возможность менять коэффициенты на лету сохранилась. Для сравнения приведен и стандартный импульсный регулятор из библиотеки Сегнетикса. Так что смотрите, сравнивайте.
Вложения
Тип файла: psl ПИД (2).psl (410.0 Кбайт, 307 просмотров)


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 20.12.2015, 12:41   #19
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

В продолжение темы:
1. Удалось избавиться от мелких шероховатостей. Теперь суммарное время открытия/закрытия клапана четко кратно Мин импульс,% в тиках. Точность позиционирования (расчетная) +/- Мин импульс,%.
2. Получился в принципе универсальный регулятор - и аналоговый и импульсный. Отличие от стандартного аналогового регулятора только в режиме насыщения. У стандартного отключается только накопление интегральной составляющей, в моем отключается полностью накопление. Можно замутить и полностью универсальный регулятор, но это лишено смысла.
3. Есть ограничения на Мин импульс,%: должно быть больше чем 2 тика.
4. Есть ограничения на точность позиционирования со стороны арифметики чисел с плавающей запятой. При отсутствии шума в сигнале датчика ошибки накапливаются и точность позиционирования снижается. Наличие небольшого шума в сигнале датчика устраняет эту проблему.
5. Сигнал на выходе регулятора учитывает конечную скорость перемещения привода. Сравнивать показания надо при нулевом рассогласовании.
6. Библиотечный макрос регулятора не то что бы совсем не рабочий, но в ряде ситуаций ведет себя неадекватно. Возьмем к примеру такую ситуацию:
- Датчик=Уставка. выход регулятора 0, клапан стоит.
- Датчик<Уставка. Регулятор начинает открывать клапан.
- Датчик=Уставка. Регулятор продолжает открывать клапан. Причем до бесконечности, пока не настанет ситуация когда Датчик>Уставка. Это ошибка.
В принципе допилить библиотечный макрос до рабочего состояния возможно, но макрос защищен от редактирования. Надо то всего лишь:
- зафиксировать значение на выходе аналогового ПИД в конце периода ШИМ.
- сбросить ПИД.
Причем именно в такой последовательности. Только имеет ли это смысл?
Так что смотрите, сравнивайте, пишите отзывы.
Изображения
Тип файла: png PID.png (69.7 Кбайт, 581 просмотров)
Вложения
Тип файла: psl ПИД (3).psl (438.5 Кбайт, 314 просмотров)


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 20.12.2015, 16:28   #20
djaval
Senior Member
 
Регистрация: Nov 2013
Адрес: Санкт-Петербург
Сообщения: 213
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
В продолжение темы:
6. Библиотечный макрос регулятора не то что бы совсем не рабочий, но в ряде ситуаций ведет себя неадекватно.
Библиотечный макрос имеет недостатки, согласен, но он многократно проверен. Ваши наработки надо проверять на практике. Жаль, у меня сейчас нет времени.
Вижу, здесь накопилось много интересного материала, особенно по фильтрам аналогового сигнала и ПИД-регуляторам. Была бы возможность, по-тестировал бы всё это дело с удовольствием Сейчас уж никак не могу, ибо Сахалин
Плюс в свободное от перекуров время пишу свой вариант, с нуля, но его тоже никак не потестить пока. Вернее, свой предыдущий вариант при тестировании на объекте показал ряд недостатков, сейчас его сильно перерабатываю.
djaval вне форума   Ответить с цитированием
Старый 20.12.2015, 18:46   #21
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от djaval Посмотреть сообщение
Библиотечный макрос имеет недостатки, согласен, но он многократно проверен. Ваши наработки надо проверять на практике. Жаль, у меня сейчас нет времени.
Именно для этого и выложен не голый макрос, а проект, где можно смоделировать ситуацию и посмотреть поведение регуляторов. Хотя в одном вы правы практика - критерий истинности.


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 21.12.2015, 01:00   #22
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
6. Библиотечный макрос регулятора не то что бы совсем не рабочий, но в ряде ситуаций ведет себя неадекватно. Возьмем к примеру такую ситуацию:
- Датчик=Уставка. выход регулятора 0, клапан стоит.
- Датчик<Уставка. Регулятор начинает открывать клапан.
- Датчик=Уставка. Регулятор продолжает открывать клапан. Причем до бесконечности, пока не настанет ситуация когда Датчик>Уставка. Это ошибка.
В принципе допилить библиотечный макрос до рабочего состояния возможно, но макрос защищен от редактирования. Надо то всего лишь:
- зафиксировать значение на выходе аналогового ПИД в конце периода ШИМ.
- сбросить ПИД.
Причем именно в такой последовательности. Только имеет ли это смысл?
Так что смотрите, сравнивайте, пишите отзывы.
Библиотечный макрос не имеет этой проблемы. Точнее имеет, но только в идеализированных матмоделях, не до конца учитывающих поведение живого объекта.


PS. Кстати, iReset - тот самый сброс, который вы предлагаете ввести в регулятор. Просто он работает чуть хитрее, чем банальный сброс в конце каждого цикла.

PPS. Попробуйте I=0, библиотечный регулятор станет работать понятнее для вас.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.12.2015, 04:30   #23
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от Arsie Посмотреть сообщение
Библиотечный макрос не имеет этой проблемы. Точнее имеет, но только в идеализированных матмоделях, не до конца учитывающих поведение живого объекта.
Если смотреть более широко, то любой ПИД-регулятор это чистая математика, не учитывающая всех особенностей поведение живого объекта. Тем не менее как то это работает. При написании макроса регулятора за образец поведения регулятора брался ваш же аналоговый регулятор. Если получилось повторить его поведение - значит все сделано правильно, если нет - где то ошибка. Математика строгая наука. Неважно каким путем идти к результату, результат должен быть одинаков.
Цитата:
PS. Кстати, iReset - тот самый сброс, который вы предлагаете ввести в регулятор. Просто он работает чуть хитрее, чем банальный сброс в конце каждого цикла.
Я не знаю, насколько хитро устроен ваш макрос, он закрыт от просмотра. Но банальный сброс в конце цикла улучшил бы работу вашего регулятора, хотя и не избавил бы от всех проблем.
Цитата:
PPS. Попробуйте I=0, библиотечный регулятор станет работать понятнее для вас.
Тогда интегрирование будет привязано ко времени хода клапана. А я хочу работать с произвольным временем интегрирования.


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 21.12.2015, 09:12   #24
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Тогда интегрирование будет привязано ко времени хода клапана. А я хочу работать с произвольным временем интегрирования.
Тогда вам нужно правильно понимать работу регулятора PI2D. Ну или хотя бы, как минимум, допустимый диапазон соотношений I1:I2.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.12.2015, 09:19   #25
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Я не знаю, насколько хитро устроен ваш макрос, он закрыт от просмотра. Но банальный сброс в конце цикла улучшил бы работу вашего регулятора, хотя и не избавил бы от всех проблем.
Цитата:
Сообщение от tvf Посмотреть сообщение
Тогда интегрирование будет привязано ко времени хода клапана. А я хочу работать с произвольным временем интегрирования.
Вот эти две вещи в ваших словах полностью и стопроцентно противоречат друг другу.

Сброс регулятора в каждом цикле превращает его в PID, с временем интегрирования, связанным с временем хода. Поэтому я повторю ещё раз: поставьте I=0, работа регулятора сразу станет понятнее для вас. И многие ваши советы даже вам самому покажутся неактуальными.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.12.2015, 09:58   #26
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 748
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от Arsie Посмотреть сообщение
Вот эти две вещи в ваших словах полностью и стопроцентно противоречат друг другу.
Нисколько.
Параметр I определяет скорость накопления интегральной составляющей ПИД.
Время хода клапана - ограничивающий фактор, определяющий когда привод достигнет положения, указанного регулятором.
При скорости накопления всех составляющих ПИД ниже, чем скорость клапана ограничение снимается.

Спорить мы можем долго, и каждый останется при своем мнении. Откройте макрос вашего регулятора на редактирование. И я доведу его до рабочего состояния, не лазя в закрытые макросы. По крайней мере попытаюсь. Вот тогда и сравним.

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


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 21.12.2015, 10:28   #27
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
Нисколько.
Параметр I определяет скорость накопления интегральной составляющей ПИД.
- Как тебе удается столько успевать и относиться ко всему так спокойно?
- Я просто ни с кем не спорю.
- Да это же невозможно!
- Ну, невозможно так невозможно...


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.12.2015, 10:41   #28
New
Senior Member
 
Регистрация: May 2009
Сообщения: 1 034
Благодарил(а): 9 раз(а)
Поблагодарили: 22 раз(а) в 22 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от Arsie Посмотреть сообщение
Что касается наличия вариантов нашего макроса с загрузкой "на лету" - эти варианты уже давно существуют и всегда высылаются при необходимости для человека.
А как его можно получить? Понятно, что писать на support@segnetics.com, а дальше? Просто хочу получить или расписывать зачем он мне?


__________________
RTFM
New вне форума   Ответить с цитированием
Старый 21.12.2015, 10:58   #29
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 094
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от New Посмотреть сообщение
А как его можно получить? Понятно, что писать на support@segnetics.com, а дальше? Просто хочу получить или расписывать зачем он мне?
Лучше написать - я часто удерживаю людей от необдуманных поступков

Как я уже много раз говорил: перезагрузка регулятора теряет главное - историю его работы, т.е. накопленную функцию изменения P и I во времени. Т.е. возможность сменить коэффициенты безударно чаще всего даёт мнимые надежды, чем реальные возможности.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.12.2015, 11:48   #30
New
Senior Member
 
Регистрация: May 2009
Сообщения: 1 034
Благодарил(а): 9 раз(а)
Поблагодарили: 22 раз(а) в 22 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Может тогда здесь? Оно оффтоп, конечно, но потом ведь и удалить можно, а может кто решение и подскажет без смены коэффициентов.
Ситуация такая. Насосная станция, работающая по довольно таки стандартному алгоритму: первый насос разгоняется ЧРП, если давления не хватает, включается следующий насос напрямую от сети питания, а первый вновь начинает разгонятся с минимальной частоты и т.д. Регулятор my PID v7. При тех коэффициентах, что подобраны сейчас выходит на рабочий режим не быстро (что при первом запуске не критично), но давление держит хорошо. И всё бы ничего, если бы не одно но: минимум раз в сутки расход резко увеличивается, давление, соответственно, падает, а в рабочем режиме этого допускать нельзя. Вот и возникла идея (очень возможно что неправильная) при падении давления ниже определённой уставки менять коэффициенты.


__________________
RTFM
New вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 12:18.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024