реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
Sanes
сообщение Sep 16 2017, 20:33
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 18-07-15
Пользователь №: 87 623



Добрый вечер!
Возникла проблема с компинсацией 300 Гц состовляющей на выходе ИП.
Таймер генерирует ШИМ (который компенсирует 300 Гц синус) с запаздованием на 1/4 периода . Т.е. запаздывание от момента начала преобразования АЦП до момента выдачи таймером ШИМ с компенсацией состовляет 0.5мс.
Алгоритм преобразования - таймер генерит прерывание АЦП, в обработчике прерывания происходят расчеты ,которые передаются на таймер.
Частота ШИМ 200кГц.
Длительность прерывания 3 мкс при периоде ШИМ 5 мкс.
Попробовал АЦП запускать без прерывания, а прерывание делать от таймера - величена задержки не изменилась.
Go to the top of the page
 
+Quote Post
1113
сообщение Sep 17 2017, 06:19
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



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

P.S. Sanes, сколько вам лет?
Go to the top of the page
 
+Quote Post
Sanes
сообщение Sep 17 2017, 20:19
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 18-07-15
Пользователь №: 87 623



Имеется источник питания с входом 3/380 В и выходом 48 В (постоянный ток).
Управление осуществляется с помощью микроконтроллера STM32F334.
После выпрямления и фильтрации входного переменного тока, в цепи постоянного тока (540 В) остается переменная составляющая около 40 В при 300 Гц.
Далее стоят 2 транзистора по топологии «полумост», понижающий трансформатор и выходной фильтр.
Проблема в том , что система управления на основе микроконтроллера не компенсирует (не сглаживает) переменную составляющую цепи постоянного тока.
Происходит это из-за того , что огибающая ШИМ сигнала, которая должна компенсировать (сгладить) переменную составляющую, опаздывает от от этой переменной составляющей на ¼ периода.
И вместо того чтобы её компенсировать , она наоборот её увеличивает.
В идеале огибающая ШИМ должна находится в противофазе с переменой составляющей.
По примерным расчетом запаздывание составляет 0.5 мс, частота ШИМ 200кГц.
Обработка сигнала происходит следующим образом.
По таймеру запускается прерывание по АЦП. Далее в обработчике прерывания происходят расчёты скважности ШИМ в зависимости от ошибки выходного сигнала относительного опорного.
Потом полученный результат подается на таймер для формирования ШИМ.
Длительность прерывания составляет 3 мкс при периоде ШИМ 5 мкс.
У меня вызывает затруднение понять, почему происходит такая большая задержка ?

Go to the top of the page
 
+Quote Post
1113
сообщение Sep 17 2017, 21:49
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



Цитата(Sanes @ Sep 17 2017, 23:19) *
АЦП

схему обратной связи покажите

Цитата(Sanes @ Sep 17 2017, 23:19) *
Далее в обработчике прерывания происходят расчёты скважности ШИМ в зависимости от ошибки выходного сигнала относительного опорного.

и это тоже покажите
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 18 2017, 05:59
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Sanes @ Sep 18 2017, 03:19) *
Далее в обработчике прерывания происходят расчёты скважности ШИМ

Цитата(Sanes @ Sep 18 2017, 03:19) *
Длительность прерывания составляет 3 мкс при периоде ШИМ 5 мкс.
У меня вызывает затруднение понять, почему происходит такая большая задержка ?

Как вариант: "расчёты скважности" производятся на программно-эмулируемой плавучке.

PS: А вообще - отладчик позволяет посмотреть количество тактов, затрачиваемое на каждую инструкцию или группу инструкций.
Go to the top of the page
 
+Quote Post
Forger
сообщение Sep 18 2017, 06:09
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Sanes @ Sep 17 2017, 23:19) *
У меня вызывает затруднение понять, почему происходит такая большая задержка ?

Есть смысл смоделировать мат. модель в соотв. среде (матлабе например) и уже потом запихивать ее в контроллер.
Можно пойти другим путем: упрощать программу (расчеты), чтобы локализовать источник задержки.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
khach
сообщение Sep 19 2017, 09:17
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Просчитайте таблицу коррекций для одного периода сетевого напряжения и в следующем периоде выдавайте табличные данные без задержки. В это же врямя готовьте таблицу для следующего периода на основании ошибок текущего.
Go to the top of the page
 
+Quote Post
Sanes
сообщение Nov 1 2017, 17:21
Сообщение #8





Группа: Участник
Сообщений: 10
Регистрация: 18-07-15
Пользователь №: 87 623



