Генерация сигнала

Захват, обработка и генерирование сигнала
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Генерация сигнала

Сообщение Studentka419 »

Добрый день! Помогите, пожалуйста! Имеется в наличии плата sbRIO-9636. Необходимо на ней реализовать трёхфазный генератор с выдачей напряжения +/-10В. Я взяла за основу пример из Labview и немного модифицировала его. Но возникла такие проблемы: при масштабировании сигнала на 10В синусоида делается очень ступенчатой и по графику видно, что синусоиды сдвинуты не на 120 градусов, хотя и выставила в пользовательском интерфейсе 120 градусов. Прилагаю проект и скриншот своих синусоид. Посмотрите, что я не так делаю. Сигнал должен быть плавным и сдвиг фаз чётко 120 градусов.
Вложения
Generator.rar
(902.74 КБ) 162 скачивания
sine2.png
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

У вас на экране отображается амплитуда не в Вольтах, а в дискретах кода. То есть вся шкала +/- 32768. Если хотите перевести код в напряжение, то поделите его на 3276,8.
Vpp (V) это размах напряжения в Вольтах, должно стоять 20, если хотите получить амплитуду в 10 В.
Sample rate (S/s) установите в значение 100к, у вас явно не успевает код на ПЛИС выполняться, поэтому лезут ошибки.
Чтобы работало верно, надо чтобы совпадали значения Sample rate (S/s) и Actual Sample Rate (S/s).
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

Спасибо Вам за такой быстрый ответ! Я сделала, как Вы посоветовали, но ступеньки остались. И у третий график по фазе неправильно отображается.
Вложения
Generator2.rar
(902.88 КБ) 135 скачиваний
sine3.png
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

1. Если сдвиг фазы постоянен между каналами, то задайте фазу как константы внутри Sine Wave Generator, это точно работает.
2. Почему у вас до сих пор диапазон SIN на картинке +/- 10 я не понимаю. Скорее всего значение Vpp (V) не обновилось.
3. Еще у вас на выходе с генератора на FPGA сигнал в формате I16 (+/- 32768), а ЦАП требует +/- 10 на входе своем, так что приведите сигнал к нужному формату перед подачей его на ЦАП, иначе на выходе sbRIO будет прямоугольник, а не синус.
4. У вас горят FIFO AO0 Full? и FIFO AO1 Full?, это значит, что что-то работает не так и отображается тоже не так. Фазы будут отображаться корректно только если эти индикаторы погашены, иначе на картинке вообще может быть что угодно. Добейтесь, чтобы они не загорались, например уменьшите Sample rate (S/s) до 10к.

Правильней использовать для передачи не три буфера Sine Wave AO0, а один. Но в программе для этого надо много чего поменять.
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

1. А какой должен быть диапазон SIN? Я просто не поняла, где нужно делить код напряжения на 3276,8 и сделала это в UI (там, где Vpp). Или я Вас не правильно поняла?
2. Как привести сигнал к нужному формату перед подачей на ЦАП? Насколько я поняла, это нужно сделать в FPGA, но как это сделать?
3. FIFO AО0 Full? и FIFO AО1 Full? горят даже при Sample Rate 10k. Я попробовала сделать ещё другие скорости, но они либо продолжают гореть, либо ничего не работает.
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

1. и 2. разбирайтесь, это элементарные действия, тут никаких особых знаний не надо. Все в пределах курсовой работы по сложности.
3. Делайте передачу через один буфер FIFO, возможно на три буфера не хватает ресурсов, поэтому ничего и не работает.

1. и 2. На ПЛИС у вас генерируется сигнал синуса с амплитудой 32768. То есть получается, что число 32768 должно соответствовать значению напряжения 10 В. Найдете коэффициент, как получить из одного другое? То есть вам надо уменьшить амплитуду перед выдачей на экран и перед подачей на ЦАП в 3276,8 раз. Решить задачу можно десятком разных способов. Разберитесь для начала, как работает пример на один канал синуса.
Studentka419 писал(а):Я просто не поняла, где нужно делить код напряжения на 3276,8 и сделала это в UI (там, где Vpp). Или я Вас не правильно поняла?
Я не нашел в новом коде, где вы делите на 3276,8.
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

1.Вот тот проект, который я взяла за основу. Там генерируются две синусоиды, и используется всего один буфер. Фаза показывается как надо.
2.В этом проекте в UI я выделила розовым цветом 3276,8, на которое я делю амплитуду. Я вот и хотела узнать: я что-то не то поделила?
Вопросы у меня конечно глупые, но Вы меня уж простите! Вторую неделю уже борюсь с этими коэффициентами.
Вложения
My Sine Wave.rar
(337.75 КБ) 157 скачиваний
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

1. Сделали верно, теперь попробуйте расширить на три канала, это уже чуть сложней.
2. Поделили конечно же не там. В вашем случае ничего не поменялось, что вы вводили число 0,003, что ввели 20 и поделили на 3276,8. В чем разница? На ПЛИС в обоих случаях пришло число 0,003, вот и не поменялась картинка. Попробуйте разобраться для чего производится каждое действие в программе, там нет ничего лишнего. Картинка с подсказкой ниже...
Вложения
Scale.PNG
Scale.PNG (2.58 КБ) 7674 просмотра
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

1. Спасибо за подсказку! На графике теперь действительно лучше отображается. Но мне нужно, чтобы сигнал 10 В оказался на выходах AO0 и AO1. Я добавила их в FPGA. Но при подключении осциллографа к AO0, например, синусоиды обрезаются примерно на 11В. А мне нужно, чтобы не только на графике в UI, но и на выходах сигнал был 10В.
Вложения
Безымянный.png
My Sine Wave2.rar
(334.45 КБ) 123 скачивания
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

Andrew Lunev писал(а):3. Еще у вас на выходе с генератора на FPGA сигнал в формате I16 (+/- 32768), а ЦАП требует +/- 10 на входе своем, так что приведите сигнал к нужному формату перед подачей его на ЦАП, иначе на выходе sbRIO будет прямоугольник, а не синус.
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

Andrew Lunev писал(а):
Andrew Lunev писал(а):3. Еще у вас на выходе с генератора на FPGA сигнал в формате I16 (+/- 32768), а ЦАП требует +/- 10 на входе своем, так что приведите сигнал к нужному формату перед подачей его на ЦАП, иначе на выходе sbRIO будет прямоугольник, а не синус.
Я Вас об этом и спрашиваю: Как привести к нужному формату? Объясните, пожалуйста! :dntknw:
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

Точно так же, как и для вывода на график. Поделите на 3276,8 перед подачей на ЦАП на ПЛИС.
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

А как это сделать на ПЛИС? Ведь ПЛИС не поддерживает операции с типом DBL?
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Генерация сигнала

Сообщение Andrew Lunev »

Поддерживает SGL, FXP.
Аватара пользователя
Studentka419
beginner
beginner
Сообщения: 29
Зарегистрирован: 16 мар 2015, 12:06
Версия LabVIEW: 2013

Re: Генерация сигнала

Сообщение Studentka419 »

Объясните, пожалуйста поподробнее :dntknw:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»