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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Восстановление угла вектора по проекциям, Как правильно применить PLL для этой задачи?
RHnd
сообщение Jan 16 2015, 08:30
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Добрый день!

Есть некоторый вращающийся вектор с амплитудой A и фазой f: A*exp(f*i). Мне поступают измерения его проекций, т.е. x=Acos(f) и y=Asin(f), нужно по этим измерениям восстановить угол f. Так как измерения могут быть немного зашумленные, да и по другим причинам, нахождение в лоб арктангенса не приветствуется, хочется использовать некоторый динамический фильтр-наблюдатель. Нашел наводку, что для решения этой задачи на практике часто используется Phased Locked Loop, но беглый поиск не привел к конкретным схемам/формулам, хотя, по ощущениям, это должно быть что-то очень стандартное. Не хочется самому изобретать велосипед, может кто-то подскажет решение?
Go to the top of the page
 
+Quote Post
Mc_off
сообщение Jan 16 2015, 09:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-01-07
Из: Ростовская область
Пользователь №: 24 044



Можно решить с помощью 2-х таблиц и, если надо, фильтра. В таблицах хранить значения угла, соответствующие отношению x/y и y/x (т.к. есть проблемы с арктангенсом 90 град.)...

А насчет PLL... Делаете генератор, управляемый сигналом ошибки с фазового детектора, на один вход которого измеряемый сигнал, а на другой сам генератор. Сигнал ошибки фазового детектора фильтруют. Вот посмотрите: http://www.dsplib.ru/content/dpll/dpll.html
Но для получения значения именно угла, вам всё равно придется считать арктангенс.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jan 16 2015, 09:18
Сообщение #3


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(RHnd @ Jan 16 2015, 12:30) *
для решения этой задачи на практике часто используется Phased Locked Loop


Понятие PLL ничего конкретного не означает. Обычно PLL+VCO это аналоговая схема, эмулировать же её в цифре глупо, поскольку в конечном итоге она представляет собой некий фильтр.
Правильнее сразу и делать фильтр традиционными методами.
А какой — целиком и полностью зависит от двух факторов::
- статистики искажений фильтруемого сигнала
- выбранного критерия оценки результата
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 16 2015, 09:28
Сообщение #4


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



1. Чтобы из проекций получить угол, так или иначе придется выполнять операцию арктангенс или арксинус. Что с PLL, что без.

2. Прежде чем городить огород с PLL, стоит попробовать такую схему: отфильтровать каждую из проекций с помощью фнч, а лишь потом выполнять операцию арктангенса.
Выбор параметров фнч зависит от свойтсв сигнала и свойств шума и, как уже было сказано, критериев оценки результата


Цитата(RHnd @ Jan 16 2015, 09:30) *
Go to the top of the page
 
+Quote Post
serjj
сообщение Jan 16 2015, 12:37
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Еще, если есть какие либо априорные знания о характере фазы на выходе алгоритма, можно сделать фильтрацию и после арктангенса. Например: известно, что у исходного сигнала присутствует постойнный линейный набег фазы, следовательно из зашумлённой фазы можно найти линию наклона методом наименьших квадратов. Или, как в случае ФМ/ЧМ фаза переносит полезный сигнал, полоса которого как правило меньше полосы входного x/y сигнала. Тогда, поставив дополнительный ФНЧ после вычисления фазы, можно уменьшить влияние шума.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 16 2015, 13:40
Сообщение #6


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Это хороший юмор, ага.
в качестве упражения для метода наименьших квадратов:
Диапазоном допустимых значений фазы -pi..pi
I(t) = -1 + wgn(t)
Q(t) = 0 + wgn(t)
т.е. фаза колышется около pi.

Цитата(serjj @ Jan 16 2015, 13:37) *
Еще, если есть какие либо априорные знания о характере фазы на выходе алгоритма, можно сделать фильтрацию и после арктангенса. Например: известно, что у исходного сигнала присутствует постойнный линейный набег фазы, следовательно из зашумлённой фазы можно найти линию наклона методом наименьших квадратов. Или, как в случае ФМ/ЧМ фаза переносит полезный сигнал, полоса которого как правило меньше полосы входного x/y сигнала. Тогда, поставив дополнительный ФНЧ после вычисления фазы, можно уменьшить влияние шума.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Jan 16 2015, 17:52
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Спасибо за ответы! Но, к сожалению, это не совсем то, что я ищу. Давайте на момент забудем про шумы измерений и предположим, что доступны измерению честные x и y. Как можно восстановить угол, не прибегая к алгебраической или табличной процедуре нахождения арктангенса? Мне представляется, что можно построить некоторую следящую систему, которая будет минимизировать вектор разности между поступающим вектором и его оценкой. Детали, я еще не прорабатывал и не знаю, получится ли.
Go to the top of the page
 
+Quote Post
stealth-coder
сообщение Jan 16 2015, 18:45
Сообщение #8


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

Группа: Участник
Сообщений: 112
Регистрация: 27-12-08
Пользователь №: 42 786



Ключевой вопрос - а зачем отказываться от использования алгебры или таблицы?
Поставьте ПРОБЛЕМУ, тогда есть шанс услышать от кого-нибудь подходящее решение.
Например: ресурсов вот столько, как вычислить фазу?
Возможно, что Вы и сами не знаете в чем собственно ПРОБЛЕМА, поэтому и не можете найти решение.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Jan 16 2015, 18:56
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Прикинул немного. Амплитуда нам не важна, она легко оценивается. Так что для простоты предположим, что амплитуда равна единице. Итак, путь x_0 и y_0 - измеряемые величины. Пусть phi_1 - оценка угла. Тогда сформируем x_1=cos(phi_1) и y_1=sin(phi_1). Повернем измеряемый вектор на pi/2 и найдем скалярное произведение повернутого вектора с нашей оценкой, получим косинус угла между ними. Так как вектор повернут на pi/2, то этот косинус совпадает с синусом угла между измерением и оценкой, правильно? А дальше как раз PLL - по измерению синуса разности угла свести эту разность к нулю.

