Методы эффективного управления инверторами напряжения в приводах переменного тока презентация

Содержание

Слайд 2

ШИМ-модуляция базовых векторов

Структура типового инвертора для управления 3-х фазным двигателем

ШИМ-модуляция базовых векторов Структура типового инвертора для управления 3-х фазным двигателем

Слайд 3

ШИМ-генератор

Выбор между классической и «векторной» ШИМ-модуляцией

ШИМ-генератор Выбор между классической и «векторной» ШИМ-модуляцией

Слайд 4

Модуль ШИМ контроллера F28x

Таймер Т1 – является базовым для менеджера событий A, на

базе которого реализуется векторная ШИМ.
T1CON – регистр управления таймером T1.
COMCONA – регистр управления модулем сравнения.
ACTRA – регистр управления блоком формирования вектора и выходной логикой:
– биты 12÷14 (D2, D1, D0) определяют начальный базовый вектор;
– бит 15 (SVRDIR) определяет последовательность перебора базовых векторов (против/по часовой стрелке);
– остальные биты определяют полярность работы выходов PWM1-PWM6
DBTCONA – регистр управления генератором «мёртвого» времени.

Модуль ШИМ контроллера F28x Таймер Т1 – является базовым для менеджера событий A,

Слайд 5

Асимметричная ШИМ

Задержка переднего фронта для активного высокого!

Асимметричная ШИМ Задержка переднего фронта для активного высокого!

Слайд 6

Центрированная ШИМ

Задержка заднего фронта для активного низкого!

Центрированная ШИМ Задержка заднего фронта для активного низкого!

Слайд 7

Состояния инвертора и базовые вектора

Состояния инвертора и базовые вектора

Слайд 8

Состояния инвертора и базовые вектора

Состояния инвертора и базовые вектора

Слайд 9

Векторная ШИМ

Из условия инвариантности мгновенных значений электрических величин:

Векторная ШИМ Из условия инвариантности мгновенных значений электрических величин:

Слайд 10

ШИМ-модуляция базовых векторов

Базовые вектора- в одной стойке включен только один ключ

ШИМ-модуляция базовых векторов Базовые вектора- в одной стойке включен только один ключ

Слайд 11

6 состояний, 6 базовых векторов

6 состояний, 6 базовых векторов

Слайд 12

Векторная ШИМ

Для получения синусоидального напряжения постоянной амплитуды годографом вектора напряжения должна являться вписанная

в шестиугольник окружность, при этом:

Векторная ШИМ Для получения синусоидального напряжения постоянной амплитуды годографом вектора напряжения должна являться

Слайд 13

Сравнение эффективности центрированной и векторной ШИМ-модуляции

Классическое управление в режиме
центированной ШИМ-модуляции

Управление в режиме

«векторной» ШИМ-модуляции

Сравнение эффективности центрированной и векторной ШИМ-модуляции Классическое управление в режиме центированной ШИМ-модуляции Управление

Слайд 14

Реализация «векторной» ШИМ на базе центрированной

Реализация «векторной» ШИМ на базе центрированной

Слайд 15

Реализация одного вектора двумя способами

Реализация одного вектора двумя способами

Слайд 16

Слайд 17

Слайд 18

Слайд 19

Слайд 20

Бутстрепное питание драйвера ключа

Бутстрепное питание драйвера ключа

Слайд 21

6-секторная векторная ШИМ

6-секторная векторная ШИМ

Слайд 22

Определение сектора и скважностей

Вектор напряжения в относительных единицах:

В матричной форме (в осях α-β):

Тогда:

Определение сектора и скважностей Вектор напряжения в относительных единицах: В матричной форме (в осях α-β): Тогда:

Слайд 23

Определение сектора и скважностей

Для каждого сектора величины U*k,α, U*k+60,β, U*k+60,α, U*k,β являются постоянными:

Определение сектора и скважностей Для каждого сектора величины U*k,α, U*k+60,β, U*k+60,α, U*k,β являются постоянными:

Слайд 24

Определение сектора и скважностей

Введём вспомогательные переменные:

Тогда

Свяжем однозначно каждый базовый вектор с определённым сектором:

С

учётом этого, а также того, что γ≥0 и γ1≥0 можно определить знаки λ1, λ2 и λ3 для каждого сектора

Определение сектора и скважностей Введём вспомогательные переменные: Тогда Свяжем однозначно каждый базовый вектор

Слайд 25

Определение сектора и скважностей

В соответствии с этим можно составить итоговую таблицу, согласно которой

работает алгоритм определения сектора и скважностей базовых векторов по вычисленным значениям λ:

Определение сектора и скважностей В соответствии с этим можно составить итоговую таблицу, согласно

Слайд 26

Ограничение вектора напряжения

Ограничение вектора на уровне максимальной амплитуды (постоянство фазы)

Ограничение вектора напряжения Ограничение вектора на уровне максимальной амплитуды (постоянство фазы)

Слайд 27

Инициализация Таймера 1

