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

Содержание

Слайд 2

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

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

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

Слайд 3

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

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

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

Слайд 4

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

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

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

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

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; // разрешить работу таймера
Слайд 28

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

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

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

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

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

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

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

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

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

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

// Настраиваем модуль сравнения
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;
Слайд 31

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

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

// Настраиваем нужные дискретные порты ввода/вывода на выполнение

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

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

//Основная процедура модуля векторной ШИМ
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;
Слайд 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

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;
}
}
}
Слайд 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
Количество просмотров: 37
Количество скачиваний: 0