Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Векторное управление эл. мотором - обязательны ли упрощения?
Как известно, для наиболее эффективного управления (по-крайней мере, в переходных процессах) бесколлекторными двигателями с постоянными магнитами, применяется алгоритм полеориентированного (векторного) управления.
И тут есть интересная штука - во всех описаниях присутствует переход от реальной трехфазной системы к абстрактной двухфазной (преобразование Кларк) и, далее - от стационарной к вращающейся относительно ротора (преобр. Парка). Ну и после необходимых вычислений - обратные преобразования.
По-крайней мере, в настоящее время эти ухищрения делаются для упрощения вычислений итогового управляющего шим в каждом цикле работы алгоритма контроллера аппаратной части.
А возможны такие упрощения только если принять, что рассматриваемая трехфазная система (ну, собственно, сама рассматриваемая электрическая машина) симметрична.
Изготовить-то её могут, я так понимаю, с некой заданной "точностью симметричности". Но вот при реальном применении вроде как уже многое в степени этой самой учитываемой "симметричности" будет зависеть от конкретной схематики силовой части. И могут возникать ситуации, когда будет действовать, ну, допустим, взаимная индукция (если две или более эл. машины завязаны в схему). Ну или силовые шины где=то недалеко проходят и проч.
Может так получиться, что нельзя будет рассматривать систему как симметричную...
Вот и возникает вопрос - можно ли обойтись без "кларка-парка". По-крайней мере, "в лоб" я ответа не нашел. (Тут, конечно, грешен - не разобрался пока до конца в управлении движками). Лет 10-20 назад, возможно эти упрощающие преобразования были критически необходимы - без них бы существующие на тот момент контроллеры не справлялись бы с расчетами с необходимой частотой шим. Но сейчас в производительности контроллеров вопросов не возникает..
Но может чего-то не понимаю, и без "кларка-парка" просто тупо не обойтись?

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
A_I в сообщении #1720761 писал(а):
А возможны такие упрощения только если принять, что рассматриваемая трехфазная система симметрична.

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

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
A_I в сообщении #1720761 писал(а):
Но сейчас в производительности контроллеров вопросов не возникает..

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

Например, ещё не так давно отклик 5 мс на ступенчатое изменение нагрузки - такая характеристика у сервоприводов ABB/Siemens, state-of-art наверное.

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

Mihaylo в сообщении #1721219 писал(а):
операционная система реального времени нужна и всё такое...


Ну есть, например, free rtos для контроллеров. Только зачем - при управлении движками (если в основном только это и больше никакой смысловой нагрузки) ртос будет избыточна, да и накладные у неё всё же имеются. А контроллер итак чистая "ртос".
По идее, вычислительной мощности хватает также с избытком. НАпример, типа таких стм-ок - stmG474, G431 (тактовая 170 МГц), можно и больше, к примеру, H755 - 480 МГц, ну и т.д.
А считать-то немного:
В среднем алгоритм ФОК такой -
с частотой ШИМ, обычно от 10 до 100 КГц, в каждом цикле - по прерываниям соответствующего таймера:
- в каждом цикле есть некое задание - величина, поступающая с верхнего уровня - необходимая скорость или ток/момент и т.д.
- снятие данных о угле положения ротора и скорости/частоты вращения - с датчиков Холла, энкодера, тахогенератора, токовых шунтов и(или) т.н. "обсервера" - "наблюдателя" за внутренним состоянием (фазн. токи, напруга и проч.). В зависимости от типа датчиков - соответствующие АЦП.
- снятие данных о фазных токах (АЦП).
- по токам двух фаз (достаточно токов фаз А, В) - преобразование Кларк в токи абстрактной двухфазной системы (альфа, бета) - простая арифметика (корень из 3 - как заранее подсчитанная величина).
- результаты Кларк как параметр и угол положения ротора - преобразование Парка - простая арифметика и чуть тригонометрии, после которого имеем две перпендикулярные величины/оси - момент (ток) и поток (магнит).
- поток советуют обнулять, а вот момент и задание участвуют в расчете на базе различных ПИД - регуляторов - простая арифметика, на выходе получается два абстрактных фазных напряжения. Причем, так как поток обнуляем, то соответствующее напряжение также будет в 0. Остаётся напряжение "момента".
- после обратных преобразований с полученными напряжениями (обр. Парка и обр. Кларка) - та же самая простая арифметика плюс чуть тригонометрии, переходим к трем реальным фазным напряжениям соответствующим заданию.
- на основании угла ротора, скорости вращения (и направления, кстати) пересчитываем необходимый ШИМ и подаём его в фазы.
АЦП обмениваются данными с ядром через дма, почти не тратя ресурсов.
Собственно, это все расчеты, которые надо произвести в одном цикле ШИМ. На 474 стм загрузка контроллера не превышает 15-18%. Так что запас есть.

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
Поправка:
A_I в сообщении #1721237 писал(а):
- на основании угла ротора, скорости вращения (и направления, кстати) пересчитываем необходимый ШИМ и подаём его в фазы.

