Вывод звука для управления вибростендом
-
- assistant
- Сообщения: 119
- Зарегистрирован: 06 май 2015, 22:24
- Версия LabVIEW: 2014, 2018
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Вывод звука для управления вибростендом
Логика работы ВП следующая. Выбирается папка, где находятся 3 wave файла, которые затем загружаются каждый в свой канал регулирования. В готовом ВП данные о RMS будут получены с помощью USB 6009, но на этапе отладки они берутся с выходов каналов регулирования. Если не выводить сигнал на выход звуковой карты, ВП работает ка необходимо, то есть по каждому из каналов достигается заданный уровень RMS, затем выходы каналов складываются. Когда я пытаюсь вывести результат на звуковуху, сам процесс вывода работает, но "подвешивает" работу цикла While loop, ВП уже не может работать нормально, регулирование становится невозможным. Помогите справиться с этой проблемой.
- Вложения
-
- waves.vi
- (40.4 КБ) 253 скачивания
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Вывод звука для управления вибростендом
Разделите программу на несколько параллельных циклов: цикл UI (обработка событий интерфейса), цикл обработки данных, цикл вывода звука. Синхронизировать циклы можно через очереди, уведомители и прочие инструменты.
-
- assistant
- Сообщения: 119
- Зарегистрирован: 06 май 2015, 22:24
- Версия LabVIEW: 2014, 2018
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Вывод звука для управления вибростендом
Решил не создавать новой темы, так как вопрос по той же тематике. В готовую работающую систему управления вибростендом потребовалось добавить управление 8-ю генераторами синусоид, частоты которых качаются от минимальной до максимальной частоты в обе стороны (за 15 минут в одну сторону). Расчет опорной частоты генерации осуществил в параллельном цикле и попытался передать ее значение с помощью локальной переменной 1 раз в секунду. Но в результате получил прерывание колебаний на выходе звуковой карты как раз с частотой 1Гц, как я понимаю из-за того, что не умею пока синхронизировать должным образом процессы в параллельных циклах. Прошу помощи у уважаемых знатоков, подскажите решение. Проект срочен, а я у разбитого корыта.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Вывод звука для управления вибростендом
Alex Dem, по картинкам не совсем понятна архитектура программы и то, сколько циклов у вас в main vi. На второй картинке я вижу цикл в цикле, да ещё и sequence. Подозреваю, что из-за подобной спонтанной структуры программа и не работает, как нужно.
А также вот вам литература и примеры:
1) "LabVIEW Основы II: Разработка" : шаблон «Производитель-потребитель» + материал в главе 2 "Передача данных между несколькими циклами"
2) Питер Блюм "LabVIEW: стиль программирования", в частности глава 8 "Шаблоны" и раздел 8.3.1 "Параллельные циклы"
3) примеры в папке C:\Program Files (x86)\National Instruments\LabVIEW 2014\examples\Synchronization
Также следует подумать над архитектурой приложения. У вас есть неплохой задел, так что будет несложно доделать до "конечного автомата". Работу с GUI выносите в один цикл, получение данных с железки - в другой, логику - в третий.
Как я писал выше,Alex Dem писал(а):не умею пока синхронизировать должным образом процессы в параллельных циклах
В интернете полно примеров по передаче данных между параллельными циклами. Изучите, как работают механизмы синхронизации, на примере http://www.ni.com/white-paper/3023/en/ (подход "Producer - Consumer"). Посмотрите схожие темы на форуме, например http://www.labviewportal.org/viewtopic. ... 096#p66096 , http://labviewportal.org/viewtopic.php?p=68893#p68893dadreamer писал(а):Синхронизировать циклы можно через очереди, уведомители и прочие инструменты.
А также вот вам литература и примеры:
1) "LabVIEW Основы II: Разработка" : шаблон «Производитель-потребитель» + материал в главе 2 "Передача данных между несколькими циклами"
2) Питер Блюм "LabVIEW: стиль программирования", в частности глава 8 "Шаблоны" и раздел 8.3.1 "Параллельные циклы"
3) примеры в папке C:\Program Files (x86)\National Instruments\LabVIEW 2014\examples\Synchronization
Также следует подумать над архитектурой приложения. У вас есть неплохой задел, так что будет несложно доделать до "конечного автомата". Работу с GUI выносите в один цикл, получение данных с железки - в другой, логику - в третий.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 14 Ответы
- 706 Просмотры
-
Последнее сообщение Vladimir_T
-
- 12 Ответы
- 1438 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 3 Ответы
- 871 Просмотры
-
Последнее сообщение IvanLis
-
- 4 Ответы
- 1055 Просмотры
-
Последнее сообщение Artem.spb
-
- 5 Ответы
- 986 Просмотры
-
Последнее сообщение seromax