exponenta event banner

Подсчет импульсов цифрового сигнала с помощью устройств NI

В этом примере показано, как определить скорость вращения контроллера двигателя Anaheim Automation путем подсчета количества растущих фронтов в сигнале. Контроллер возвращает импульсы эффекта Холла (квадратные волны), которые служат в качестве обратной связи по частоте для скоростей вращения двигателя.

Создание канала ввода счетчика

Использовать daq для создания DataAcquisition и addinput для добавления входного канала счетчика с EdgeCount тип измерения. В данном примере используется корпус CompactDAQ NI c9178 и модуль NI 9402 с идентификатором cDAQ1Mod5.

dq = daq("ni");
ch = addinput(dq,"cDAQ1Mod5", "ctr0", "EdgeCount");
ch
ch = 

    Index    Type      Device       Channel    Measurement Type    Range          Name      
    _____    ____    ___________    _______    ________________    _____    ________________

      1      "ci"    "cDAQ1Mod5"    "ctr0"       "EdgeCount"       "n/a"    "cDAQ1Mod5_ctr0"

Определение клеммы входного канала счетчика

Для подключения входного сигнала к соответствующей клемме проверьте Terminal свойство канала. Терминал определяется аппаратными средствами.

ch.Terminal
ans =

    'PFI0'

Чтение канала счетчика

Чтобы определить, работает ли счетчик, введите одно сканирование, приостановите вращение двигателя и снова прочтите счетчик.

read(dq)
ans =

  timetable

    Time     cDAQ1Mod5_ctr0
    _____    ______________

    0 sec          3       

pause(0.1);
read(dq)
ans =

  timetable

    Time     cDAQ1Mod5_ctr0
    _____    ______________

    0 sec          14      

pause(0.1);
read(dq)
ans =

  timetable

    Time     cDAQ1Mod5_ctr0
    _____    ______________

    0 sec          27      

Измерить обороты в секунду

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

resetcounters(dq);
pause(1);
read(dq, "OutputFormat", "Matrix")/3
ans =

   33.6667

Использование аппаратных часов для повышения точности

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

dq = daq("ni");
addinput(dq,"cDAQ1Mod1", "ai0", "Voltage");
addinput(dq,"cDAQ1Mod5", "ctr0", "EdgeCount");
data = read(dq, seconds(0.25));
plot(data.Time, data.Variables);