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


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

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
На али приобрел ещё один занимательный девайс - аппаратный драйвер для трехфазных бесколлекторных движков на базе stm32g431 и ключей на их же мосфетах. Поддерживает векторное управление, а также датчики Холла и энкодеры. Может работать на питании 30 В. Способен долго держать 30 А или пиково 40. Управление - классика - ШИМ, КАН, УАРТ.
Вообще-то у меня есть такого типа три разных набора по 4 драйвера. Однако есть маленькое "но" - все они относятся к стандартным драйверам для массового использования на средних коптерах с предустановленной ЗАКРЫТОЙ прошивкой и невозможностью перепрограммирования.
У вновь приобретенного - открытая структура, и, более того, в стм-овском motor control workbench есть готовый пример проекта. Собственно, компилируй, подставляй свой движок и крути "из коробки".
Прикольно сделан - слева платы драйвера на снимке st-link - прошивальщик стм-овский и всякие кнопки/светодиоды/потенциометры для отладки. После отладки и прошивки его надо отломить, а сам драйвер в термоусадку - и готово..
Изображение

 Re: Векторное управление эл. мотором - обязательны ли упрощения?
Ротор и статор двигателя перемещаются (вращаются) друг относительно друга, поэтому матрица индуктивностей, состоящая из собственных и взаимных индуктивностей, зависит от времени (см. формула (3.3-4), [1], стр. 122). Вращается ротор с некоей квазипостоянной частотой, и взаимные индуктивности меняются с кратной частотой. Токи и напряжения будут иметь такой же вид: $I_{abc}(t)\exp(\mathbf{j} \omega t + \psi(t)), U_{abc}(t)\exp(\mathbf{j} \omega t + \varphi(t))$

Хотим перейти от исходной (честно полученной, полновесной) системы ДУ относительно "высокочастотных" переменных с частотными множителями вида $\exp(\mathbf{j} \omega t)$, к системе ДУ относительно новых низкочастотных переменных (без множителей $\exp(\mathbf{j} \omega t)$). Один из вариантов перехода к низкочастотным переменным - это так называемое преобразование Парка (см. формула (4.2-5), [1], стр. 88). Т.е. имеет место обычная (линейная) замена переменных в системе ДУ, осуществляемая по обычным правилам.

Суть в том, что для новой "виртуальной" систмемы ДУ легче синтезировать управление. В частности:
Цитата:
https://imperix.com/doc/implementation/vector-current-control?currentThread=static-synchronous-compensator-statcom
(вот этот сайт по ссылке очень много хорошей (и концентрированной) информации содержит, но он только через VPN или Tor открывается)

In DC applications, conventional PI controllers provide excellent performance, notably minimal steady-state error, thanks to the (almost) infinite DC gain provided by the integral control action. However, in AC applications, PI controllers inevitably present a delayed tracking response, because their gains cannot be set high enough to avoid a steady-state error.
A well-known countermeasure to this shortcoming is the implementation of the PI controller(s) within a rotating reference frame (dq), which allows to “re-locate” the (almost) infinite DC gain at the desired frequency. This technique requires the rotating reference frame to be synchronized with the grid voltage...


Осталось выполнить еще один проход - выразить вращательный момент двигателя относительно новых переменных. Относительно исходных переменных все просто и ясно (См. [2], стр. 527-528):
$T_{em}=k_t N_s \left \lvert \boldsymbol{\Phi_R} \right \rvert \left \lvert\ \boldsymbol{i_s} \right \rvert \sin(\xi)$
Собственно, именно из этой формулы вытекает, что для максимизации момента (и КПД) одну из компонент (вектора) тока статора нужно давить к нулю, другую - наоборот.

Т.к. управление будет и синтезироваться и реализовываться относительно "виртуальных" переменных, то надо будет еще выполнить обратное преобразования от "виртульных" переменных к реальным.

Преобразование Парка не требует никакой симметрии, сбалансированности фаз итд ([1], стр. 98):
Цитата:
Although the transformation equations are valid regardless of the waveform of the variables, it is instructive to consider the characteristics of the transformation when the three-phase system is symmetrical and the voltages and currents form a balanced threephase set of abc sequence as given by (3.6-1)–(3.6-4).


1. Krause Paul - Analysis of Electric Machinery and Drive Systems, 3-rd Edition
2. Slobodan N. Vukosavic, Electrical Machines

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


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