Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

ПИД регулятор ADAM5510

 Ответить Ответить Страница  <123>
Автор
Сообщение
Leonid Uretsky Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Октябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 187
Свойства публикации Свойства публикации   Ответить, цитируя автора - Leonid Uretsky Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: ПИД регулятор ADAM5510
    Опубликовано: 29 Апрель 2006 10:16
Первоначально опубликовано D. Ushkin

Хотелось бы обсудить вот какой вопрос: какие решения применяются для борьбы с нелинейностью статической характеристики регулирующего органа? Мы пробовали вводить обратную нелинейность (программно), но это приводит к недопустимому увеличению зоны нечувствительности ...

Мы для борьбы с нелинейностью используем табличные значения коэффициентов. Получается, что коэффициенты не постоянные, а зависят от рассогласования.

Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Апрель 2006 11:23
Первоначально опубликовано Leonid Uretsky

Первоначально опубликовано D. Ushkin

Хотелось бы обсудить вот какой вопрос: какие решения применяются для борьбы с нелинейностью статической характеристики регулирующего органа? Мы пробовали вводить обратную нелинейность (программно), но это приводит к недопустимому увеличению зоны нечувствительности ...

Мы для борьбы с нелинейностью используем табличные значения коэффициентов. Получается, что коэффициенты не постоянные, а зависят от рассогласования.

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

Уточните пожалуйста.

Сергей
Наверх
Leonid Uretsky Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Октябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 187
Свойства публикации Свойства публикации   Ответить, цитируя автора - Leonid Uretsky Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Апрель 2006 11:29

Первоначально опубликовано s_smirnov

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

Уточните пожалуйста.

Нелинейностью коэффициентов регулирования мы боремся с нелинейностью объекта регулирования и нелинейностью регулирующего органа

Наверх
D. Ushkin Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 69
Свойства публикации Свойства публикации   Ответить, цитируя автора - D. Ushkin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Апрель 2006 12:34

Вспомнил ещё один момент, из-за которого идея борьбы с нелинейностью регулирующего органа с помощью обратной нелинейности оказалась неработоспособна: статическая характеристика регулирующего органа "плывёт" в течение эксплуатации, а иногда и просто зависит от параметров регулируемой среды.

Как, уважаемые коллеги, вы поступаете в этом случае?

Иван Данилушкин
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Май 2006 11:29

Публикую коэффициенты с комментариями ПИД2:

1) Vx (Float) - В данную входную переменную записывается значение обработанного
   входного сигнала с датчика, т.е. входной параметр (например "Давление пара").
  
2) Zad (Float) - В данную входную переменную записывается значение задания ПИД
   регулятору, которое он должен поддерживать, т.е. значение стабилизации.
   (например 28,5 - т.е. ПИД регулятор при отклонении от данного значения входного
   сигнала (Vx) в ту или иную сторону (выше или ниже) будет вычислять и выдавать
   импульсы управления на выход регулятора.

3) KP (Float) - Коэффициент пропорциональности. Данный коэффициент позволяет
   масштабировать длительность импульса пропорциональной части ПИД регулятора.
   Т.е. например если Vx = 50.0 и Zad = 60.0 при KP = 1.0 длительность импульса
   на выходе П части регулятора будет +10 (ссек), а при Vx = 50.0 и Zad = 60.0
   при KP = 2.0 длительность импульса на выходе П части регулятора будет +20 (ссек).
   Также если Vx = 60.0 и Zad = 50.0 при KP = 0.5 длительность импульса на выходе
   П части регулятора будет -5 (ссек), знак (-) или (+) означает какой выходной сигнал
   будет + "Больше", - "Меньше".

4) MaxI (Float) - Максимальная длительность импульса на выходе регулятора (cсек).
   С помощью этой переменной задается ограничение длительности выходного импульса
   по максимуму. Т.е. даже если рассогласование (разность между входным сигналом и
   заданием), П, И, Д законы выдают на выход значение импульса больше MaxI, то
   всеравно длительность управляющего импульса будет равна MaxI. Например:
   Vx = 50.0 и Zad = 10.0, KP = 1.0, MaxI = 20, то на выходе -20 ссек.
   Рекомендуемые границы: MaxI = от 20 до 100.

