Как менять фазу генератора сигнала "на лету"?
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Как менять фазу генератора сигнала "на лету"?
Добрый день.
Стоит задачка генерить в 2 канала через плату NI USB-6218 триггерный сигнал для синхронизации лазеров. Причём важно уметь не выключая их делать финишную подстройку по фазе. Сделал так, что это можно делать, но приходится останавливая программу, т.е. перезапускать лазеры. Как бы так сделать, чтобы и буферизацию оставить, и добавить возможность изменять сдвиг фаз "на лету". Спасибо большое за ликбез! P.S. Думал мутить что-то с очередями, но слабо пока их понимаю, может можно попроще?
Стоит задачка генерить в 2 канала через плату NI USB-6218 триггерный сигнал для синхронизации лазеров. Причём важно уметь не выключая их делать финишную подстройку по фазе. Сделал так, что это можно делать, но приходится останавливая программу, т.е. перезапускать лазеры. Как бы так сделать, чтобы и буферизацию оставить, и добавить возможность изменять сдвиг фаз "на лету". Спасибо большое за ликбез! P.S. Думал мутить что-то с очередями, но слабо пока их понимаю, может можно попроще?
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Посмотрите эту тему может поможет
viewtopic.php?f=21&t=10689
viewtopic.php?f=21&t=10689
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Спасибо, глянул.
Но у меня кажись нужно было просто поставить галочку на "reset signal". Погляжу ещё на осциллографе, но кажись всё ок.
Но у меня кажись нужно было просто поставить галочку на "reset signal". Погляжу ещё на осциллографе, но кажись всё ок.
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Как менять фазу генератора сигнала "на лету"?
Если генерировать нужно только прямоугольный сигнал, то лучше всего использовать для этого выходы счётчиков. Их два на вашей плате. У счётчиков налету можно менять все параметры сигнала без останова задачи. Не надо ни осциллограммы создавать заранее ни буфер использовать.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Да, в курсе про счётчики, но чего-то решил что он у меня один, как на старой плате был. Спасибо!
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Может я не права, но мне кажется Вы просто издеваетесь над своей платкой. Timing задается один раз перед выполнением задачи. Посмотрите в папке с примерами Help -> Find Examples "Voltage (non-regeneration) - Continuous Output.vi"Andrey Petrzhik писал(а): ↑30 апр 2021, 14:20 Спасибо, глянул.
Но у меня кажись нужно было просто поставить галочку на "reset signal". Погляжу ещё на осциллографе, но кажись всё ок.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
В целом наверное так и есть, но как мне тогда менять частоту и фазу, если в тайминг приходит осциллограмма?
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Я бы попробовала вот такAndrey Petrzhik писал(а): ↑30 апр 2021, 18:08 но как мне тогда менять частоту и фазу, если в тайминг приходит осциллограмма?
- Вложения
-
- Continuous Output.vi
- LV2012
- (52 КБ) 74 скачивания
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
У вас же частота сэмплирования сигнала не меняется? Меняется только начала-конец высокого фронта. Поэтому задавать "скорость" на каждом сигнале нет необходимости. Да и вряд ли это получится если частота будет другая.Andrey Petrzhik писал(а): ↑30 апр 2021, 18:08 В целом наверное так и есть, но как мне тогда менять частоту и фазу, если в тайминг приходит осциллограмма?
Эти две use waveform надо за цикл вынести
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Решил попробовать таки по вашему совету счётчики. И как-то оказалось не просто... отдельно счётчики 0 и 1 подключенные соответственно к PFI4 и PFI5 моей платы работают на генерацию отлично, а вот как их запустить вместе, да ещё и с чётким сдвигом фазы? Для аналоговой генерации в daqmx write выбирается N канальный режим работы, а тут как? Что-то не соображу. Подскажите пожалуйста! Т.е. вариант на картинке рабочий, но вот как его дополнить чтобы работало 2 счётчика не соображу...Andrew Lunev писал(а): ↑30 апр 2021, 14:42 Если генерировать нужно только прямоугольный сигнал, то лучше всего использовать для этого выходы счётчиков. Их два на вашей плате. У счётчиков налету можно менять все параметры сигнала без останова задачи. Не надо ни осциллограммы создавать заранее ни буфер использовать.
P.S. Да, глянул повнимательнее осциллографом на генерируемый одиночный сигнал. 300Гц показывается стабильно, правда картинка сигнала скачет вправо-влево на ~80нс. Не свой осциллограф, может это у него какие-то особенности развёртки просто. В любом случае такой сигнал мне скорее годится, чем нет. И он лучше, чем с ЦАП.
- Вложения
-
- KOLHOZNY generator 2.vi
- (17.1 КБ) 64 скачивания
Последний раз редактировалось Andrey Petrzhik 06 май 2021, 20:16, всего редактировалось 1 раз.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Пытаюсь вытащить use waveform за цикл. Получилось только как на картинке, всё работает, но кажется так не феншуй делать, как же правильно? И да, идеальных 300Гц как не было, так и нет. Осциллограф даёт 299.999...300.003, сигнал двоится, маркерами получается разброс 3.92мкс, хоть может и врёт. В любом случае со счётчиками должно быть лучше, но хочется сперва этот вариант "причесать". Всем спасибо за внимание и мудрые советы!Artem.spb писал(а): ↑30 апр 2021, 20:08У вас же частота сэмплирования сигнала не меняется? Меняется только начала-конец высокого фронта. Поэтому задавать "скорость" на каждом сигнале нет необходимости. Да и вряд ли это получится если частота будет другая.Andrey Petrzhik писал(а): ↑30 апр 2021, 18:08 В целом наверное так и есть, но как мне тогда менять частоту и фазу, если в тайминг приходит осциллограмма?
Эти две use waveform надо за цикл вынести
- Вложения
-
- KOLHOZNY generator.vi
- (29.04 КБ) 64 скачивания
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Как менять фазу генератора сигнала "на лету"?
Примерно так можно синхронизировать два счетчика. Они должны использовать один опорный генератор и обе задачи должны стартовать по одному триггеру.
В примере я использовал фронт сигнала со счетчика 1 для запуска задачи счетчика 0, но тут могут быть проблемы.
Лучше обе задачи запускать от какого-то единого события, но для этого нужно это событие как-то выдать. Например это может быть приход фронта сигнала на какой-то из PFI или старт задачи аналогового сбора или генерации. Все доступные варианты можно посмотреть в списке.
В верхнем цикле идет расчет времен для каждого счетчика исходя из необходимой частоты генерации и сдвига фазы в процентах. Счетчик 0 генерирует меандр на заданной частоте, а счетчик 1 сдвигает фазу переднего фронта сигнала на заданный процент.
Проверить не на чем, поэтому сразу может не заработать, но общая идея должна быть понятна.
В примере я использовал фронт сигнала со счетчика 1 для запуска задачи счетчика 0, но тут могут быть проблемы.
Лучше обе задачи запускать от какого-то единого события, но для этого нужно это событие как-то выдать. Например это может быть приход фронта сигнала на какой-то из PFI или старт задачи аналогового сбора или генерации. Все доступные варианты можно посмотреть в списке.
В верхнем цикле идет расчет времен для каждого счетчика исходя из необходимой частоты генерации и сдвига фазы в процентах. Счетчик 0 генерирует меандр на заданной частоте, а счетчик 1 сдвигает фазу переднего фронта сигнала на заданный процент.
Проверить не на чем, поэтому сразу может не заработать, но общая идея должна быть понятна.
- Вложения
-
- generator 2 counter LV2012.vi
- (22.17 КБ) 63 скачивания
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Так, идею я понял, реализацию пока не очень, но авось осилю.
Опорный генератор какой-то мутный 4-битный есть, на 10кГц вроде работает.
Спасибо большое за помощь, кажется должно взлететь!
Опорный генератор какой-то мутный 4-битный есть, на 10кГц вроде работает.
Спасибо большое за помощь, кажется должно взлететь!
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как менять фазу генератора сигнала "на лету"?
Попробовал. Что-то работает. Хватило ума пока только сменить везде имя девайса, на лицевой панели 300% поменять на 50% и перекинуть низкий уровень и фронт (где галочки). Генерация работает, но меняется у нас только заполняемость второго сигнала, а мне бы хотелось менять фазу. Т.е. просто сдвигать один сигнал от другого. Мало того, поменяв скважность от 50% до скажем 60%, обратно мы вернуться не останавливая программу не можем... а это совсем не годится. К тому же я не могу выставить сдвиг 180 градусов. Может как-то можно таки менять именно фазу?..Andrew Lunev писал(а): ↑06 май 2021, 21:36 счетчик 1 сдвигает фазу переднего фронта сигнала на заданный процент
Старт. Оффсет 50% Меняю оффсет. 65% Снова 50%. Но явно видно смещение, что-то пошло не так... при перезапуске все чинится.
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Как менять фазу генератора сигнала "на лету"?
Сдвигать именно фазу я сходу не могу придумать как. Ведь при синхронном генерировании один фронт должен совпадать, а другой смещаться. Для задач синхронизации важно смещение активных фронтов, а не длительность самих сигналов. Можно или нарастающие фронты смещать или спадающие.Andrey Petrzhik писал(а): ↑07 май 2021, 00:09Генерация работает, но меняется у нас только заполняемость второго сигнала, а мне бы хотелось менять фазу. Т.е. просто сдвигать один сигнал от другого. Мало того, поменяв скважность от 50% до скажем 60%, обратно мы вернуться не останавливая программу не можем... а это совсем не годится. К тому же я не могу выставить сдвиг 180 градусов. Может как-то можно таки менять именно фазу?..
Для понимания, как всё работает и на что влияет попробуйте задать смещение в 10% и поиграться с параметрами, указанными галочками на картинке. Желательно попробовать все комбинации и сделать фото с осциллографа. То есть должно получиться 8 вариантов. Скорее всего какие-то сместят сигналы на 180 градусов, другие будут смещать спадающие фронты.
После можно проверить возникает ли проблема при изменении смещения в диапазоне от 0 до 50% и от 50 до 100%. Расчет low и high time я привел в качестве примера. Понятно, что при вариантах 0% и 100% алгоритм не работает и возможно при каких-то других параметрах надо его доработать.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 14 Ответы
- 593 Просмотры
-
Последнее сообщение IvanLis