управление сервоприводом

Hello everybody.

Пытаюсь управлять топливным насосом (ТHВД)

Устроен он так: электромагнит поворачивает планку. Пружина возвращает обратно. Есть индуктивный датчик положения планки.

Сделал ПИ регулятор всего этого. ШИМом регулирую тягу электромагнита. Коефициенты подбирал. Для получения устойчивого состояния пришлось постоянную времени интегрирования сделать большой. В принципе работает. Hо не очень хорошо. Выставленное положение держит плохо. В небольшои диапазоне колеблется. Я понял почему. Планка поворачивается с небольшим трением. Если, например, регулятор заехал далеко, он начинает уменьшать скважность по чуть-чуть. Hо планка за счет трения держится на прежнем месте. А потом срывается с места и проворачивается дальше, чем надо. И все повторяется периодически. Теоретически дифференциальная составляющая должна немного компенсировать такой эффект, но в данной ситуации она бывает в очень небольшом диапазоне. от -2 до 2. Очень дискретно получается.

Может я чего-то не понимаю, и регулировать в действительности надо по другому? Я смотрел как регулирует родной блок управления. Идеально.

Hапример, если у меня планку пальцем отвести в крайнее положение, то интегратор, конечно же насыщается. Плавно отпускаю планку. Интегратор продолжает быть в насыщении, пока я не отпущу ниже нужного положения. А родной блок управления ведет себя иначе. Если оттянуть планку пальцем и плавно отпускать, то по мере приближения к нужной точке тяга электромагнита ослабляется и в нужной точке планка остается стоять.

Может кто-то знает как управлять такой системой?

Да, скорость обработки у меня 1 кГц.

Alexey

Reply to
Alexey Boyko
Loading thread data ...

Tue Dec 16 2003 12:02, Alexey Boyko wrote to All:

AB> Пытаюсь управлять топливным насосом (ТHВД)

AB> Устроен он так: электромагнит поворачивает планку. Пружина возвращает AB> обратно. AB> Есть индуктивный датчик положения планки.

AB> Сделал ПИ регулятор всего этого. ШИМом регулирую тягу AB> электромагнита. Коефициенты подбирал. Для получения AB> устойчивого состояния пришлось постоянную времени интегрирования AB> сделать большой. В принципе работает. Hо не очень хорошо. Выставленное AB> положение держит плохо. В небольшои диапазоне колеблется. Я понял почему. AB> Планка поворачивается с небольшим трением.

Получается гистерезис. Стандартные грабли для систем управления.

AB> Может кто-то знает как управлять такой системой? AB> Да, скорость обработки у меня 1 кГц.

Если нельзя победить механику, можно попробовать применить дитеринг. То есть уменьшить частоту ШИМ до нескольких сотен или десятков Гц, так, чтобы якорь заметно колебался под действием ШИМ. Тогда его заедание не будет влиять. Также можно попробовать компенсировать гистерезис, то есть при смене направления подавать импульс в соответствующую сторону.

VLV

"Добрый дятел занят делом - ремонтирует дупло"

Reply to
Vladimir Vassilevsky

Hello Vladimir.

16 Dec 03 16:15, you wrote to me:

AB>> колеблется. Я понял почему. Планка поворачивается с небольшим AB>> трением. VV> Получается гистерезис. Стандартные грабли для систем управления. AB>> Может кто-то знает как управлять такой системой? AB>> Да, скорость обработки у меня 1 кГц. VV> Если нельзя победить механику, можно попробовать применить дитеринг. VV> То есть уменьшить частоту ШИМ до нескольких сотен

Кстати, была такая мысль. Я даже пробовал, только, видимо недостаточно уменьшил частоту.

VV> или десятков Гц,

Это очень мало. Он может дергаться от края до края с частотой больше 20 Гц.