5) MinI (Float) - Минимальная длительность импульса. С помощью этой переменной
   задается ограничение выходного импульса по минимуму. Т.е. если вычисленная ПИД
   регулятором длительность импульса меньше MinI, то импульс управления обнуляется.
   Например: если выход ПИД = 5 ссек, а MinI = 7 ссек, то управляющий импульс (УИ)
   будет равен 0, или также при ПИД = -5 ссек, а MinI = 7 ссек УИ = 0.
   Рекомендуемые границы: MinI = от 7 до 10. (меньше 7 МЭО не отрабатывает)

6) Pauz (Float) - Начальная длительность паузы между импульсами. Пауза равна введенному
   значению при нулевом рассогласовании, т.е. когда Vx = Zad. в остальных случаях зависит
   от значения длительности импульса на выходе П части регулятора.

7) KPauz (Float) - Коэффициент именьшения длительности паузы. Т.е. при увеличении
   длительности импульса на выходе П части регулятора, в зависимости от значения
   KPauz пауза между импульсами уменьшается. Например: при Pauz = 2000, KPauz = 2 и
   выходе П = 100, при MaxI = 100, длительность паузы будет равна 1000 (уменьшится в
   2 раза). При Pauz = 2000, KPauz = 4 и выходе П = 100, при MaxI = 100, длительность
   паузы будет равна 500 (уменьшится в 4 раза). Уменьшение паузы линейно в пределах
   от П = 0 до П = MaxI. При П > MaxI значение паузы не уменьшается меньше значения
   при П = MaxI. Рекомендуемые границы: KPauz = от 1 до 2.

8) Ti (Float) - Время изодрома (время интегрирования)(ссек) или время удвоения.
   Основная задача данного параметра: накопление сигнала остаточного рассогласования и
   устранение недорегулирования параметра. Пропорциональная часть регулятора компенсирует
   основное рассогласование парамера, но не до нуля, т.к. невозможно с помощью КР на 100%
   устранить рассогласование. Поэтому интегратор накапливает сигнал недорегулирования и
   "подтягивает" параметр к заданию выдавая управляющие импульсы. С помощью Ti задается
   с какой скоростью интегратор будет накапливать значение параметра. Например: при
   Vx = 50.0 и Zad = 51.0 рассогласование будет равно 1, тогда при Ti = 100 (1 секунда)
   через 1 секунду на выходе интегратора (И части регулятора) будет 2, еще через 1 сек.
   будет уже 3 и так далее.

9) T_int (Float) - Время одного цикла интегратора (ссек). Так как данный регулятор не
   аналоговый, а дискретный (т.е. получает значение через некоторые промежутки времени),
   то интегратор производит вычисления площади параметра (интеграла) через промежутки времени
   задаваемые пареметром T_int, по формуле трапеции. Например: при T_int = 50 (0.5. сек)
   вычисление (новое значение) на выходе интегратора появится через 0.5 сек, а в течении
   этих 0.5 сек будет старое значение. Рекомендуемые границы: T_int = от 2 до 20.

10)MaxMin (Float) - Ограничение выходного сигнала интегратора (ссек). Для того чтобы выходной
   сигнал интегратора не накапливался до бесконечности, в регуляторе предусмотрено ограничение
   (данный параметр). Заданием этого параметра ограничивается выходной сигнал сверху и
   снизу, т.е. ± MaxMin. Например: MaxMin = 15, тогда на выходе не больше +15 и не
   меньше -15. Рекомендуемые границы: MaxMin = от 10 до 20.

11)TDif (Float) - Время между отсчетами дифференциатора (ссек).Так как данный регулятор не
   аналоговый, а дискретный, то дифференциатор производит вычисления скорости изменения
   параметра (дифференциала) через промежутки времени задаваемые пареметром TDif.
   Рекомендуемые границы: TDif = от 20 до 100.

