|
|
  |
Преобразование Фурье и прогнозирование., Как сделать БПФ и ИБПФ, чтобы компенсировать в реальном времени. |
|
|
|
Jun 3 2008, 17:20
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Народ может кто подскажет? Работаем с сетью и компенсируем гармоники тока. В настоящий момент это работает следующим образом: Запоминается 1 период 20мс, затем из него получаем 1024точечное преобразование Фурье, выбираем нужные и выкидываем ненужные гармоники и делаем из этого обратное преобразование Фурье. В результате получается компенсирующий ток, который после вычитания тока сети дает синусоиду. Проблема в том, что из-за того, что Фурье требует время для подсчета, то результат всегда является устаревшим по отношению к текущему току и приходится задерживать воздействие на 1 период. Это нормально для пост. нагрузки, но при изменении нагрузки идет задержка на 1 период. Вопрос: можно ли как нибудь спрогнозировать с помощью преобразования Фурье или какими.то другими методами, какой будет сигнал на момент, когда все подсчитается, чтобы компенсировать в реальном времени?
|
|
|
|
|
Jun 4 2008, 09:23
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(syoma @ Jun 3 2008, 21:20)  Народ может кто подскажет? Работаем с сетью и компенсируем гармоники тока. В настоящий момент это работает следующим образом: Запоминается 1 период 20мс, затем из него получаем 1024точечное преобразование Фурье, выбираем нужные и выкидываем ненужные гармоники и делаем из этого обратное преобразование Фурье. В результате получается компенсирующий ток, который после вычитания тока сети дает синусоиду. Проблема в том, что из-за того, что Фурье требует время для подсчета, то результат всегда является устаревшим по отношению к текущему току и приходится задерживать воздействие на 1 период. Это нормально для пост. нагрузки, но при изменении нагрузки идет задержка на 1 период. Вопрос: можно ли как нибудь спрогнозировать с помощью преобразования Фурье или какими.то другими методами, какой будет сигнал на момент, когда все подсчитается, чтобы компенсировать в реальном времени? Вот лично мне непонятно почти все, что Вы написали, а также, что Вы хотите... Предсказывать будущее? Это к гадалкам - только они знают все причинно-следственные связи... в электросетях, в том числе...
|
|
|
|
|
Jun 4 2008, 10:22
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
 Есть нелинейные предсказатели, например, на основе нейронных сетей - но их надо предварительно учить (по минимуму целевой функции - например коэффициенту гармоник т.е. заставляя систему становиться линейной) и производительности процессора или ПЛИС должно быть дофига. Есть еще нелинейные эквалайзеры - задача их применения сводиться к предварительному построению адекватной нелинейной модели. Применяемыми же Вами, syoma, на данный момент методами - предугадать ничего не получится. Линейные "предугадатели" - несколько для иных целей  ... 2 Tanya: Саркастируете напрасно. Если гадалка представляет из себя цифровой автомат содержащий в себе адекватную модель системы на неком интервале времени и некотором диапазоне воздействий - чудо возможно! Все чудеса таятся в математике  ...
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Jun 4 2008, 10:51
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(DRUID3 @ Jun 4 2008, 14:22)  2 Tanya: Саркастируете напрасно. Если гадалка представляет из себя цифровой автомат содержащий в себе адекватную модель системы на неком интервале времени и некотором диапазоне воздействий - чудо возможно! Все чудеса таятся в математике  ... Завидую Вам - у меня что-то математические чудеса не получаются... только ошибки... Это сколько же надо учить автомат предсказывать аварии, например? Вы, если умеете, так должны в золоте ходить... Уже? P.S. "Нам не дано предугадать..."
|
|
|
|
|
Jun 5 2008, 14:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Все очень просто: На картинке сверху - исходный сигнал. Посередине - сигнал который получен после прямого преобразования фурье одного периода первого сигнала, затем первая гармоника была выкинута, а остальные гармоники прошли через инверсное БПФ. Третий сигнал представляет собой результат вычитания второго сигнала из первого. Теоретически должна получаться идеальная синусоида, но это не получается из.за задержек БПФ - и приходится все применать с задержкой в 1 период. То есть по каритнке примерно так: Первое БПФ происходит через на 20мс. При этом во входном буфере находится 1 период исходного сигнала. БПФ вытворяет указанные операцие и записывает в выходной буфер измененный сигнал. Так как сигнал не изменился с тех пор как произошло бпф, то наложение происходит успешно и получается синусоида. Дальше каждое БПФ и обновление выходного буфера производится каждые 10мс. Примерно на 38мс я отключил высокие гармоники - видно, что входной сигнал изменился. Но что выдает БПФ? БПФ на 50мс "видит" входной сигнал за последние 20мс, то есть 8мс сигнала с высокой гармоникой и 12мс сигнала без высокой гармоники. Естественно на выходе получается 8мс неправильного сигнала и 12мс правильного. И в итоге синусоида получается только на 58мс. Вот и вопрос как сказать БПФ, что сигнал уже изменился? Толи с других точек информацию брать,то ли не знаю. С генератором непонятно как его настраивать.
|
|
|
|
|
Jun 5 2008, 16:43
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(syoma @ Jun 3 2008, 21:20)  Вопрос: можно ли как нибудь спрогнозировать с помощью преобразования Фурье или какими.то другими методами, какой будет сигнал на момент, когда все подсчитается, чтобы компенсировать в реальном времени? Если нужно компенсировать гармоники в реалтайме и без задержек, то и выделять их надо без задержек. Есть такой термин: алгоритмическая задержка. Вводится он для того, чтобы показать нижнюю грань запаздывания результата по отношению к исходным данным. Мощность вычислителя считается при этом бесконечной (время на "абсчёт"=0, задержки АЦП и ЦАП также =0). Кстати, интересно было бы знать, какой конкретно АЦП Вы применяете. Выделение гармоники и её компенсация должны производиться с нулевой алгоритмической задержкой. Это означает выделение гармоник прямым вычитанием. "Мгновенную" компенсацию, однако, сделать невозможно практически, из-за конечной мощности вычислителя и ненулевым запаздыванием в процессах А-Ц-А преобразования. Поэтому, как и писали уже, нужно сделать адаптивный генератор с достаточно малым временем адаптации (скорее всего, её нужно будет делать нелинейной, с разными скоростями на стационарных и переходных участках). Собственно, он и будет решать задачу прогнозирования. Опять-таки, из-за конечности времени вычислительных задержек, в нестационарных условиях эффективно могут быть подавлены только низшие гармоники. Цитата(Tanya @ Jun 4 2008, 13:23)  Вот лично мне непонятно почти все, что Вы написали, а также, что Вы хотите... Предсказывать будущее? Это к гадалкам - только они знают все причинно-следственные связи... в электросетях, в том числе... Таня, вместо того, чтобы флудить, изучите, например, как работает усилитель с отрицательной обратной связью. Обратная связь она тоже, того, будущего не знает.  Однако, усилитель всё же работает. .......................................................................... Данную задачу можно решить и в аналоге. Получится проще, и, по-моему, гораздо точнее и надёжнее. Если есть интерес - могу рассказать подробнее, как это нужно делать.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Jun 5 2008, 16:48
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
2 syoma: Никак. БПФ(ДПФ) блочный линейный лгоритм. Предсказывать будущее он не сможет никак, и в этом аспекте Tanya была абсолютно права. У Вас есть на выбор два пути: 1) путь падавана - применить линейную адаптивную фильтрацию ненужных гармоник (как посоветовали в постах повыше) - хватит простейшей в виде ФАПЧ. Только алгоритм должен быть FIFO(непрерывный) - фильтр Герцеля, например  . 2) путь великого мастера-джедая - применить компенсатор нелинейности (выраженный у Вас в лишних спектральных компонентах). Его приимущества - это "застывшая"(время отработки практически неизменно в отличие от адаптивной фильтрации) модель содержащая "антимодель" Вашей устаноки(ну того, что продуцирует эту синусоиду с гармониками). Это тоже не блочный метод  ... Кстати, блок с высоким наличием помехи возникающий при резком перепаде в соотношении сигнал/помеха - то что у Вас получилось в данном случае - это ближайший родственник "артефактов" преследующих оконные алгоритмы с гармоническими функциями (Фурье, косинусное и т.д. преобразования) во всех областях применения - аудиокодеки, видео кодирование и т.д. От этого есть панацея - и зовется она - вейвлеты  ... Это я говорю наслучай если без блочности - никак... Предугадывать все-равно не получится, но получится эффективнее обрабатывать детали внутри блока непрерывным (опять же) адаптивным алгоритмом. Но думаю для этого случая - это из фазера по беззащитным ни в чем не повинным воробьям  ... Цитата(petrov @ Jun 5 2008, 19:20)  БПФ здесь не к чему вообще. Спомощью ФАПЧ и АРУ вы можете подстроить местный генератор и вычесть первую гармонику или фильтром её выделить и вычесть получив таким образом сигнал с ненужными гармониками. Непонятно как вы собираетесь его потом вычитать, ведь это в матлабе всё так идеально получается, в реальности же будут непредсказуемые задержки непредсказуемые коэффициенты передачи. Поэтому после вычитания нужно по обратной связи подстраивать адаптивный фильтр который который будет компенсировать непредсказуемые задержки и коэффициенты передачи, но сам адаптивный фильтр будет иметь задержку для реализуемости, а исходный сигнал из которого производите вычитание я так понимаю, вы задержать не можете. Частоты то невысокие. Главное чтобы процессор (или ПЛИСина) успевал отработать во временнОм промежутке между поступлением отсчетов. Цитата(Stanislav @ Jun 5 2008, 19:43)  .......................................................................... Данную задачу можно решить и в аналоге. Получится проще, и, по-моему, гораздо точнее и надёжнее. Если есть интерес - могу рассказать подробнее, как это нужно делать. Можно...но я так понял, что частоты то мизерные.
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|