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

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

Sharing counter pulses as an external clock

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

Примечание

Импорт внешнего синхроимпульса не устанавливает автоматическую скорость скана вашего DataAcquisition. Установите вручную Rate DataAcquisition значение свойства, соответствующее ожидаемой внешней тактовой частоте.

Сгенерируйте часы, используя выходной канал счетчика

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

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

clockFreq = 100;

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

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

Совет

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

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

clkTerminal = ch1.Terminal;

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

ch1.Frequency = clockFreq;

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

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

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

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

Примечание

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

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

Совет

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

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

daqDgt.Rate = clockFreq;

Импортируйте часы из вашего синхроимпульса DataAcquisition, чтобы синхронизировать ваше приобретение.

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

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

start(daqClk,"Continuous")

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

Сбор и построение цифровых входных данных.

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

Остановите синхроимпульс DataAcquisition.

stop(daqClk)

Похожие темы