12)KDif (Float) - Коэффициент усиления дифференциатора. Данный коэффициент позволяет
   усилить выходной сигнал Д части регулятора до требуемого уровня.

13)KMEO (Float) - Время выборки люфта МЭО (ссек). МЭО всегда имеет люфт, тоесть при подаче
   на "Больше" управляющего сигнала в прошлый цикл программы, необходимо при подаче сигнала
   "Меньше" выдать более длительный сигнал, для того чтобы скомпенсировать люфт (зазоры в
   шестернях, рычагах, тягах и т.д.)

14)BR (Boolean) - Вход больше "на ручном". При появлении на данном входе значения True,
   при значении Auto = False (на ручном) на выход "Больше" передается управляющий сигнал
   True, длительностью TR.

15)MR (Boolean) - Вход меньше "на ручном". При появлении на данном входе значения True,
   при значении Auto = False (на ручном) на выход "Меньше" передается управляющий сигнал
   True, длительностью TR.

16)TR (Float) - Длительность импульса на ручном управлении (ссек). Данным параметром
   устанавливается какой длительности будет управляющий импульс на ручном управлении при
   появлении на входах BR и MR значения True.

17)Auto (Boolean) - Управляющий сигнал автомат-ручное(по True автомат). При появлении на
   данном входе значения True (автомат), на выход будут передаваться управляющие импульсы с ПИД
   регулятора. При значении на данном входе False (ручное) на выход будут передаваться
   импульсы ручного управления.

18)PO (Boolean) - Прямой-обратный выход на автоматике (по True - прямой). При прямом выходе
   на автоматике, при увеличении входного сигнала выше задания, управляющие импульсы будут
   идти на "Меньше" (закрывать МЭО), а при уменьшении входного сигнала ниже задания,
   управляющие импульсы будут идти на "Больше" (открывать МЭО). А при обратном выходе на
   автоматике, сигналы будут противоположны прямому выходу.

Vel
Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Май 2006 13:06

Vel_

11параметров непосредственно для настройки ПИД регулятора. Мне для ПИ регулятора хватило 4-х параметров настройки, для ПИД добавляются еще 2, плюс нелинейный элемент формирующий зону нечувствительности. 5 входных сигналов кажутся лишними даже с учетом универсальности.

Сергей
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Май 2006 13:18

s_smirnov
По существу Вашего регулятора, самое главное что в нем не нравиться, это параметры настройки.

Мне самому не нравиться что коэффициентов много, хотелось бы минимум (КП, КИ, КД), но я в живую не видел ни одного регулятора у которого только коэффициент передачи и время изодрома. На Р-29 я насчитал 18? "ручек" и перемычек (считай коэффициентов настройки). В инете как то встретил статью про оптимальный (оптимистический) регулятор и там написано, что только в США этой задачей занимается 7 институтов и затрачены МИЛИАРДЫ! долларов. А результат - только на строго определенном объекте регулирования. А я всего лишь одиночка.

На первом объекте, который мы запускали не пошел регулятор и параметр управлялся вручную. За 1,5 суток этого "кросса" для всей группы, наш основатель (группы) создал логический регулятор который он назвал "как бы я управлял параметром с помощью мыши". Аналогов устойчивости работы и минимальности настроек я ни где не встречал. На основании этого дальнейшем я больше уделял внимания именно логике работы. Но уровень в пределах ±18-20 мм.вод.ст. не устраивал аппаратчиков и за месяц я сделал свой первый ПИД регулятор. 

Например Интегратор: Для чего он нужен? Пропорциональная часть должна быстро погасить возмущение, но не сможет до нуля, иначе велика опасность самовозбуждения, перерегулирования. Интегральная часть должна устранить остаточное рассогласование.

