exponenta event banner

Получение цифровых данных с использованием канала вывода счетчика в качестве внешнего тактового генератора

В этом примере показано, как использовать выходной канал счетчика устройства для генерации импульсов для внешнего тактового сигнала при получении

Sharing counter pulses as an external clock

В этом примере тактовый сигнал генерируется в одном DataAcquisition с использованием канала вывода счетчика и экспортируется в другой DataAcquisition, который получает цифровые данные. Выход счетчика и цифровая подсистема могут быть на одном устройстве или на разных устройствах.

Примечание

При импорте внешних часов частота сканирования DataAcquisition не устанавливается автоматически. Вручную установить DataAcquisition Rate значение свойства должно соответствовать ожидаемой частоте внешнего синхросигнала.

Генерация тактового генератора с использованием канала вывода счетчика

Создайте синхронизированный DataAcquisition с выходным каналом счетчика, который непрерывно генерирует частотные импульсы в фоновом режиме. Этот канал можно использовать в качестве внешнего синхросигнала для получения синхронизированных цифровых данных.

Определите тактовую частоту, которая будет использоваться для синхронизации частоты сканирования вывода счетчика, а также частоты получения цифровых данных.

clockFreq = 100;

Создание объекта DataAcquisition и добавление канала вывода счетчика для PulseGeneration тип измерения.

daqClk = daq("ni");
ch1 = addoutput(daqClk,"Dev1","ctr0","PulseGeneration");

Совет

Убедитесь, что добавляемый канал счетчика не используется в другом DataAcquisition, в противном случае возникает ошибка конфликта терминала.

Сохраните идентификатор выходного терминала счетчика в переменной, чтобы его можно было использовать позже для указания внешнего тактового генератора, синхронизирующего операции с цифровым синхросигналом.

clkTerminal = ch1.Terminal;

Установите тактовую частоту канала счетчика.

ch1.Frequency = clockFreq;

Использование счетчика тактовых сигналов для получения синхронизированных цифровых данных

Создайте DataAcquisition для цифрового ввода и импортируйте внешние часы из clock DataAcquisition.

Создание DataAcquisition и добавление цифровой входной линии из порта 0 линия 2 на Dev1.

daqDgt = daq("ni");
addinput(daqDgt,"Dev1","Port0/Line2","Digital")

Примечание

Не все устройства поддерживают синхронизированные операции цифрового ввода-вывода с аппаратной синхронизацией. Для этих устройств можно использовать программно-синхронизированные операции с одиночными вызовами сканирования для read и write.

Устройства, поддерживающие операции цифрового ввода-вывода с синхронизацией, могут поддерживать их не на всех портах. Проверьте характеристики устройства.

Совет

Ресурсы терминала PFI могут совместно использоваться. Проверьте маршрутизацию устройства в приложении NI MAX.

Установите частоту сканирования DataAcquisition в то же значение, что и скорость выходного канала счетчика.

daqDgt.Rate = clockFreq;

Импортируйте часы из источника данных часов для синхронизации сбора данных.

addclock(daqDgt,"ScanClock","External",clkTerminal)

Запустите выходной канал счетчика для непрерывной работы в фоновом режиме.

start(daqClk,"Continuous")

Генерация импульсов начинается сразу на выходе счетчика. Данные ему не нужны.

Получение и печать цифровых входных данных.

dataIn = read(daqDgt,seconds(1),"OutputFormat","Matrix");
plot(dataIn(1:100,1))

Остановите clock DataAcquisition.

stop(daqClk)

Связанные темы