Извиняюсь за долгий ответ.
Частично вопрос разрешился. В RC цепочки (для определения огбающей ШИМ) стоял конденсатор с слишком большой ёмкостью .
Вот часть кода позаимствованного и переделанного из примеров STM.

CODE
int32_t seterr, pid_out;
int32_t error;

error = Vout - Vref;
seterr = (-Kp * error) / 200;
term_Volt = term_Volt + ((-Ki * error) / 200);

if (term_Volt > SAT_LIMIT)//B40
{
term_Volt = SAT_LIMIT;
}
if (term_Volt < -(SAT_LIMIT))
{
term_Volt = -(SAT_LIMIT);
}

dif = (-Kd*(error-error_old))/200;

pid_out = seterr + term_Volt + dif ;
pid_out += 5760;//5760 максимальное скважность ШИМ.

if (pid_out >= MAX_DUTY_A)//B40
{
pid_out = MAX_DUTY_A;
}

if (pid_out < MIN_DUTY_A)//480
{
pid_out = MIN_DUTY_A;
}
CurrentDutyA = pid_out;
__HAL_HRTIM_SETCOMPARE(&hhrtim, HRTIM_TIMERINDEX_TIMER_C, HRTIM_COMPAREUNIT_2, CurrentDutyA);

Схема входной цепи





В данный момент проблема состоит в том что не получается качественно настроить ПИД регулятор.
При Кр относитльно большом (30...50) амплитуда колебаний уменьшается в разы ,но появляются треугольники с увеличеной частотой 600...900 Гц
Если уменьшить Кр (10...3) - синусоида компенсируется плохо см. на фото , нижняя осциллограмма.




Сообщение отредактировал IgorKossak - Nov 1 2017, 18:26
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 1 2017, 20:13
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Sanes @ Nov 1 2017, 20:21) *
Извиняюсь за долгий ответ.
Частично вопрос разрешился.

На самом деле не все упирается в прерывания. Чтобы при помощи ОС подавлять пульсации, нужно чтобы эти пульсации попадали в полосу пропускания ОС.
А для этого, надо понимать то, как пройдет ЛАХ. В ОС у Вас сначала RC фильтрик, потом АЦП и Микроконтроллер. Так вот, надо понимать, кто задает первую постоянную времени. Либо эта RC цепочка, либо интегратор в МК, либо силовой фильтр.
Если хотите, могу по скайпу показать, что примерно у Вас может быть...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Obam
сообщение Nov 2 2017, 07:30
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(iosifk @ Nov 2 2017, 00:13) *
На самом деле не все упирается в прерывания. Чтобы при помощи ОС подавлять пульсации, нужно чтобы эти пульсации попадали в полосу пропускания ОС.
А для этого, надо понимать то, как пройдет ЛАХ. В ОС у Вас сначала RC фильтрик, потом АЦП и Микроконтроллер. Так вот, надо понимать, кто задает первую постоянную времени. Либо эта RC цепочка, либо интегратор в МК, либо силовой фильтр.
Если хотите, могу по скайпу показать, что примерно у Вас может быть...

А для всех запись можно выложить?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 2 2017, 08:07
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Obam @ Nov 2 2017, 10:30) *
А для всех запись можно выложить?

Попробую сделать...
Но общая идея такая.
Есть 3 "золотые точки".
Я вместо "круговой" буду просто говорить "частота".
Крайне-правая - это частота коммутации транзисторов. Это по "горизонтали". А по "вертикали" откладываем вниз 60-80 Дб в соответствии с тем, насколько хотим подавить пульсации на частоте квантования силовым фильтром. И через эту точку ЛАХ пройдет под углом, как минимум соотв. степени силового фильтра. Правда туда могут добавиться еще -20Дб/дек от цепи коррекции...
Крайне-правая - это там где 0 частота. А по "вертикали" берем вверх столько, сколько хотит получить точность в статике. Т.е. например при подавлении ошибки в 100 раз это будет 40 Дб. При статическом регуляторе ЛАХ через эту почку пройдет горизонтально.
И третья точка - это где ЛАХ пересекает 0 Дб. Там его наклон должен быть не более -20Дб/дек, иначе будет колебательность. По горизонтали этот кусок ЛАХа должен иметь запасы, чтобы был запас по фазе.
А еще надо учесть добротность силового фильтра, потому как он при хорошей добротности в точке излома имеет подъем, который может привести к неустойчивости...
Вот попробуйте хотя бы грубо нарисовать эти куски и увидите счастье...
А чтобы его "услышать" я когда-то вместо нагрузки включил колонки. В ОС, на самом входе вешается огромный конденсатор, чтобы стабилизировать только "постоянку", а вот сразу после него в ОС подается сигнал от генератора. И снимается полоса пропускания ОС и силового тракта... И тогда уже видно сигналы каких частот и амплитуд через них могут пройти...