должно быть:
- на основании значения напряжений, полученных на предыдущем шаге, угла ротора, скорости вращения (и направления, кстати) пересчитываем необходимый ШИМ и подаём его в фазы.

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
A_I в сообщении #1721237 писал(а):
На 474 стм загрузка контроллера не превышает 15-18%.

Уточнение - это на ШИМе 25 КГц.
На 50 КГц - практически прямо пропорционально - 40-45% загрузка.
(Это при том, что есть ещё множество задач, выполняемых контроллером с гораздо мЕньшей частотой, ну и апериодически. Например, инфо- обмен с тем самым верхним уровнем. Или задачи контроля параметров безопасности - недопустимого нагрева, перенапряжений, превышения токов и т.д. и т.п.)

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
Существует много способов решить одну и ту же задачу. С различным результатом по ресурсам и точности, которые обычно конфликтуют друг с другом. Без даже формулирования целей (абстрактное "упростить", хоть непонятно в чём именно упрощение, и без целей по точности) вы не знаете, решает ли ваша идея вашу задачу? Да и сравнивать вообще вы свою идею с другими методами просто не можете: опять же, нет критериев сравнения. Просто выкидывание математики не есть упрощение.

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
Меж тем удалось существенно упростить алгоритм, исключив таки упрощения (тавтология, однако, но прямых Кларка-Парка удалось убить :-) ).
Качественных изменений не заметил (если не считать несущественные моменты). Впрочем и количественных тоже.
То есть, сейчас у меня:
1. Подается с верхнего уровня некая величина-задание. Подается, ест-нно, с частотой интерфейса с этим самым верхним уровнем (если уж конкретно, то у меня сейчас кан- шина, но не суть - может быть что угодно - уарт, рс-, езернет да хоть и беспровод, вай фай, например, и т.д. и т.п. - главное, чтобы обеспечивал необходимую скорость обмена данными)
2. На каждом цикле ШИМ производится регулировка фазных напряжений (а за счет этого, в конечном итоге - фазных токов/момента) и сдвиг фаз в зависимости от текущего задания, расчитанного рассогласования и одномоментных состояний электрической машины. Делается это так:
- текущее задание - понятно (объяснено выше. Для примера, - может быть газ авто, либо тормоз, или, допустим, задание от системы стабилизации ЛА и проч.);
- с рассогласованием (ошибкой) чуть посложнее - в основном применяя старый проверенный метод подбора (не совсем "тупого" :-) ) , находим какую-нибудь полуэмпирику для приведения задания в такие "попугаи", которые были бы сравнимы с некой измеренной величиной (чаще всего или скорость вращения и/или фазные токи, т.е., момент). В моем конкретном случае это чисто токи. И задание и токи приводятся к некой абстрактной величине s16int (не мудрствуя лукаво позаимствовал у STM), а вообще может быть всё что угодно, лишь бы в каком-то адекватном диапазоне это всё работало (на данном этапе "как-то" крутилось, тюнинговать надо попозже). У меня от измеренных токов используется только их амплитуда, но об этом ниже;
- итак, токи померяны, надо ещё узнать положение ротора (электрический угол). Так как в моем движке есть датчики Холла (причем цифровые), то используются именно они. На выходе, после измерений и расчетов имеем сектор (1 из 6-ти).

