Фазирование синусоид
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Фазирование синусоид
Всех форумчан с Новым годом!
Есть 2D массив синусоид одинаковой частоты, сдвинутых на определенный угол. Выбираю две. Мне нужно определить сколько элементов нужно удалить из массива одной из них (начиная с нуля) чтобы они "синхронизировались". т.е. начиналить с одного угла. В приаттаченом VI опытным путем я определила что нужно удалить 71 элемент. Как можно это вычислить автоматически?
В идеале я бы хотела указав определенный угол, например 90, а vi удалил необходимое количество элементов в одной из синусоид, для получения этого сдвига. Ну а если указать ноль градусов, то получится "синхронизация".
Направьте в нужном направлении... Спасибо
Есть 2D массив синусоид одинаковой частоты, сдвинутых на определенный угол. Выбираю две. Мне нужно определить сколько элементов нужно удалить из массива одной из них (начиная с нуля) чтобы они "синхронизировались". т.е. начиналить с одного угла. В приаттаченом VI опытным путем я определила что нужно удалить 71 элемент. Как можно это вычислить автоматически?
В идеале я бы хотела указав определенный угол, например 90, а vi удалил необходимое количество элементов в одной из синусоид, для получения этого сдвига. Ну а если указать ноль градусов, то получится "синхронизация".
Направьте в нужном направлении... Спасибо
- Вложения
-
- Phase Shift.vi
- (256.78 КБ) 29 скачиваний
-
- leader
- Сообщения: 526
- Зарегистрирован: 28 фев 2010, 18:04
- Версия LabVIEW: LV2018
- Благодарил (а): 10 раз
- Поблагодарили: 18 раз
- Контактная информация:
Re: Фазирование синусоид
Сохраните в LV2018. Чтобы найти смещение в точках, сначала надо найти среднюю линию сигнала и после этого определить в каких местах она будет пересекаться сигналом, скажем, по возрастающей части. И так для обоих сигналов, разность и будет равняться смещению. Чтобы определить это смещение в долях периода или в градусах, надо ещё определить и период. Для этого указанную ранее процедуру следует провести не только для возрастающей части, но и для ниспадающей. Лучше это делать на максимально возможном периоде выборки, что бы получить поточнее результаты.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Фазирование синусоид
У вас практически всё сделано, осталась пара шагов.
Если синусы идеальные, то можно и пересечение нулей искать, но вы используете готовые функции, которые вам и частоты выдают.
Но нужна ещё частота сэмплирования, которая из вашего кода не очевидна.
С направлением усечения (из какой wf удалять начало), уверен, разберётесь :)
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Фазирование синусоид
Вставлю и я свои 5 копеек.
Почему не очевидна? 1/dt - вот вам и частота. Вы же сами это делаете в вашем коде.
Так просто же все. Как сказал Артем вы практически все сделали и он показал простейшую математику, как вычислить необходимое количество элементов. Я лишь применил ее в вашем коде, добавив вашу хотелку "с градусами" и в качестве бонуса обрезал вторую синусоиду, чтобы "красивше" было.
- Вложения
-
- Phase Shift V2.vi
- LV2016
- (136.87 КБ) 28 скачиваний
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Фазирование синусоид
Вангую, в вашей доработке частота будет 1 :)
Не очевидна, потому что в исходном коде нет никакой частоты, только массив, который собирается в WF. А по дефолту там единица.
Может быть, кластер-константа и подправлен, но у меня нет двадцатки, чтобы посмотреть, поэтому собирал свой код с нуля
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Фазирование синусоид
Приатаченный VI 16 версии
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Фазирование синусоид
Артем, Taras - Спасибо огромное! Это массив реальных синусоид с рабочей установки с частотой сэмплирования 15 кГц, записанный в текстовый файл и скопированный на мою девелоперскую машину. После преобразования в 2D double он получился очень большой и чтобы его уменьшить, я оставила только две синусоиды и удалила четные элементы из массива, причем сделала это несколько раз. Поэтому dt при построении я взяла наугад. Мне нужно было понять принцип.
PS. Почему то "палец вверх" на сайте перестал работать (поблагодарить за сообщения автора), делаю это словесно СПАСИБО!
PS. Почему то "палец вверх" на сайте перестал работать (поблагодарить за сообщения автора), делаю это словесно СПАСИБО!
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Фазирование синусоид
Чтобы не плодить новые темы, спрошу здесь, поскольку вопросы похожи.
Представим ситуацию, на 10 входов модуля NI-9205 подаестя одна и таже синусоида, (впрочем это может быть любой сигнал все входы соеденены в одну точку) . Если потом вывести эти сигналы на график, мы должны увидеть некоторую задержку чтения между ними. Я правильно рассуждаю? От чего зависит эта задержка, от частоты сэмплирования? От количества каналов в задаче? И самое интересное - как его вычислить эту задержку? Спасибо.
Представим ситуацию, на 10 входов модуля NI-9205 подаестя одна и таже синусоида, (впрочем это может быть любой сигнал все входы соеденены в одну точку) . Если потом вывести эти сигналы на график, мы должны увидеть некоторую задержку чтения между ними. Я правильно рассуждаю? От чего зависит эта задержка, от частоты сэмплирования? От количества каналов в задаче? И самое интересное - как его вычислить эту задержку? Спасибо.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Фазирование синусоид
Не совсем задержку, а точнее, смотре как вывести
Ваш модуль с одним АЦП, так что он мультиплексором бегает по всем каналам по очереди, каждый следующий канал читается немного позже. Эта пауза зависит от частоты опроса (если быть точным, то dt/N, где dt - заданная "частота", а N - количество каналов. Если нарисовать всё "топорно", то будет казаться, то есть задержка, но если учесть сдвиг, то будет видно, что сигнал один и тот же
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Фазирование синусоид
Существует два варианта работы мультиплексора. В первом, самом простом, именно так, как вы описали. Но есть и более сложный. В нем мультиплексор с максимальной скоростью обегает все каналы и потом ожидает время до следующей оцифровки. Это сделано для уменьшения сдвига фазы между каналами. Так точно работают все мультиплексоры в PXI платах NI по умолчанию, но, при желании, можно переключиться на простой вариант. В продвинутом варианте получается, что задержка между соседними каналами константа и не зависит от частоты опроса и количества каналов в задаче. Думаю модуль NI 9205 использует подобный метод, но точно сказать не могу, не проверял.
У модуля NI 9205 время опроса одного канала 4 мс. Думаю, задержка между каналами равна этому времени независимо от частоты опроса.
На картинках примеры временных диаграмм для двух вариантов работы мультиплексора.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Фазирование синусоид
Я, когда писал свой ответ усомнился в частотах и специально проверил, нашёл эту статью . Но там про PCI ответ, так что PXI могут быть и более продвинутыми.Andrew Lunev писал(а): ↑31 дек 2022, 12:00Так точно работают все мультиплексоры в PXI платах NI по умолчанию
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Фазирование синусоид
Выходные прошли, пора возвращаться к работе. Andrew, Artem - Спасибо за разъяснения. Базируясь на них, я попытаюсь порассуждать. Сначала я хочу объяснить, зачем мне это нужно. Есть некое устройство - чтобы было проще - гидравлический цилиндр. Проводиться тест, определение скорости реакции положения цилиндра при воздействии управляющего сигнала. Этот тест по английски называется "frequency response". Суть самого теста проста: На управляющее устройство подается синусоидальный сигнал определенной амплитуды и частоты, (параметры типа давления, сечение шлангов не учитываем - все в норме). Далее измеряется амплитуда движения и сдвиг фаз положения, относительно сигнала команды. Так вот вопрос в том, что этот сдвиг превышает допустимые параметры буквально на пару градусов, в то время как амплитуда в допустимых пределах. Вот я и озадачилась, правильно ли установка производит замеры.
Мои умозаключения: Поправьте меня, если я ошибаюсь. Исходные параметры: Частота сэмплирования 15 кГц, управляющий сигнал 11 Гц. В модуле 9205 задействованы 16 каналов.
15х16=240 kS/S, что ниже максимально допустимой 250 kS/S модуля 9205. Когда я создавала задачу то добавляла каналы ai0, ai1, ai2.... ai14, ai15. т.е поочередно. Управляющий сигнал подключен к ai2, "ответ" к ai14. Получается между ними 12 каналов. Вычисляем. Допустим что время опроса максимально и равно 1/15000000 = 6.6uS (а не 4, как предположил Andrew Lunev, пусть нам будет хуже ) Значит задержка между чтениями сигнала и ответа составляет 6.6uS * 12 = 79.2uS Выясняем сколько это в градусах. Период сигнала 1/11 = 90.9 mS Итого 360 * 0.000792 / 0.0909 = 3.13 градуса! Если мои рассуждения верны то это все объясняет! Осталось выяснить маленький вопросик. Если я переделаю задачу и укажу последовательность ai2,ai14,ai0.....ai15, то как будет работать мультиплексор? Будет следовать моей последовательности или поочередно с a0... ai15? Спасибо что выслушали :)
P.S. всеже плохо, что палец вверх не работает....
Мои умозаключения: Поправьте меня, если я ошибаюсь. Исходные параметры: Частота сэмплирования 15 кГц, управляющий сигнал 11 Гц. В модуле 9205 задействованы 16 каналов.
15х16=240 kS/S, что ниже максимально допустимой 250 kS/S модуля 9205. Когда я создавала задачу то добавляла каналы ai0, ai1, ai2.... ai14, ai15. т.е поочередно. Управляющий сигнал подключен к ai2, "ответ" к ai14. Получается между ними 12 каналов. Вычисляем. Допустим что время опроса максимально и равно 1/15000000 = 6.6uS (а не 4, как предположил Andrew Lunev, пусть нам будет хуже ) Значит задержка между чтениями сигнала и ответа составляет 6.6uS * 12 = 79.2uS Выясняем сколько это в градусах. Период сигнала 1/11 = 90.9 mS Итого 360 * 0.000792 / 0.0909 = 3.13 градуса! Если мои рассуждения верны то это все объясняет! Осталось выяснить маленький вопросик. Если я переделаю задачу и укажу последовательность ai2,ai14,ai0.....ai15, то как будет работать мультиплексор? Будет следовать моей последовательности или поочередно с a0... ai15? Спасибо что выслушали :)
P.S. всеже плохо, что палец вверх не работает....
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Фазирование синусоид
Я что-то упустил, как 15 кГц превратились в 15 МГц?
Вот так и будет честно бегать в заданном порядке.Если я переделаю задачу и укажу последовательность ai2,ai14,ai0.....ai15, то как будет работать мультиплексор?
Есть даже ход конём. a1-a2-a1 для двойной скорости чтения одного из каналов.
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Фазирование синусоид
Ну да, согласна лишних три нолика написала и будет 66uS, но конечный результат то верный? 66 * 12 = 792uS и далее 360 * 0.000792 / 0.0909 = 3.13
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Фазирование синусоид
Я так думаю, что 4 микросекунды у NI9205 - это минимальное время, которое возможно при опросе одного канала на максимально возможной частоте в 250кГц. ( 1/250000 = 0.000004 )
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!