В предыдущем статья Я рассказал, как создается векторная модель управления СДСМ, и определил параметры двигателя на основе экспериментальных данных.
В этой статье мы заставим двигатель вращаться так, как нам нужно, т.е.
настроим контуры управления, и, конечно же, проведем эксперимент, используя сгенерированный из модели код.
Настройка регуляторов
Во многих материалах, например [1, 2], описывается классическая настройка регуляторов в векторной структуре управления на оптимум: токовый контур настраивается на технический (модальный) оптимум, а скоростной контур на симметричный.Поскольку формулы коэффициентов регулятора известны, то можно просто подставить в них все значения и получить нужный коэффициент. Но сколько бы попыток настройки я не предпринимал, полученный переходный процесс меня не удовлетворил по скорости.
После энной попытки решил воспользоваться готовым функция , который включен в пакет Motor Control Blockset. Он тоже настраивается на оптимум, но более точно, поскольку учитывает частоты дискретизации, на которых работают схемы, а также частоту ШИМ.
Для того чтобы он мог подобрать параметры, в него необходимо ввести: для токовой цепи - коэффициент демпфирования, а для быстродействующей цепи - коэффициент оптимизации (для симметричного оптимума).
Правда, аргументами этой функции являются структуры данных со строго определенными полями, поэтому мне пришлось переписать в эти поля параметры моего двигателя и инвертора.
Приведу два переходных процесса, полученные в результате экспериментов с коэффициентами оптимизации настройки регуляторов.
Рис.
1. Переходные процессы скорости для разных настроек контроллера Коэффициент затухания токовой петли составляет 0,707. При этом значении коэффициент оптимизации схемы для технического оптимума равен 2. Я варьировал коэффициент оптимизации контура скорости (1,5 и 2): чем он выше, тем быстрее падает производительность, но уменьшается и перерегулирование.
Теперь, когда я убедился, что модель алгоритма векторного управления работает правильно, меня устраивают рассчитанные коэффициенты контроллера, пора переходить к передаче алгоритма на микроконтроллер.
Ээксперименты
Переход от традиционной модели алгоритма к модели, предназначенной для генерации на его основе кода, был сопряжен с двумя трудностями:- Необходимо было понять, как программа будет «общаться» с периферийными узлами микроконтроллера.
- Необходимо было решить задачу точного определения положения ротора, поскольку имеется только инкрементный (т.е.
относительный) энкодер.
Периферийные блоки
Первая проблема решается добавлением в модель специальных блоков пакета поддержки.
Поскольку я использовал микроконтроллер серии C2000 от Texas Instruments, я скачал пакет специально для него прямо из MATLAB.
Рис.
2. Страница пакета поддержки микроконтроллеров серии C2000 в инструменте Add-On Explorer. Мне нужны были следующие блоки: Блок приема сигналов от энкодера .
Он сам обрабатывает сигналы А, В и Z и на выходе выдает положение контролируемого объекта.
Он также может автоматически рассчитывать скорость вращения.
Но мне эта функция не пригодилась, так как я установил блок расчета скорости из библиотеки Motor Control Blockset. Я установил рабочую частоту блока (время выборки) на 20 кГц и ширину счетчика (Position Counter) на 16 бит.
Рис.
3. Периферийный блок обработки сигналов с энкодера и окно его параметров.
Блок настройки и получения информации от АЦП .
В этом блоке я настроил два канала АЦП (Input Channels), так как нам нужна информация о токах двух фаз А и В, по какому внешнему прерыванию будет считываться датчик тока (источник триггера SOCx) - по прерыванию от блока ШИМ - и рабочая частота АЦП (время выборки).
Рис.
4. Периферийный блок приема сигналов от АЦП и окно его параметров.
ШИМ-блоки .
В микроконтроллере реализовано несколько двухканальных блоков ШИМ.
Для управления инвертором мне понадобилось использовать 3 канала (для управления 6 ключами).
Здесь огромное количество настроек, рассказ о которых занял бы целую статью.
Я только что настроил тип ШИМ (режим счета) — по центру (Вверх-вниз) для реализации SVPWM, установил частоту (период таймера) на 40 кГц и включил прерывание для АЦП.
Рис.
5. Блок настройки периферийного ШИМ-модуля и окно его параметров.
Блоки передачи данных через UART .
Для управления и отладки программы я передаю и получаю данные через последовательный порт на компьютер.
Мастер — это особая хост-модель, о которой я расскажу позже.
В блоке приема данных (SCI Receive) настраиваются модуль UART, тип поступающих на него данных, разрядность, частота работы модуля и очередь FIFO на прием.
Вы также можете добавить идентификаторы в начало и конец посылки.
В блоке передачи (SCI Transmit) можно выбрать только модуль, добавить идентификаторы и настроить очередь FIFO для передачи.
Рис.
6. Периферийный блок приема данных (UART) и окно его параметров.
Рис.
7. Блок передачи данных периферии по UART и окно его параметров.
Пуск с разомкнутым контуром
Решение второй проблемы потребовало добавления еще одного режима работы – разомкнутого управления.Этот режим позволяет разогнать двигатель до тех пор, пока блок обработки сигнала от энкодера не поймает сигнал полного оборота.
Теперь мы знаем нулевое положение ротора и можем перейти к векторному управлению.
Алгоритм управления с разомкнутым контуром я видел в пример Набор блоков управления двигателем:
Рис.
8. Модель управления двигателем с разомкнутым контуром.
Поскольку был добавлен еще один режим, нам также пришлось включить в модель планировщик задач, построенный с использованием диаграммы Stateflow:
Рис.
9. Планировщик задач для управления режимами работы.
Он содержит четыре основных состояния: STANDBY - двигатель не вращается, OPENLOOP - двигатель вращается в разомкнутом контуре, CLOSEDLOOP - двигатель вращается в замкнутом контуре, CALIBRATION - калибровка энкодера.
Прежде чем мы сможем управлять нашим двигателем в замкнутом контуре, нам нужно пройти через состояние OPENLOOP. Когда мы поймали сигнал полного оборота, сигнал ChangeFlap принимает значение логической единицы и возможен переход в состояние CLOSEDLOOP. Чтобы просто откалибровать датчик положения, вы можете перейти в состояние КАЛИБРОВКА.
Итоговая модель алгоритма управления выглядит так:
Рис.
10. Модель системы управления электродвигателем, предназначенная для генерации кода.
Он состоит из следующих подсистем:
- АппаратныйИнит. Он содержит алгоритм калибровки АЦП во время инициализации программы.
- Светодиод сердцебиения.
Вспомогательная функция, сигнализирующая нам о том, что на микроконтроллере работает программа.
Для этого используется мигающий диод.
- Серийный прием.
В нем находится блок приема SCI, который обрабатывает данные, полученные от UART.
Рис.
11. Подсистема последовательного приема
- Обработка сигналов датчиков.
Он объединяет две подсистемы: «Вычисление фазных токов» и «Вычисление положения и скорости», которые описаны в предыдущем разделе.
статья .
- Система контроля.
Он содержит алгоритмы управления двигателем с разомкнутым и замкнутым контуром, а также планировщик задач.
- Инверторный драйвер.
Он включает в себя модули конфигурации ШИМ.
Рис.
12. Подсистема драйвера инвертора.
- Последовательная передача.
В нем находится блок SCI Transmit и обрабатываются данные, передаваемые через UART.
Рис.
13. Хост-модель С его помощью я генерирую пакет данных, в котором кодирую необходимый режим управления, скорость и количество сигналов, которые хочу передать в компьютер (скорость, положение, токи и т. д.).
Модель содержит несколько специальных блоков: Host Serial Setup, Host Serial Receive и Host Serial Transmit (находится в подсистеме Serial Send).
С помощью первого блока я настраиваю основные параметры UART-модуля: номер порта, скорость передачи данных, количество стоп-битов и т.д.
Рис.
14. Окно параметров блока Host Serial Setup. В блоке Host Serial Receive я указываю тип данных, передаваемых через порт, размер, идентификационные байты и рабочую частоту модуля приемника и другие параметры.
Рис.
15. Окно параметров блока Host Serial Receive. В последнем блоке указывается номер порта, а также можно добавить идентификационные байты.
Рис.
16. Окно параметров блока Host Serial Transmit.
Результаты
Проведя эксперимент и сравнив полученные данные с результатами моделирования, я получил практически точное совпадение переходных процессов по скорости (разница менее 2%).
Рис.
17. Сравнение переходных процессов по скорости.
Разница между диаграммами тока фазы А в эксперименте и при моделировании больше: около 7% в установившемся процессе.
Рис.
18. Сравнение диаграмм тока фазы А.
Заключение
Я надеюсь, что в этой и предыдущих статьях мне удалось продемонстрировать, что МОП является достаточно мощным инструментом при проектировании системы управления трехфазным двигателем.Я создал адекватную модель объекта управления (трехфазного двигателя), смоделировал векторный алгоритм управления, настроил контроллеры и автоматически сгенерировал из модели код для микроконтроллера.
Я увидел, что результаты, полученные при моделировании, практически совпадают с экспериментальными данными.
Ссылки
- Оптимизация контуров управления системами электропривода по симметричному оптимуму.
Н.
В.
Кояин, О.
П.
Мальцева, Л.
С.
Удут
- Оптимизация контуров управления системами электропривода стандартными методами.
Н.
В.
Кояин, О.
П.
Мальцева, Л.
С.
Удут
-
Преимущества
19 Oct, 24 -
Сборка 2017: Текстовая Трансляция. День 2
19 Oct, 24 -
Красные Глаза Программиста
19 Oct, 24 -
Облако 1С. Все Безоблачно
19 Oct, 24 -
Последние Тенденции В Мире Платежей
19 Oct, 24 -
Видения Ближайшего Будущего
19 Oct, 24