|
Восстановление угла вектора по проекциям, Как правильно применить PLL для этой задачи? |
|
|
|
Jan 16 2015, 08:30
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Добрый день!
Есть некоторый вращающийся вектор с амплитудой A и фазой f: A*exp(f*i). Мне поступают измерения его проекций, т.е. x=Acos(f) и y=Asin(f), нужно по этим измерениям восстановить угол f. Так как измерения могут быть немного зашумленные, да и по другим причинам, нахождение в лоб арктангенса не приветствуется, хочется использовать некоторый динамический фильтр-наблюдатель. Нашел наводку, что для решения этой задачи на практике часто используется Phased Locked Loop, но беглый поиск не привел к конкретным схемам/формулам, хотя, по ощущениям, это должно быть что-то очень стандартное. Не хочется самому изобретать велосипед, может кто-то подскажет решение?
|
|
|
|
|
Jan 16 2015, 09:09
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 2-01-07
Из: Ростовская область
Пользователь №: 24 044

|
Можно решить с помощью 2-х таблиц и, если надо, фильтра. В таблицах хранить значения угла, соответствующие отношению x/y и y/x (т.к. есть проблемы с арктангенсом 90 град.)... А насчет PLL... Делаете генератор, управляемый сигналом ошибки с фазового детектора, на один вход которого измеряемый сигнал, а на другой сам генератор. Сигнал ошибки фазового детектора фильтруют. Вот посмотрите: http://www.dsplib.ru/content/dpll/dpll.htmlНо для получения значения именно угла, вам всё равно придется считать арктангенс.
|
|
|
|
|
Jan 16 2015, 09:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(RHnd @ Jan 16 2015, 12:30)  для решения этой задачи на практике часто используется Phased Locked Loop Понятие PLL ничего конкретного не означает. Обычно PLL+VCO это аналоговая схема, эмулировать же её в цифре глупо, поскольку в конечном итоге она представляет собой некий фильтр. Правильнее сразу и делать фильтр традиционными методами. А какой — целиком и полностью зависит от двух факторов:: - статистики искажений фильтруемого сигнала - выбранного критерия оценки результата
|
|
|
|
|
Jan 16 2015, 09:28
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691

|
1. Чтобы из проекций получить угол, так или иначе придется выполнять операцию арктангенс или арксинус. Что с PLL, что без. 2. Прежде чем городить огород с PLL, стоит попробовать такую схему: отфильтровать каждую из проекций с помощью фнч, а лишь потом выполнять операцию арктангенса. Выбор параметров фнч зависит от свойтсв сигнала и свойств шума и, как уже было сказано, критериев оценки результата Цитата(RHnd @ Jan 16 2015, 09:30) 
|
|
|
|
|
Jan 16 2015, 13:40
|
ʕʘ̅͜ʘ̅ʔ
    
Группа: Свой
Сообщений: 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 сигнала. Тогда, поставив дополнительный ФНЧ после вычисления фазы, можно уменьшить влияние шума.
|
|
|
|
|
Jan 16 2015, 17:52
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Спасибо за ответы! Но, к сожалению, это не совсем то, что я ищу. Давайте на момент забудем про шумы измерений и предположим, что доступны измерению честные x и y. Как можно восстановить угол, не прибегая к алгебраической или табличной процедуре нахождения арктангенса? Мне представляется, что можно построить некоторую следящую систему, которая будет минимизировать вектор разности между поступающим вектором и его оценкой. Детали, я еще не прорабатывал и не знаю, получится ли.
|
|
|
|
|
Jan 16 2015, 18:56
|
Знающий
   
Группа: Свой
Сообщений: 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)  Ключевой вопрос - а зачем отказываться от использования алгебры или таблицы? Никакой проблемной причины нет, хочется оценить палитру вариантов, посмотреть разные методы. Я, например, не знаю, как обычно решают эту задачу на практике.
|
|
|
|
|
Jan 16 2015, 19:03
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 2-01-07
Из: Ростовская область
Пользователь №: 24 044

|
Цитата(RHnd @ Jan 16 2015, 20:52)  ... Мне представляется, что можно построить некоторую следящую систему, которая будет минимизировать вектор разности между поступающим вектором и его оценкой... Следящая система будет на выходе давать такие же квадратуры, которые будут оценками исходных квадратур. И снова встанет вопрос пересчета проекций вектора (квадратур) в полярную систему координат. Т.е. нет необходимости городить ФАПЧ. У Вас уже есть проекции вектора. Осталось только пересчитать. Причем, если делать следящую систему цифровую (DPLL), то избавиться от джиттера или вандера практически невозможно, т.е. будет дрожание фазы сигнала-оценки. Т.е. лишнее уменьшение точности вычислений. Цитата(RHnd @ Jan 16 2015, 21:56)  ... как обычно решают эту задачу на практике. Сильно зависит от частоты, например. От исходных данных. Если у вас вектор крутится с частотой 10ГГц, то в лоб, цифрой весьма проблематично  А ещё интересно зачем именно угол. Для задач демодуляции, например, нужен не угол, а изменение угла... а это немного другая задача. Вот там PLL применяется во весь рост.
|
|
|
|
|
Jan 16 2015, 19:15
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(Mc_off @ Jan 16 2015, 22:03)  А ещё интересно зачем именно угол. Для задач демодуляции, например, нужен не угол, а изменение угла... а это немного другая задача. Вот там PLL применяется во весь рост. Угол то стоит на месте, то относительно медленно вращается. Задача, на сколько я понимаю, пришла из электрических машин, из бездатчикового управления. Я всех деталей не знаю, мне задачу коллеги подкинули.
|
|
|
|
|
Jan 16 2015, 21:08
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jan 17 2015, 06:35
|
Участник

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

|
Цитата(RHnd @ Jan 16 2015, 21:15)  Угол то стоит на месте, то относительно медленно вращается. Задача, на сколько я понимаю, пришла из электрических машин, из бездатчикового управления. Я всех деталей не знаю, мне задачу коллеги подкинули.  Для бездатчикового управления в электроприводе потом попросят еще и амплитуду посчитать Есть подозрение, что это векторное управление приводом. Там считают угол из синуса и косинуса http://en.wikipedia.org/wiki/Dqo_transformation, которые получают с датчика на валу двигателя. Резких бросков фазы в приводе быть не может, поэтому переходы А поскольку частота поступления новых данных явно не мегагерцы, то возникает вопрос а на чем на практике вы будете считать угол? Т.е. аппаратная платформа. И еще вопрос - а какая разрядность входных данных?
|
|
|
|
|
Jan 17 2015, 10:20
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(canny @ Jan 17 2015, 09:35)  А поскольку частота поступления новых данных явно не мегагерцы, то возникает вопрос а на чем на практике вы будете считать угол? Т.е. аппаратная платформа. И еще вопрос - а какая разрядность входных данных? Без понятия, если честно. Я уже несколько лет гораздо меньше занимаюсь решением конкретных инженерных задач, а гораздо больше разработкой общих методов в системах управления, научными исследованиями. Коллеги спросили, как можно по измерениям проекций построить динамический наблюдатель угла вектора, без явного вычисления арктангенса. Далее они, зная специфику своей задачи, рассмотрят разнообразные варианты и выберут более подходящий для их задачи.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|