Цитата(stealth-coder @ Jan 16 2015, 21:45) *
Ключевой вопрос - а зачем отказываться от использования алгебры или таблицы?

Никакой проблемной причины нет, хочется оценить палитру вариантов, посмотреть разные методы. Я, например, не знаю, как обычно решают эту задачу на практике.
Go to the top of the page
 
+Quote Post
Mc_off
сообщение Jan 16 2015, 19:03
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-01-07
Из: Ростовская область
Пользователь №: 24 044



Цитата(RHnd @ Jan 16 2015, 20:52) *
... Мне представляется, что можно построить некоторую следящую систему, которая будет минимизировать вектор разности между поступающим вектором и его оценкой...


Следящая система будет на выходе давать такие же квадратуры, которые будут оценками исходных квадратур. И снова встанет вопрос пересчета проекций вектора (квадратур) в полярную систему координат. Т.е. нет необходимости городить ФАПЧ. У Вас уже есть проекции вектора. Осталось только пересчитать.
Причем, если делать следящую систему цифровую (DPLL), то избавиться от джиттера или вандера практически невозможно, т.е. будет дрожание фазы сигнала-оценки. Т.е. лишнее уменьшение точности вычислений.

Цитата(RHnd @ Jan 16 2015, 21:56) *
... как обычно решают эту задачу на практике.


Сильно зависит от частоты, например. От исходных данных.
Если у вас вектор крутится с частотой 10ГГц, то в лоб, цифрой весьма проблематично wink.gif

А ещё интересно зачем именно угол. Для задач демодуляции, например, нужен не угол, а изменение угла... а это немного другая задача. Вот там PLL применяется во весь рост.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Jan 16 2015, 19:15
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Mc_off @ Jan 16 2015, 22:03) *
А ещё интересно зачем именно угол. Для задач демодуляции, например, нужен не угол, а изменение угла... а это немного другая задача. Вот там PLL применяется во весь рост.

Угол то стоит на месте, то относительно медленно вращается. Задача, на сколько я понимаю, пришла из электрических машин, из бездатчикового управления. Я всех деталей не знаю, мне задачу коллеги подкинули. sm.gif
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Jan 16 2015, 20:24
Сообщение #12


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Это многое объясняет, конечно

Цитата(RHnd @ Jan 16 2015, 20:15) *
Я всех деталей не знаю...

Go to the top of the page
 
+Quote Post
RHnd
сообщение Jan 16 2015, 21:08
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(RHnd @ Jan 16 2015, 21:56) *
Прикинул немного. Амплитуда нам не важна, она легко оценивается. Так что для простоты предположим, что амплитуда равна единице. Итак, путь x_0 и y_0 - измеряемые величины. Пусть phi_1 - оценка угла. Тогда сформируем x_1=cos(phi_1) и y_1=sin(phi_1). Повернем измеряемый вектор на pi/2 и найдем скалярное произведение повернутого вектора с нашей оценкой, получим косинус угла между ними. Так как вектор повернут на pi/2, то этот косинус совпадает с синусом угла между измерением и оценкой, правильно? А дальше как раз PLL - по измерению синуса разности угла свести эту разность к нулю.


Собрал схему в симулинке, работает. Если кому-то интересно, то могу выложить или выслать. Идея, как я и писал, - на основе комбинаций измеренных x,y и их оценок получить синус разности углов, а дальше стандартная следящая система.
PS: Да, кстати, шумит меньше алгебраического метода. Что особо заметно, как отметил Fat Robot, при углах, близких к pi.
Go to the top of the page
 
+Quote Post
canny
сообщение Jan 17 2015, 06:35
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 8-07-09
Пользователь №: 51 060



Цитата(RHnd @ Jan 16 2015, 21:15) *
Угол то стоит на месте, то относительно медленно вращается. Задача, на сколько я понимаю, пришла из электрических машин, из бездатчикового управления. Я всех деталей не знаю, мне задачу коллеги подкинули. sm.gif


Для бездатчикового управления в электроприводе потом попросят еще и амплитуду посчитать rolleyes.gif
Есть подозрение, что это векторное управление приводом. Там считают угол из синуса и косинуса http://en.wikipedia.org/wiki/Dqo_transformation, которые получают с датчика на валу двигателя.

Резких бросков фазы в приводе быть не может, поэтому переходы

А поскольку частота поступления новых данных явно не мегагерцы, то возникает вопрос а на чем на практике вы будете считать угол? Т.е. аппаратная платформа.
И еще вопрос - а какая разрядность входных данных?
Go to the top of the page
 
+Quote Post
RHnd
сообщение Jan 17 2015, 10:20
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(canny @ Jan 17 2015, 09:35) *
А поскольку частота поступления новых данных явно не мегагерцы, то возникает вопрос а на чем на практике вы будете считать угол? Т.е. аппаратная платформа.
И еще вопрос - а какая разрядность входных данных?

Без понятия, если честно. Я уже несколько лет гораздо меньше занимаюсь решением конкретных инженерных задач, а гораздо больше разработкой общих методов в системах управления, научными исследованиями. Коллеги спросили, как можно по измерениям проекций построить динамический наблюдатель угла вектора, без явного вычисления арктангенса. Далее они, зная специфику своей задачи, рассмотрят разнообразные варианты и выберут более подходящий для их задачи.
Go to the top of the page
 
+Quote Post

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

 


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


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