Теперь на практике: Контроллер "выхватывает" мгновенные напряжения на аналоговом входе, с дискретностью опроса модуля. Интеграл мы можем получить методом трапеции. "Качество" интеграла напрямую зависит от частоты опроса интегратором параметра. Отсюда "плавно" вытекает коэффициент T_int  "Время одного цикла интегратора". По ходу работы параметр может значительно отклониться от задания, тогда интегратор накопит (со временем) значительное рассогласование. И когда  параметр вернется к заданию, или перейдет его в противоположную сторону, то накопленное интегратором значение будет только мешать процессу регулирования. Вот и появился коэффициент MaxMin "Ограничение выходного сигнала. В ПИД один у меня еще был коэффициент "Блокирование обнуления интегратора при переходе рассогласования через ноль". И естественно Ti "Время изодрома". В итоге 3 (4) коэффициента.

Можно конечно T_int и MaxMin после настройки регулятора зашить в программу и не передавать на компьютер (больше не настраивать), но они все равно остаются (замазали губки). Как от них избавиться, у меня не получилось. Интересно узнать, а как у других разработчиков, или тайну не выдадим?

Vel
Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Май 2006 18:45

Тайны нет никакой.

Берем блок Р.27, открываем схему функционального модуля, видим вот чего (могу ошибиться, давно не заглядывал):

-сумматор

-апериодическое звено

-трехпозиционный триггер

-два ключа (больше, меньше).

Теперь те-же самые элементы изображаем средствами FBD

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

Y= Y_ + 0.5*(Xi+Xi_)*dt + 0.5(Xpi+Xpi_)*dt/Ti + (Xpi-Xpi_)+ (Xp-Xp_)

Xi - интегральный вход,  Xpi - ПИ вход, Xp- пропорциональный вход, переменные с индексом _ из предыдущего цикла, dt- время между отсчетами, Ti- время интегрирования. Замедлять работу интегратора, вводя переменную "время цикла интегратора" невижу смысла, минимальное время цикла 1сС, максимальное - определяется циклом программы.

- трехпозиционный триггер с зоной возврата, при превышении входным сигналом порога выход принимает значение +1(float), при переходе входа через "0" выход принимает значение "0". При уменьшении сигнала ниже порога, на выходе -1(float)

- преобразователь сигнала -1,0,+1(float) в сигналы Б, М, (boolean)

Из указанных элементов собираем ПИ регулятор, сигнал с интегратора подаем на трехпозиционный триггер, сигнал с выхода триггера на интегральный вход интегратора, умножив его на -1. На ПИ вход подаем сигнал рассогласования умножив его на Ап(коэфф. передачи, сС/ед). Порог триггера - это минимальная длительность импульса (сС), время интегрирования- время изодрома регулятора (сС). Для компенсации люфта нужен дополнительный прибамбас. Пропорциональный вход оставляем, может пригодится.

Критерий правильности программы - отсутствие лишних параметров настройки

На все вопросы отвечу, но программу не дам

 

Сергей
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Май 2006 05:46

Критерий правильности программы - отсутствие лишних параметров настройки.

Для проверки критерия правильности регулятора попробуйте сравнить на конкретном обекте работу двух регуляторов, "Stub" и тестируемого.

"Stub" регулятор: минимальный регулятор.

Зона нечувствительности - после выход из нее регулятор начинает выдавать импульсы необходимой полярности, длительностью задаваемой коэффициентом ДИ (длительность импульса) с паузами задаваемыми ДП (длительность паузы). Все!

Можно добавить корректировку люфта МЭО.

"Stub" регулятор работает практически на любых объектах и его вполне хватает для большинства статических объектов регулирования!

При сравнении работы "Stub" и тестируемого, если последний не обеспечивает больше чем двухкратного уменьшения "ширины"  регулируемого параметра, при примерно одинаковых количестве выходных импульсов в минуту, то вы потратили свое время и силы зря

Тем кто спрашивал я выслал библиотеку с ПИД регулятором, мне не жалко. А если не будем делиться информацией и примерами, то так и будем все по очереди наступать на одни и теже грабли, а на улучшение своих разработок уйдет уйма труда и что в итоге получится, еще неизвестно!

Vel
Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Май 2006 09:39

Могу выслать распечатку програмы и всех блоков в нее входящих. Не могу выслать файл библиотеки

Сергей
Наверх
 Ответить Ответить Страница  <123>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz