Работа привода на поршневой насос

detoxxxic
Сообщения: 15
Зарегистрирован: 15 апр 2016, 20:38

Работа привода на поршневой насос

Сообщение detoxxxic » 15 апр 2016, 22:20

Приветствую!

Есть 16 полюсный синхронный трехфазный двигатель - обмотки звезда и ротор магниты. На двигателе три цифровых холла для ДПР.
Нагрузка двигателя двухпоршневой насос. По ТЗ нужны стабильные обороты 500 об/мин при изменении питающего напряжения постоянного тока на входе в инвертор 100-120 В.

Реализован алгоритм bldc (автокоммутация по холлу). Если запустить двигатель в режиме напряжения (ШИМ 100%), то при работе насоса с номинальным давлением и расходом осциллограмма фазного тока выглядит так - рис.1 (в клетке 5А):
Изображение
она же развернуто - рис.2
Изображение

Т.е. по форме тока хорошо видны чередующиеся через 4 периода провалы и подъемы тока, связанные с работой двух поршней на одном механическом обороте (8 периодов тока на 1 мех.оборот). Отметим, что ток не превышает в амплитуде 10А. Таким образом, график момента нагрузки на одном механическом обороте условно можно изобразить так – рис3
Изображение

Если так меняется момент, то в противофазе к нему изменяется и частота вращения вала, на рис4 штрихпунктирная кривая. По сигналу с ДПР за 6 переключений холла (за 1 эл. оборот) вычисляется частота вращения, на рис4 бирюзовая полилиния. Как видим при измерении на 1 эл. об. скорость будет скакать.
Изображение

В целях реализации задачи по поддержанию 500 об/мин требуется реализовать подчиненное управление, контур скорости формирует задание для токового ограничения контуром тока. Т.е. структура управления должна быть такой, рис.5
Изображение

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

Что сделано сейчас. Я запустил контур тока с уставкой в 12А, и он находится постоянно в насыщении, выход 100%, поскольку с датчика тока фазы амплитуда не превышает 10А. А чтобы обеспечить регулирование по напряжению, я завел выход контура скорости на ограничитель выхода контура тока. Структура управления вышла такая – рис6.
Изображение

Т.е фактически контур скорости давит выход контура тока и реализовалось управление по напряжению с отсечкой на 12А при каких либо аномалиях (замедление или блокировка вала).

Но эта схема не позволила мне обеспечить стабильную работу ОС по скорости на максимальном питающем напряжении (от 120 до 130В).
Похоже, что регулятор скорости с ростом напряжения так снижает процент максимального раскрыва ШИМ контура тока, что ток просто не успевает нарасти для создания требуемого момента, идет падение скорости и начинается расколбас.

На рис.7 показан режим, когда задание по скорости стоит 800 об/мин, контур тока открыт на 100% и при 87В питающего средние обороты около 500, а изменение скорости мгновенное на механическом обороте меняется от 450 до 550 (голубой луч). Т.е. скачки скорости на измерении есть и они понятны, это от скачков момента.
Изображение

До этой структуры у меня было векторное управление по углу с ДПР интерполяцией, оно успешно работало на нагрузке виде порошковой электромагнитно муфты. Муфта давала момент постоянный и интерполяция угла работала замечательно. Как только я прицепил вместо муфты насос, то изредка я получал остановку двигателя, например 1-2 раза за час работы. Я связывал останов с нарушением работы интерполятора, когда из-за столь динамично меняющейся нагрузки угол интерполировался не очень хорошо и иногда вектор тока похоже я ставил не туда куда надо. Именно поэтому я решил уйти на bldc режим. Здесь остановов уже нет, только расколбас на максимуме Udc.

Куда теперь двигаться я пока не придумал…… Думаю, что мне не хватает инфы по скорости, но поставить многоимпульсный энкодер или резольвер для "покрутить насос" мне не дадут.

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Работа привода на поршневой насос

Сообщение Лашкевич Максим » 16 апр 2016, 15:55

Спасибо за вопрос!

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

2) Не очень понятны сомнения про работу подчиненного регулирования, что показана на рис.5. Вы эту структуру запускать пробовали (на модели или в живую)? Каков результат?

3) Думая, на чем могут быть основаны сомнения в работе структуры подчиненного регулирования, встает вопрос о контуре тока. Как он у вас работает? Люди по-разному делают. Можно сделать что-то типа: "регулятор тока задает процент скважности ШИМ, после чего это подается на инвертор", можно "регулятор тока в релейном режиме открывает ключи инвертора: ток меньше - включаем, ток больше - выключаем", можно совсем неправильно типа "при смене положения датчика ключи открываются, если ток превысил уставку ключи закрываются до следующей смены положения ротора" и т.п. Что у вас? Почему возникла фраза "поскольку будет все периоды тока ровнять под одну гребенку, и те что должны создать момент, чтоб поршень протолкнуть, и те что не нагружены."? Ведь жесткий регулятор скорости как раз и смог бы отслеживать изменение скорости и пытаться поддавать моменту когда скорость проседает. А если еще правильно сделать Д часть, дифференциальную, то можно еще сильнее стабилизировать скорость.

4) Но отсюда вытекает еще больший философский вопрос - а зачем для поршневого насоса регулировать скорость "жестко"? Почему бы в структуре 5 не сделать мягкий ПИ регулятор скорости, который, действительно, как вы сказали "ровняет все периоды под одну гребенку" и задает постоянный уровень токоограничения на механическом обороте, не скачущий. Тогда в среднем частота вращения будет 500 об/мин, но мгновенная скорость будет плясать в зависимости от нагрузки на насосе и его момента инерции. Чем это плохо для данной задачи? В такой структуре слишком сильно пляшет скорость, что двигатель успевает почти останавливаться?

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

6) Модели в матлабе, что вы нарисовали, они "живые"? Работают так, как вы описали, согласно вашему объекту? Если да, то вы могли бы перепробовать в матлабе все описанные способы буквально за день-два и найти лучший.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

detoxxxic
Сообщения: 15
Зарегистрирован: 15 апр 2016, 20:38

Re: Работа привода на поршневой насос

Сообщение detoxxxic » 16 апр 2016, 21:09

1) в противофазе или под 90 градусов сути не изменит, скорость скачет и я ее могу измерить лишь 4 раза на на одну пульсацию момента
2) сомненья в том что скорость редко могу измерять (4 раза на одну пульсацию момента), структуру на рисунке 5 запущу в живую в понедельник или во вторник (моделей нет, не владею)
3) контур тока классический пи регулятор, на постоянной нагрузке (тормозная муфта) делает заданные полки тока на трапециях.
Мои соображения таковы, если на насосе я его запущу с уставкой ниже 10А, то на нагруженном такте он сделает полку тока, а на холостом такте не сделает, просто приложит 100% ШИМ и вал ускорится. Про Д составляющую или жесткий регулятор нужно проверить в живую в понедельник или во вторник.
4) Скорость насоса по тз 450-550. Если ОС по скорости справляется, то частота стоит 500+-2. Если нет, то насос колбасит, скорость не стабильная, это мне и не нравится.
5)
Если нагрузка предсказуема и периодична…
Насос может хапнуть воду, может хапнуть масла чистого, масла вспененного, или вообще просто воздух – т.е. нагрузка не предсказуема. У меня нет угла хорошо, у меня холлы дают через 60 градусов на 1 эл. оборот.
6)
Модели в матлабе, что вы нарисовали, они "живые"?
Модели не живые, это для иллюстраций накидано. Не владею и сала в голове на модели не хватает.

PS я редко получаю скорость на одну пульсацию момента 2 раза на подъем и 2 раза на спуск

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Работа привода на поршневой насос

Сообщение Лашкевич Максим » 16 апр 2016, 22:23

