В этом примере показано, как использовать выходной канал счетчика устройства, чтобы сгенерировать импульсы, чтобы использовать в качестве внешнего таймера для получения цифровых данных.
В этом примере вы генерируете часы в одном DataAcquisition с помощью встречного выхода, образовывают канал и экспортируют часы в другой DataAcquisition, который получает цифровые данные. Встречный выход и цифровая подсистема могут быть на том же устройстве или на различных устройствах. При использовании нескольких устройств не в том же шасси, необходимо соединить физическое соединение между встречным выходом одного устройства к входу электронных часов другого.
Примечание
Импорт внешнего таймера автоматически не устанавливает частоту развертки вашего DataAcquisition. Вручную установите DataAcquisition Rate
значение свойства, чтобы совпадать с ожидаемой частотой внешнего таймера.
Создайте синхронизированный DataAcquisition со встречным выходным каналом, который постоянно генерирует импульсы частоты в фоновом режиме. Можно использовать этот канал в качестве внешнего таймера для синхронизированного цифрового захвата.
Задайте тактовую частоту, которая будет использоваться для синхронизации частоты развертки вашего встречного выхода, а также уровня вашего цифрового захвата.
clockFreq = 100;
Создайте объект DataAcquisition и добавьте встречный выходной канал для PulseGeneration
тип измерения.
daqClk = daq("ni"); ch1 = addoutput(daqClk,"Dev1","ctr0","PulseGeneration");
Совет
Убедитесь встречный канал, который вы добавляете, не используется в различном DataAcquisition, в противном случае терминальная ошибка конфликта происходит.
Сохраните встречный выходной ID терминала в переменную, таким образом, можно использовать его позже, чтобы задать внешний таймер, который синхронизирует цифровые синхронизированные операции.
clkTerminal = ch1.Terminal;
Установите частоту своего встречного канала к тактовой частоте.
ch1.Frequency = clockFreq;
Создайте DataAcquisition для цифрового входа и импортируйте внешний таймер из часов DataAcquisition.
Создайте DataAcquisition и добавьте цифровую входную линию от порта 0
линия 2
на Dev1
.
daqDgt = daq("ni"); addinput(daqDgt,"Dev1","Port0/Line2","Digital")
Примечание
Не вся поддержка устройств синхронизировала цифровые операции I/O с аппаратной синхронизацией. Для этих устройств можно использовать синхронизированные операции программного обеспечения с одним вызовами скана read
и write
.
Устройства, которые поддерживают синхронизированные цифровые операции I/O, не могут поддержать их на всех портах. Проверяйте свои спецификации устройств.
Совет
Ресурсы терминала PFI могут быть совместно использованы. Проверяйте свою маршрутизацию устройства в приложение MAX NI.
Установите частоту развертки 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)