А ТС давал показания "частота ШИМ 200кГц". Только чую я, что это не частота ШИМ, на которой работает счетчик периода ШИМ. И если счетчик считает хотя бы до 100, то это значит, что ШИМ может реализовать изменение сигнала не более чем в 20 кгц... А это очень мало...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Sanes
сообщение Nov 6 2017, 14:56
Сообщение #12





Группа: Участник
Сообщений: 10
Регистрация: 18-07-15
Пользователь №: 87 623



Так как я в теории ТАУ плохо ориентируюсь, было бы хорошо если выложете наглядное видео или картинки.

Частота обновления ШИМ 100 КГц . Частота импуьсов 200 КГц. Именно с такой частотой оцифровыется сигнал и запускаеться прерывание. Это всё проверялось.
Счётчик таймера считает до 5760.

Вопрос модераторам. Можно ли переместить тему в другой раздел?
Go to the top of the page
 
+Quote Post
amiller
сообщение Nov 6 2017, 15:43
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(Sanes @ Nov 6 2017, 17:56) *
Так как я в теории ТАУ плохо ориентируюсь, было бы хорошо если выложете наглядное видео или картинки.

Частота обновления ШИМ 100 КГц . Частота импуьсов 200 КГц. Именно с такой частотой оцифровыется сигнал и запускаеться прерывание. Это всё проверялось.
Счётчик таймера считает до 5760.

Вопрос модераторам. Можно ли переместить тему в другой раздел?

Достаточно ориентироваться немного в физике, немного в математике.
Стоит напомнить, и неплохо проверить, что если обновляете относительную длительность ШИМ с частотой 100кГц, то у Вас на всю обработку 10мкс.
Т.е. чтобы алгоритм управление хоть как то работал, нужно, чтобы время обработки прерывания не превышало 70-80% от этого времени, т.е. не более 7-8мкс. Проверяли это?
Далее:
Вас спрашивали про таймер, который Вы используете для формирования PWM.
У STM32 таймера достаточно тупенькие и не могут работать на частотах выше тактовой ядра.
Если у Вас частота ШИМ 200кГц и при этом таймер считает до 5760.
Это должно бы было означать, что частота ядра равна 5760 * 200000 = 1152 МГц.
Такого быть не может, поэтому следует уточнить Ваши ответы.
А вообще при проектировании ШИМ контроллеров на базе МК нужно чётко представлять длительности и частоты всех процессов.
А особенно работу критичных по времени модулей, таки как PWM и ADC.
Go to the top of the page
 
+Quote Post
Sanes
сообщение Nov 6 2017, 21:30
Сообщение #14





Группа: Участник
Сообщений: 10
Регистрация: 18-07-15
Пользователь №: 87 623



Длительность прерывания проверял - 3 мкс.
В расчёт надо принимать частоту таймера а не ядра. В таймере есть модуль умножения частоты.
"fHRTIM x 8U = 1.152 GHz - Resolution: 868 ps - Min PWM frequency: 17.6 kHz (fHRTIM=144MHz)"

Go to the top of the page
 
+Quote Post
amiller
сообщение Nov 7 2017, 02:29
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(Sanes @ Nov 7 2017, 00:30) *
Длительность прерывания проверял - 3 мкс.
В расчёт надо принимать частоту таймера а не ядра. В таймере есть модуль умножения частоты.
"fHRTIM x 8U = 1.152 GHz - Resolution: 868 ps - Min PWM frequency: 17.6 kHz (fHRTIM=144MHz)"

Ок. Я просто не пытался использовать STM32 для сложных проектов. Там где нужен ШИМ на высокой частоте, мой выбор - Texas.
Но если таймер этого семейства STM32 может работать в режиме Hi Resolution, то вопрос по этому поводу снимается.
Если у Вас частота обновления ШИМ 100кГц, то вся обработка данных (и все измерения), задействованных для расчётов ШИМ, должна проводится с этой частотой.
Если у Вас по факту задержки сравнимы с частотой сети, то вероятно в алгоритм где то затесались параметры, которые рассчитываются с этой частотой.
RMS или что-то подобное. Проверьте ещё раз код, чудес не бывает.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 13:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01523 секунд с 7
ELECTRONIX ©2004-2016