Привет.
Возник следующий вопрос.
Имеется функциональный генератор, разработанный коллегами. Возникло желание поэксперементировать с ним на LabVIEW. Т. е. сделать что-то вроде простейшего низкочастотного анализатора с помощью звуковой карты. С этим все просто и прозрачно. Да и примеров на эту тему море.
Так же там имеется возможность как внутренней так и внешней синхронизации, пошел самым простым путем и организовал ее через LPT (в случае с внешней): поднимаю и опускаю один бит LPT и сразу же считываю буфер со звуковой карты. Вопрос собственно следующий: возможно ли добиться четкой синхронизации? как? ибо у меня это не получилось (пробовал уже кучу вариантов, но наблюдаю постоянные "прыжки" сигнала на несколько отсчетов).
Да и в целом какой оптимальный вариант синхронизации на LabView в таких случаях ?
Синхронизация
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Синхронизация
Я думаю надо использовать вместо звуковой карты и LPT, какой нибудь АЦП.
Проблема в том что при софт-синхронизации всегда появляются скачки во времени, это из за того что обычная операционная система не гарантирует точного выполнения того или иного процесса или цикла. При хард-синхронизации всё происходит в АЦП, а LabVIEW уже получает синхронизированные данные в виде буфера со значениями.
Второй вариант это использование Real Time Operation System (RTOS), в таком случае сама операционная система гарантирует точное выполнение цикла по времени. Это значит например, при получении данных в LabVIEW ты конечно должен использовать цикл, например While-Loop. Так вот операционка будет гарантировать тебе что выполнение цикла всегда занимает одно и то же время. Тогда у тебя скачков не будет.
Третий вариант это получение данных с прибора в виде пакетов, состоящих из самого значения и штампа времени к этому значению. При этом штамп времени должен генерится в самом приборе!
Проблема в том что при софт-синхронизации всегда появляются скачки во времени, это из за того что обычная операционная система не гарантирует точного выполнения того или иного процесса или цикла. При хард-синхронизации всё происходит в АЦП, а LabVIEW уже получает синхронизированные данные в виде буфера со значениями.
Второй вариант это использование Real Time Operation System (RTOS), в таком случае сама операционная система гарантирует точное выполнение цикла по времени. Это значит например, при получении данных в LabVIEW ты конечно должен использовать цикл, например While-Loop. Так вот операционка будет гарантировать тебе что выполнение цикла всегда занимает одно и то же время. Тогда у тебя скачков не будет.
Третий вариант это получение данных с прибора в виде пакетов, состоящих из самого значения и штампа времени к этому значению. При этом штамп времени должен генерится в самом приборе!
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Синхронизация
Спасибо.
Насчет варианта с контроллером или FPGA - там все железно, проблем не возникает, хотелось поэкспериметировать со звуковой картой...
Третий вариант не совсем подходит для данного случая, так как данные получаю аналоговые...
Попробую второй вариант с модулем LV real time.
Насчет варианта с контроллером или FPGA - там все железно, проблем не возникает, хотелось поэкспериметировать со звуковой картой...
Третий вариант не совсем подходит для данного случая, так как данные получаю аналоговые...
Попробую второй вариант с модулем LV real time.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Синхронизация
Можно ещё попробовать либо внешнюю синхронизацию с другим источником дигитального импульса, либо если имеется внутреннюю синхронизацию. А вот аналоговый сигнал можешь при этом собирать с помощью звуковой карты.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение