Добрый день, форумчане!
Хотел обратиться к вам за помощью, может кто натолкнет в нужное русло или выдаст очевидный ответ, который я не вижу.
Итак, что у меня имеется и что мне нужно. Есть стенд ElvisII с ЦАП и экспрессВИ "Генератор сигналов произвольной формы". Очевидно, что он нужен для генерации сигналов нетривиальной формы. Но загвоздка в том, что генерировать очередной сигнал он должен не постоянно, а по запросу (в простейшем случае по таймеру).
Я начал осваивать язык LV совсем недавно и многих, даже самых очевидных, хитростей не знаю. Я набросал простую схемку.
Слева два цикла For формируют массив точек, из которых и будет сформирован сигнал необходимой формы. Записывается массив точек в генератор единожды. Справа цикл While для работы виртуального осциллографа, по большому счету его можно оставить пустым, а к выходным каналам ЦАП подключить реальный осциллограф.
Проблема, которую я не решил. Как организовать переменное включение/выключение генератора? В цикл while ведь он не лезет...
Спасибо за ответы!
PS. Это моя первая тема на форуме. Если накосячил с оформлением или подачей информации - сильно не пинайте, буду исправляться
Работа с ElvisII - генератор сигналов произвольной формы
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Работа с ElvisII - генератор сигналов произвольной формы
Лень смотреть, что внутри функций элвиса, но что знаит " В цикл while ведь он не лезет."?
Функцию в цикл и вперёд.
Функцию в цикл и вперёд.
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2017, 20:34
- Версия LabVIEW: 16
- Контактная информация:
Re: Работа с ElvisII - генератор сигналов произвольной формы
Artem.spb, не все так просто... Или просто, но я не понимаю. Вот цикл, при старте выдает ошибку
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Работа с ElvisII - генератор сигналов произвольной формы
Все верно написано в описании ошибки и это верно не только для Элвиса, но и для всех плат ввода/вывода от NI. Если действительно хотите генератор произвольной формы сделать и чтобы менялись параметры сигнала во время генерации, то экспресс приборами пользоваться не получится, надо обычные VI использовать. Как именно использовать и в чем отличие буферов памяти на плате и в программе лучше всего почитать в учебном курсе NI "Системы сбора данных", раздел аналогового вывода.
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2017, 20:34
- Версия LabVIEW: 16
- Контактная информация:
Re: Работа с ElvisII - генератор сигналов произвольной формы
Andrew Lunev, спасибо за развернутый ответ. Правильно я понимаю, что я не только не смогу менять параметры, но и включать/выключать этот генератор во время выполнения программы без изменения параметров?
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Работа с ElvisII - генератор сигналов произвольной формы
Скорее всего не сможете. С Элвисом я очень давно и мало работал, особенностей не помню. Но смысл в том, что вы сначала в буфер платы помещаете свой сигнал и потом запускаете задачу и генерируется сигнал на основе этих данных из платы. Гененируется сигнал по кругу, пока не остановите задачу. Экспресс прибор сложней задачу сделать не даст. То есть подгрузить новый сигнал в буфер нельзя.
Если нужно менять параметры сигнала налету без остановки задачи, то надо в реальном времени готовить новую порцию сигнала и подгружать ее в буфер, пока из буфера генерируется старый сигнал. Это делается с использованием функций более низкого уровня, чем экспресс приборы. С их помощью можно и триггеры добавить и аппаратные и программные. Или просто амплитуду сигнала в ноль вывести, чем не приостановка генерации?
Включать/выключать генерацию с экспресс приборами это запускать и останавливать задачу генерации. То есть практически перезапускать каждый раз вашу программу. Если необходима непрерывная генерация, то в моменты перезапуска будут разрывы в осциллограмме. Без использования экспресс приборов можно сделать генерацию без разрывов.
Еще можно использовать буфер не на плате Элвиса, а в памяти компьютера, про это и написано в описании ошибки. Но тут узким местом становится USB, он должен успеть перекинуть данные из оперативки в плату и нет гарантий, что форма сигнала будет такой, какой нужно. Получается аппаратное тактирование генерации в плате заменяется программным тактированием и еще под Windows. Шаг по времени будет плавать...
Если нужно менять параметры сигнала налету без остановки задачи, то надо в реальном времени готовить новую порцию сигнала и подгружать ее в буфер, пока из буфера генерируется старый сигнал. Это делается с использованием функций более низкого уровня, чем экспресс приборы. С их помощью можно и триггеры добавить и аппаратные и программные. Или просто амплитуду сигнала в ноль вывести, чем не приостановка генерации?
Включать/выключать генерацию с экспресс приборами это запускать и останавливать задачу генерации. То есть практически перезапускать каждый раз вашу программу. Если необходима непрерывная генерация, то в моменты перезапуска будут разрывы в осциллограмме. Без использования экспресс приборов можно сделать генерацию без разрывов.
Еще можно использовать буфер не на плате Элвиса, а в памяти компьютера, про это и написано в описании ошибки. Но тут узким местом становится USB, он должен успеть перекинуть данные из оперативки в плату и нет гарантий, что форма сигнала будет такой, какой нужно. Получается аппаратное тактирование генерации в плате заменяется программным тактированием и еще под Windows. Шаг по времени будет плавать...
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2017, 20:34
- Версия LabVIEW: 16
- Контактная информация:
Re: Работа с ElvisII - генератор сигналов произвольной формы
Andrew Lunev, "Если нужно менять параметры сигнала налету без остановки задачи, то надо в реальном времени готовить новую порцию сигнала и подгружать ее в буфер, пока из буфера генерируется старый сигнал. Это делается с использованием функций более низкого уровня, чем экспресс приборы. С их помощью можно и триггеры добавить и аппаратные и программные. Или просто амплитуду сигнала в ноль вывести, чем не приостановка генерации?" - не могли бы Вы посоветовать литературу или статьи на эту тему?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 95 Просмотры
-
Последнее сообщение tamperplay
-
- 3 Ответы
- 343 Просмотры
-
Последнее сообщение IvanLis
-
- 3 Ответы
- 625 Просмотры
-
Последнее сообщение Artem.spb
-
- 0 Ответы
- 551 Просмотры
-
Последнее сообщение Pavlusik
-
- 16 Ответы
- 3259 Просмотры
-
Последнее сообщение Artem.spb