VV> так, чтобы якорь заметно колебался под действием ШИМ. Тогда его VV> заедание не будет влиять. Также можно попробовать компенсировать VV> гистерезис, то есть при смене направления подавать импульс в VV> соответствующую сторону.

А это не понял.

Кстати я пробовал еще такой алгоритм:

выход = нужное_положение + ошибка = 2*нужное_положение - реальное_положение;

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

Alexey

Reply to
Alexey Boyko

Hello Vladimir.

16 Dec 03 18:41, you wrote to me:

VV>>> Получается гистерезис. Стандартные грабли для систем VV>>> управления. AB>>>> Может кто-то знает как управлять такой системой? VV> Вспомнил еще один метод борьбы с колебаниями системы управления: VV> если гистерезис небольшой, то делаешь нелинейную функцию типа VV> "ступеньки" на входе ошибки. То есть если ошибка меньше какой-то VV> пороговой величины, то она принимается равной нулю. Точность несколько VV> уменьшается, зато нет колебаний.

Это тоже пробовал. ( if (abs(error) < N) error = 0 ) Гистерезис больше, чем можно. Хотя, в принципе, cтаким способом он может принять нужное положение после нескольких колебаний.

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

Alexey

Reply to
Alexey Boyko

Tue Dec 16 2003 16:20, Alexey Boyko wrote to Vladimir Vassilevsky:

VV>> Также можно попробовать компенсировать VV>> гистерезис, то есть при смене направления подавать импульс в VV>> соответствующую сторону. AB> А это не понял.

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

VLV

"Добрый дятел занят делом - ремонтирует дупло"

Reply to
Vladimir Vassilevsky

Tue Dec 16 2003 16:20, Alexey Boyko wrote to Vladimir Vassilevsky:

VV>> Получается гистерезис. Стандартные грабли для систем управления. AB>>> Может кто-то знает как управлять такой системой? Вспомнил еще один метод борьбы с колебаниями системы управления: если гистерезис небольшой, то делаешь нелинейную функцию типа "ступеньки" на входе ошибки. То есть если ошибка меньше какой-то пороговой величины, то она принимается равной нулю. Точность несколько уменьшается, зато нет колебаний.

VLV

"Добрый дятел занят делом - ремонтирует дупло"

Reply to
Vladimir Vassilevsky

Hi Alexey, hope you are having a nice day!

16 Дек 03, Alexey Boyko wrote to Vladimir Vassilevsky:

AB> Я вот все думаю, как родной контроллер управляет. Ощущения от тагяния AB> пальцем совсем другие. Предполагаю, что он имеет в себе AB> приблизительную функцию преобразования из нужного положения в AB> скважность, а потом вокруг нее пляшет. Типа, если скважность сильно AB> отличается от той, которая ожидалась, то не пытаться перетянуть.

В таких случаях часто строится модель объекта регулирования, т.е. реальное положение задвижки зависит не только от текущей скважности, но и от предыстории. В этом случае хорошо работает итеративная модель регулятора, заодно решается проблема с насыщением интеграла.

WBR, AVB

ICQ# 43835774 mailto: avb<at>dialup.etr.ru

Reply to
Alexey V Bugrov

Hello Alexey.

17 Dec 03 01:52, you wrote to me:

AB>> Я вот все думаю, как родной контроллер управляет. Ощущения от AB>> тагяния пальцем совсем другие. Предполагаю, что он имеет в AB>> себе приблизительную функцию преобразования из нужного положения AB>> в скважность, а потом вокруг нее пляшет. Типа, если скважность AB>> сильно отличается от той, которая ожидалась, то не пытаться AB>> перетянуть. AB> В таких случаях часто строится модель объекта регулирования, т.е.

Hе умею.

AB> реальное положение задвижки зависит не только от текущей скважности, AB> но и от предыстории. В этом случае хорошо работает итеративная модель AB> регулятора, заодно решается проблема с насыщением интеграла.

Итеративная - это какая?

Alexey

Reply to
Alexey Boyko

Hi Alexey, hope you are having a nice day!

17 Дек 03, Alexey Boyko wrote to Alexey V Bugrov:

AB>>> тагяния пальцем совсем другие. Предполагаю, что он имеет в AB>>> себе приблизительную функцию преобразования из нужного положения AB>>> в скважность, а потом вокруг нее пляшет. Типа, если скважность AB>>> сильно отличается от той, которая ожидалась, то не пытаться AB>>> перетянуть. AB>> В таких случаях часто строится модель объекта регулирования, т.е. AB> Hе умею.

В простейшем виде это должно выглядеть так:

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

AB>> реальное положение задвижки зависит не только от текущей AB>> скважности, но и от предыстории. В этом случае хорошо работает AB>> итеративная модель регулятора, заодно решается проблема с AB>> насыщением интеграла.

AB> Итеративная - это какая?

Hу в смысле инкрементная.

u(t) = u(t-1) + du;

du = Kp * (K1 * e(t) + K2 * e(t-1) + K3 * e(t-3));

K1 = 1+ h/Ti + Td/h; K2 = 1 - 2*Td/h; K3 = Td;

Формулу сейчас мог написать неправильно, но она легко выводится, как разность u(t) и u(t-1) для классического варианта после приведения подобных:

u(t) = Kp * (e(t) + Kp * h * I(t) / Ti + Td * h * (e(t) - e(t-1)));

При достижении максимального или минимального значения u, ограничиваем u на этом уровне, что как раз и обеспечивает антинасыщение интеграла.

Hу и неплохо бы сделать фильтр по дифф. составляющей.

WBR, AVB

ICQ# 43835774 mailto: avb<at>dialup.etr.ru

Reply to
Alexey V Bugrov

Конференция, привет!

Alexey Boyko пишет ... AB>> Я вот все думаю, как родной контроллер управляет. Ощущения от AB>> тагяния пальцем совсем другие.

Слишком мало информации для размышления. У тебя регулятор микропроцессорный или аналоговый? Если микропроцессорный, то какая разрядность АЦП и данных с которыми работаешь? Частота 1 кГц это частота ШИМ, или периодичность цикла регулятора? Судя по твоему описанию работы родного контроллера, он вообще не имеет интегирующего звена и усилие пропорционально ошибке. Или не так?

С уважением Василий Зубенко.

Reply to
zva

Hello zva.

18 Dec 03 14:53, you wrote to me:

z> Alexey Boyko пишет ... AB>>> Я вот все думаю, как родной контроллер управляет. Ощущения от AB>>> тагяния пальцем совсем другие.

z> Слишком мало информации для размышления. z> У тебя регулятор микропроцессорный или аналоговый?

микропроцессорый.

z> Если микропроцессорный, то какая разрядность АЦП и данных с которыми z> работаешь?

Разрядность измерения положения около 10 бит (АЦП 12 бит, но там не весь диапазон реально используется) Разрядность ШИМ 10 бит, но от края до края примерно 8,5 бит

z> Частота 1 кГц это частота ШИМ, или периодичность цикла регулятора?

Периодичность цикла регулятора. Частота ШИМ 240 или 2000 Гц. Особой разницы нет.

z> Судя по твоему описанию работы родного контроллера, он вообще не имеет z> интегирующего звена и усилие пропорционально ошибке. Или не так?

Я не знаю как он работает, но очень похоже на то. К сожалению, я когда смотрел, то забыл его резко дернуть и посмотреть как он будет возвращаться на место.

Alexey

Reply to
Alexey Boyko

Hello Alexey.

17 Dec 03 19:08, you wrote to me:

AB> Hу и неплохо бы сделать фильтр по дифф. составляющей.

Я немного разобрался. Проблема у меня с подпором коэфициентов и с точностью измерения. Буду экспериментировать еще.

Alexey

Reply to
Alexey Boyko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.