А векторная система у вас работала хорошо на насосе, если не рассматривать остановы раз в час? Скорость была стабильной? Ведь по сути векторное управление ничем не отличается по качеству регулирования от автокоммутации с подчиненным регулированием, которую вы показали на рис.5. Там же тот же регулятор скорости, тот же регулятор тока, только чуть по-другому математика считается. Более того, векторное управление даже может работать и по не интерполированному ступенчатому углу - токи будут плохие, но не сильно хуже, чем у автокоммутации. Странно, что происходили какие-то остановы. Думаю, это была какая-то ошибка в программе, а вы подумали на саму структуру управления. Интересно было бы снять осциллограмму переменных векторного управления и посмотреть, что там происходило, когда привод вставал. Может быть стоило переписать модуль интерполяции, сделать его более робастным - чтобы в случае чего выдавал вместо интерполированного угла дискретный - поедет, никуда не денется. Может быть какая-то помеха по датчику ломала модуль интерполяции и всё.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

detoxxxic
Сообщения: 15
Зарегистрирован: 15 апр 2016, 20:38

Re: Работа привода на поршневой насос

Сообщение detoxxxic » 16 апр 2016, 22:54

Сперва некоторые спецы на насос поставили шаговый двигатель!, 400 шагов на оборот. Этот шаговый двигатель момент успешно тянул на тормозной муфте, но под насосом все время вываливался из синхронизма. Иногда на разгоне, иногда просто при работе неожидано и произвольно.
Я предложил перейти на синхронный трехфазный. Проверил работу basic FOC(как из википедии :) или из апнот) с интерполятором угла с контуром скорости на тормозной муфте - все замечательно. Прицепил насос, почти сразу же расколбас пошел по скорости, скорость стала раскачиватся, я выключил ОС по скорости, и стал крутить просто по заданию Q, а на обороты возросшие от роста напряжения не обращал внимания. И даже в таком режиме мотор иногда вставал.
Тогда я сообразил, что мне угол портит нагрузка быстро меняющаяся, и решил перейти на bldc режим, тут угол не нужен, а опережение от скорости я делать не стал по той же причине, что угол плохой у меня.

У меня нет такой глубокой и скоростной телеметрии как у вас, кое-что и раза 4 в секунду могу смотреть, но явно это мало чтобы анализировать быстрые процессы.
Про переделку интерполятора не думал, что-то в этом есть, но тут и холлы +- стоят и магнитики +- вклеены, так еще и критерий перехода надо придумать, нужно подумать.
Помеха по датчику, не проверял. Хочу сделать наполняемый буфер 123456, если будет аномальный холл, я увижу нарушение в порядке. Кстати, как вы помехи холла визуализируете?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Работа привода на поршневой насос

Сообщение Лашкевич Максим » 16 апр 2016, 23:18

Да, вставание насоса по симптомам выглядит как бага в программе. Без осциллограмм из системы управления тяжело это все отлаживать, конечно, вслепую приходится что-то делать... На каком у вас хоть микроконтроллере это все? Может быть, для него есть какие-то средства визуализации? Скорость обмена большая не нужна, нужно записать осциллограмму в массив и потом не торопясь скачать, собственно, как описано у нас в этой статье (ссылка).

Если привод по заданию момента (тока оси q, как я понял) вел себя стабильно, а от регулятора скорости дергался, это лишь говорит о неверной настройке регулятора скорости. Могли бы сделать его более плавным, чтобы он медленно-медленно менял задание момента. Было бы все равно что руками менять. Попробуйте в векторной отключить интерполяцию. Суйте в неё дискретный угол, как есть. Будет вставать двигатель?

Чтобы исключить все проблемы с интерполятором и настройкой ПИДов, что затруднительно делать без средств визуализации, если решите продолжать копать автокоммутацию, то сделайте релейный контур тока (если меньше нужного, включить, больше - выключить), а задание на ток делайте контуром скорости. Сначала начните с мягкого ПИ-регулятора, может даже мягкий подойдет.

Мы визуализируем помехи по холлу также, как и все остальное - смотрим осциллограммы, например, такие.
Изображение
Здесь интерполированный угол имеет сдвиг относительно дискретного, но это частности.
Еще есть всякие счетчики сбоев. Например, если фронты идут слишком часто - в разы чаще, чем могут на самой большой скорости, если угол изменяется больше, чем на 60 градусов, если проскакивают запрещенные состояния - все нули или все единицы. Все эти события делают счетчик_этой_ошибки++; их потом смотрим или делаем по их изменению захлопывание осциллограммы, чтобы рассмотреть "как было дело".
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

detoxxxic
Сообщения: 15
Зарегистрирован: 15 апр 2016, 20:38

Re: Работа привода на поршневой насос

Сообщение detoxxxic » 17 апр 2016, 19:21

Проц миландр кортекс м3, с прикрученой либой iq_math от техаса он считает basic FOC примерно 50% времени на 10кГц.
Про ловушки и контроль за длительностью периода холла это да, нужно прикрутить.
Про развитую телеметрию, да тоже нужно прикрутить, хотя до вашей не дотяну )))).

Вставание по баге я не верю, пока не верю. В bldc без ОС по скорости работал привод несколько часов подряд.
В векторе работал то час без останова, то пару раз за час остановится в произвольные моменты времени. Я все же связываю это в FOCe с некорректной интерполяцией. Интерполяция включается после нескольких десятков оборотов. Ну и если угол не в попад, то это слабый момент на моторе и большая при этом нагрузка на поршне и мотор резко останавливался, и далее уже иногда сам запускался на дискретном угле, а иногда стоял и часто-часто колебался возле какого-то холла, частота колебаний в разы больше рабочей фазной частоты.

Мой интерполятор работает по средней скорости между двумя холлами. По факту за две синусоиды произошло почти 90% увеличение момента, расчет интерполятора от холла к холлу это всего лишь 12 секторов и на всех них угол будет неверно посчитан.
Я хочу услышать от вас, что такое быстрое изменение нагрузки, подъем на двух синусоидах, затем спад на двух синусоидах вполне нормальный процесс и FOC с ОС по скорости вполне себе должен был это отработать даже в условиях плохой интерполяции?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Работа привода на поршневой насос

Сообщение Лашкевич Максим » 17 апр 2016, 19:40

Обсуждать, как изменяется нагрузка без знания момента инерции - бессмысленно. Может быть, момент инерции "никакой" и если двигатель перестает тянуть, то под действием нагрузки привод встает "колом" за половину оборота. А может быть, что момент инерции позволяет прокрутить нагрузку без помощи двигателя несколько оборотов. Как в вашем насосе я не знаю. От этого зависит, главным образом, требуемое быстродействие от системы управления. От этого же зависит качество работы интерполяции.

Сняли бы вы осциллограмму "выбега" механизма, хотя бы в метках холла на осциллографе, тогда бы можно было рассчитать ошибку в интерполяторе угла. Только это все лирика.

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

detoxxxic
Сообщения: 15
Зарегистрирован: 15 апр 2016, 20:38

Re: Работа привода на поршневой насос

Сообщение detoxxxic » 18 апр 2016, 19:46

Сегодня сделал подчиненное регулирование bldc коммутации с пи регулятором контура скорости и пи регулятором контура тока. Подчиненное регулирование сделал по информации скорости за 1 эл. оборот, а индикацию частоты вращения за 1 мех. оборот. Если привод работает устойчиво то скорость за мех.оборот не скачет. Если неустойчиво, то скачет.
С помощью осциллографа снял выход угла с интерполятора. Это в режиме без расколбаса:
Изображение
Это в режиме с раколбасом:
Изображение
Тут угол корявущий особенно….
Снял выход контура тока при устойчивой работе:
Изображение
Выход контура тока желтый луч в PU (+1 соответствует 3,3В, 0 соответствует 1,625В). Видно запаздывание выхода регулятора на одну синусоиду из-за редкого получения значения скорости.

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: Работа привода на поршневой насос

Сообщение Лашкевич Максим » 19 апр 2016, 10:18

А почему скорость рассчитываете для регулятора скорости по эл. обороту? Почему бы не засекать время между ближайшими метками холла? Тогда значение скорости будет поступать в 6 раз чаще. Это, конечно, подходит только если датчик не очень кривой. Хотя даже если кривой, это все равно в данном случае может убрать запаздывание и дать лучший результат.

Для расчета интерполятора используются данные о скорости, рассчитанные за один эл. оборот? Или он интерполирует, используя "свою скорость", а именно период времени между двумя предыдущими метками холла? Потому как если первый вариант, то интерполятор будет врать целый эл. оборот, используя неверные денные о скорости тоже.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Ответить