Регистрируйте данные об аналоговом входе к файлу Используя устройства NI

В этом примере показано, как сохранить данные, полученные в фоновом режиме к файлу. Используйте основанный на сеансе интерфейс, и получает команды неблокирования использования данных об аналоговом входе. Если вы используете устаревший интерфейс, обратитесь к "Регистрации Данных К Диску" в списке примеров Аналогового входа

Создайте сеанс с каналами аналогового входа

Создайте сеанс и добавьте два канала аналогового входа с Voltage тип измерения. Поскольку этот пример использует Национальное устройство сбора данных Instruments® X Series, NI карта PCIe-6363 с ID Dev1.

d = daq.getDevices;
s = daq.createSession('ni');
addAnalogInputChannel(s,'Dev1',0:1, 'Voltage');
s
s = 

Data acquisition session using National Instruments hardware:
   Will run for 1 second (1000 scans) at 1000 scans/second.
   Number of channels: 2
      index Type Device Channel MeasurementType      Range       Name
      ----- ---- ------ ------- --------------- ---------------- ----
      1     ai   Dev1   ai0     Voltage (Diff)  -10 to +10 Volts
      2     ai   Dev1   ai1     Voltage (Diff)  -10 to +10 Volts
   

Создайте файл журнала

Создайте файл log.bin и откройте его. Вы запишете полученные данные в этот файл в двоичном формате. Сохраните идентификатор файла в переменной fid1.

fid1 = fopen('log.bin','w');

Добавьте прослушиватель

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

Используйте addlistener добавить анонимную функцию в сеанс. Эта функция вызвана каждый раз DataAvailable событие имеет место и регистрирует полученные данные к файлу. По умолчанию этот прослушиватель называется 10 раз в секунду.

Анонимная функция logData требует трех входных параметров:

  • src- источник события

  • event- имя события

  • fid1- идентификатор файла для регистрации данных

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

lh = addlistener(s,'DataAvailable',@(src, event)logData(src, event, fid1));

Получите данные в фоновом режиме

Получайте данные постоянно в не блокирующемся режиме.

s.IsContinuous = true;
s.startBackground;

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

pause(5);

Остановите непрерывное приобретение и закройте файл журнала

Явным образом вызовите остановку после 5 секунд, чтобы закончить фоновое приобретение и удалить прослушиватель.

  • Закройте файл журнала.

s.stop;
delete(lh);
fclose(fid1);

Загрузите данные из файла журнала

  • Считайте файл журнала.

  • Загрузите содержимое файла как 3 матрицы столбца в data.

  • Закройте файл журнала.

fid2 = fopen('log.bin','r');
[data,count] = fread(fid2,[3,inf],'double');
fclose(fid2);

Отобразите данные на графике

  • Присвойте каждый столбец data к следующим переменным:

  • t- время

  • ch- образуйте канал 0 и канал 1

  • Постройте ch против t.

t = data(1,:);
ch = data(2:3,:);
plot(t, ch);

Запишите функцию, чтобы регистрировать данные.

Создайте многострочный функциональный logData и сохраните в отдельном файле MATLAB.

type logData.m
function logData(src, evt, fid)
% Add the time stamp and the data values to data. To write data sequentially,
% transpose the matrix.

%   Copyright 2011 The MathWorks, Inc.

data = [evt.TimeStamps, evt.Data]' ;
fwrite(fid,data,'double');
end
Для просмотра документации необходимо авторизоваться на сайте