void PWM6SECT_Init(int period)
{
// Инициализируем регистр периода Таймера 1
EvaRegs.T1PR

= period;
// Настраиваем работу Таймера 1
// Вариант 1 (побитовая установка)
EvaRegs.T1CON.all = 0;
EvaRegs.T1CON.bit.TMODE = 1; // непрерывный счёт вверх-вниз
EvaRegs.T1CON.bit.TPS = 0; // делитель частоты = x/1
EvaRegs.T1CON.bit.TENABLE = 1; // разрешить работу таймера
// Вариант 2 (запись целиком всего регистра)
EvaRegs.T1CON.all =
TIMER_CONT_UPDN + \ // непрерывный счёт вверх-вниз
TIMER_CLK_PRESCALE_X_1 + \ // делитель частоты = x/1
TIMER_ENABLE; // разрешить работу таймера

Инициализация Таймера 1 void PWM6SECT_Init(int period) { // Инициализируем регистр периода Таймера 1

Слайд 28

Настройка «мёртвого» времени

// Настраиваем модуль генератора "мёртвого" времени
EvaRegs.DBTCONA.all =
DBT_VAL_15 +

\ // период генерации "мёртвого" времени (12 мкс)
EDBT1_EN + \ // разрешить генерацию "мёртвого" времени для PWM1/PWM2
EDBT2_EN + \ // разрешить генерацию "мёртвого" времени для PWM3/PWM4
EDBT3_EN + \ // разрешить генерацию "мёртвого" времени для PWM5/PWM6
DBTPS_X32; // делитель частоты = x/32

Настройка «мёртвого» времени // Настраиваем модуль генератора "мёртвого" времени EvaRegs.DBTCONA.all = DBT_VAL_15 +

Слайд 29

Настройка полярности выходов ШИМ

// Настраиваем поведение (полярность работы) выходов ШИМ
EvaRegs.ACTRA.all =
COMPARE1_AH

+ \ // PWM1 - активно "высокий" уровень
COMPARE2_AL + \ // PWM2 - активно "низкий" уровень
COMPARE3_AH + \ // PWM3 - активно "высокий" уровень
COMPARE4_AL + \ // PWM4 - активно "низкий" уровень
COMPARE5_AH + \ // PWM5 - активно "высокий" уровень
COMPARE6_AL; // PWM6 - активно "низкий" уровень

Настройка полярности выходов ШИМ // Настраиваем поведение (полярность работы) выходов ШИМ EvaRegs.ACTRA.all =

Слайд 30

Инициализация модуля сравнения

// Настраиваем модуль сравнения
EvaRegs.COMCONA.all =
CMPR_ENABLE + \ // разрешить операцию

сравнения
CMPR_LD_ON_ZERO + \ // перегружать регистры сравнения при T1CNT = 0 (underflow)
SVENABLE + \ // разрешить режим векторной ШИМ
ACTR_LD_ON_ZERO + \ // перегружать регистр ACTRA при T1CNT = 0 (underflow)
FCOMPOE; // разрешить выходы сравнения
// Инициализируем регистры сравнения
// Особенность модуля векторной ШИМ такова, что устройство сравнения не работает, если
// и CMPR1 = 0, и CMPR2 = 0, либо если CMPR1 > CMPR2; поэтому:
EvaRegs.CMPR1 = 1;
EvaRegs.CMPR2 = 2;

Инициализация модуля сравнения // Настраиваем модуль сравнения EvaRegs.COMCONA.all = CMPR_ENABLE + \ //

Слайд 31

Инициализация портов ввода/вывода

// Настраиваем нужные дискретные порты ввода/вывода на выполнение спецфункций
EALLOW;

// разрешить доступ к защищённым регистрам
GpioMuxRegs.GPAMUX.all = 0x003F; // PWM1-PWM6 выходы
EDIS; // запретить доступ к защищённым регистрам

Инициализация портов ввода/вывода // Настраиваем нужные дискретные порты ввода/вывода на выполнение спецфункций EALLOW;

Слайд 32

//Основная процедура модуля векторной ШИМ
void PWM6SECT_Update(
_iq UaRef, // задание выходного напряжения по

оси Alpha (отн.ед.)
_iq UbRef // задание выходного напряжения по оси Beta (отн.ед.)
)
{
long tmp;
_iq lambda1;
_iq lambda2;
_iq lambda3;
_iq knorm;
// Приводим компоненты заданного вектора напряжения к масштабу окружности,
// ограниченной базовыми векторами
UaRef = _IQmpy(UaRef, _IQ(0.866));
UbRef = _IQmpy(UbRef, _IQ(0.866));
// Проверяем и при необходимости ограничиваем вектор напряжения на уровне
// максимальной амплитуды синусоидального напряжения
knorm = _IQmag(UaRef, UbRef); // получаем текущую амплитуду вектора
if (knorm >= _IQ(0.866))
{
knorm = _IQdiv(_IQ(0.866), knorm); // получаем коэффициент коррекции
UaRef = _IQmpy(knorm, UaRef);
UbRef = _IQmpy(knorm, UbRef);
}
// Рассчитываем скважности базовых векторов непосредственно в единицах
// загрузки регистров сравнения
tmp = _IQmpy(_1_SQRT3, UbRef);
lambda1 = _IQmpy(EvaRegs.T1PR, (UaRef - tmp));
lambda2 = _IQmpy(EvaRegs.T1PR, 2*tmp);
lambda3 = lambda1 + lambda2;

//Основная процедура модуля векторной ШИМ void PWM6SECT_Update( _iq UaRef, // задание выходного напряжения

Слайд 33

// По расчитанным скважностям определяем номер сектора, величины загрузки
// регистров сравнения

и порядок перебора базовых векторов модуля векторной ШИМ
if (lambda1 <= 0)
{
if (lambda3 > 0) // Сектор 1
{
EvaRegs.CMPR1 = lambda3;
EvaRegs.CMPR2 = -lambda1+lambda3+1;
EvaRegs.ACTRA.all = 0x3666;
}
else if (lambda2 > 0) // Сектор 2
{
EvaRegs.CMPR1 = -lambda3;
EvaRegs.CMPR2 = -lambda3+lambda2+1;
EvaRegs.ACTRA.all = 0xE666;
}
else if (lambda1 != 0) // Сектор 3
{
EvaRegs.CMPR1 = -lambda1;
EvaRegs.CMPR2 = -lambda2-lambda1+1;
EvaRegs.ACTRA.all = 0x6666;
}
else // Сектор 4
{
EvaRegs.CMPR1 = lambda1;
EvaRegs.CMPR2 = lambda1-lambda3+1;
EvaRegs.ACTRA.all = 0xD666;
}
}

// По расчитанным скважностям определяем номер сектора, величины загрузки // регистров сравнения и

Слайд 34

else
{
if (lambda2 > 0)
{
// Сектор 0
EvaRegs.CMPR1 = lambda2;

EvaRegs.CMPR2 = lambda2+lambda1+1;
EvaRegs.ACTRA.all = 0xB666;
}
else if (lambda3 < 0)
{
// Сектор 4
EvaRegs.CMPR1 = lambda1;
EvaRegs.CMPR2 = lambda1-lambda3+1;
EvaRegs.ACTRA.all = 0xD666;
}
else
{
// Сектор 5
EvaRegs.CMPR1 = -lambda2;
EvaRegs.CMPR2 = lambda3-lambda2+1;
EvaRegs.ACTRA.all = 0x5666;
}
}
}

else { if (lambda2 > 0) { // Сектор 0 EvaRegs.CMPR1 = lambda2;

Слайд 35

Коррекция амплитуды вектора

// Приводим компоненты заданного вектора напряжения к масштабу окружности,
//

ограниченной базовыми векторами
UaRef = _IQmpy(UaRef, _IQ(0.866));
UbRef = _IQmpy(UbRef, _IQ(0.866));
// Проверяем и при необходимости ограничиваем вектор напряжения на уровне
// максимальной амплитуды синусоидального напряжения
knorm = _IQmag(UaRef, UbRef); // получаем текущую амплитуду вектора
if (knorm >= _IQ(0.866))
{
knorm = _IQdiv(_IQ(0.866), knorm); // получаем коэффициент коррекции
UaRef = _IQmpy(knorm, UaRef);
UbRef = _IQmpy(knorm, UbRef);
}

Коррекция амплитуды вектора // Приводим компоненты заданного вектора напряжения к масштабу окружности, //

Слайд 36

Расчёт скважности базовых векторов

// Рассчитываем скважности базовых векторов непосредственно в единицах
//

загрузки регистров сравнения
tmp = _IQmpy(_1_SQRT3, UbRef);
lambda1 = _IQmpy(EvaRegs.T1PR, (UaRef - tmp));
lambda2 = _IQmpy(EvaRegs.T1PR, 2*tmp);
lambda3 = lambda1 + lambda2;

#define _1_SQRT3 _IQ(0.5773503)

Расчёт скважности базовых векторов // Рассчитываем скважности базовых векторов непосредственно в единицах //

Слайд 37

Определение номера сектора и скважностей

// По расчитанным скважностям определяем номер сектора, величины

загрузки
// регистров сравнения и порядок перебора базовых векторов модуля векторной ШИМ
if (lambda1 <= 0)
{
if (lambda3 > 0)
{
// Сектор 1
EvaRegs.CMPR1 = lambda3;
EvaRegs.CMPR2 = -lambda1+lambda3+1;
EvaRegs.ACTRA.all = 0x3666;
}
else if (lambda2 > 0)
{
// Сектор 2
……………………………………………………………

Определение номера сектора и скважностей // По расчитанным скважностям определяем номер сектора, величины

Имя файла: Методы-эффективного-управления-инверторами-напряжения-в-приводах-переменного-тока.pptx
Количество просмотров: 29
Количество скачиваний: 0