(Оффтоп)

Кстати, года два назад STM выкатили довольно интересную штуку - технологию ZeST (Ze - типа даже при нулевой скорости Zero Speed Full Torque) - без всяких датчиков они утверждают, что могут очень точно определить положение ротора - как такое вообще возможно?. Они даже отладочную платку выпустили на базе stm32g473. Там вроде и контроллер не совсем стандартный.. Ну и по традиции, все ключевые алгоритмы у них скрыты в библиотеках :cry: Но да ладно, народ предполагает, что единственный возможный вариант - это при нулевой скорости подавать стимулирующие воздействия и оценивать реакцию (естественно, зная заранее все ключевые параметры ЭМ). Но как-то всё сомнительно, наверное, придется прикупить эту отладочную платку и поиграться с ней..

Но да ладно, вернемся к баранам:
- дальше я, предварительно выкинув из алгоритма преобразования Кларка-Парка, использую в расчетах ТОЛЬКО некую усредненную АМПЛИТУДУ ФАЗНЫХ ТОКОВ, справедливо (надеюсь) полагая, что чем она больше, тем больше крутящий момент. И именно по ней замыкаю контур управления;
- далее тут по желанию - некая последовательность из ПИД-регуляторов (у меня в начале заработало вполне сносно и без ПИД, но все же применил один для более тонкой настройки) - прорабатываю рассогласование (собсно, тупая разность между измеренной усредненной амплитудой и заданной);
- обратный Парк всё же пока остаётся (да-да, вот так вот - без прямого Парка задействуется обратный) - для преобразования в фазные напряжения;
- обратный Кларк - выкинут;
- далее - относительно простой алгоритм расчета фаз и дьюти- цикла для ШИМ на основе предыдущих расчетов фазных напряжений/токов и сиюминутного положения ротора.
И всё - работает хорошо. По-крайней мере, в переходных моментах (например, частых сменах направления вращения, да и вообще, значительных изменений скоростей вращения) гораздо лучше шестишагового (скалярного) алгоритма - потребление тока от ИП заметно ниже (не оценивал пока).

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
A_I в сообщении #1720761 писал(а):
Как известно, для наиболее эффективного управления (по-крайней мере, в переходных процессах) бесколлекторными двигателями с постоянными магнитами, применяется алгоритм полеориентированного (векторного) управления.


Вы рассматриваете способы управления электроприводами с малым диапазоном регулирования скорости при низких динамических показателях.

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

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

Код:
...
  //получаем фазные токи в фазах U (A) и V(B):
  PWMC_GetPhaseCurrents(pwmcHandle[M1], &Iab);
  //преобразуем Кларк в абстрактные альфа, бета:
  //Ialphabeta = MCM_Clarke(Iab);
  //привязываем стат. координаты векторов к ротору с помощью Парка:
  //Iqd = MCM_Park(Ialphabeta, hElAngle);
  //прокручиваем в ПИД- регуляторах
  //Vqd.q = PID_Controller(pPIDIq[M1], (int32_t)(FOCVars[M1].Iqdref.q) - Iqd.q);
  //Vqd.d = PID_Controller(pPIDIq[M1], (int32_t)(FOCVars[M1].Iqdref.d) - Iqd.d); 
 
  //подобрано мной:
  Vqd.q = (20000 - Iqd.q / 3);
  Vqd.d = 0;

//обратный Парк:
  Valphabeta = MCM_Rev_Park(Vqd, hElAngle);
//расчет скважности ШИМ:
  PWMC_SetPhaseVoltage(pwmcHandle[M1], Valphabeta);
  ...


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

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


... а вот то, что зависимость ЭДС и силы магнитного потока от угла считается чисто синусоидальной (даже для многополюсного мотора !) - это уже существенное упрощение. Иногда вводят ещё коэффициент для "второй гармоники потока", но на этом всё.

 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group