Как синхронизировать чтение каналов ctr и ai с помощью API NIDAQmx? - PullRequest
1 голос
/ 11 апреля 2019

У меня есть шасси cDAQ-9174 и два DAQ (NI 9421 и NI9208), которые я использую для мониторинга некоторых датчиков на основе напряжения и считывания некоторых датчиков на основе частоты.

Для этого в MATLAB ясоздал сеанс, где я добавил ai_channels для датчиков на основе напряжения и ci_channels для датчиков частоты.Мне даже удалось сделать буферизованное приобретение, чтобы я мог получить синхронизированные показания частоты 1 Гц:

"Код Matlab"

s = daq.createSession('ni'); 
addAnalogInputChannel(s,'cDAQ3Mod3','ai2','Voltage');
addCounterInputChannel(s,'cDAQ3Mod2', 'ctr0', 'Frequency');
addCounterInputChannel(s,'cDAQ3Mod2', 'ctr1', 'Frequency');
% addCounterInputChannel(s,'cDAQ3Mod2', 'ctr2', 'Frequency');
% addCounterInputChannel(s,'cDAQ3Mod2', 'ctr3', 'Frequency'); 

s.DurationInSeconds=5; %Tempo de aquisição
s.Rate=1; %Number of samples per second
% inputSingleScan(s)

[data,time]=s.startForeground();

Поскольку лицензии Matlab немного дороги, а python - нет, япреобразовывал этот код в python (v3.7) с использованием библиотеки NIDAQmx.

Я был очень разочарован, обнаружив, что, очевидно, вы не можете добавлять разные типы каналов для одной и той же задачи:

import nidaqmx as daq

fTask = daq.Task()
fTask.ai_channels.add_ai_voltage_chan("/cDAQ3Mod1/ai8")
fTask.ai_channels.add_ai_voltage_chan("/cDAQ3Mod1/ai0")
ftask.ci_channels.add_ci_freq_chan("cDAQ3Mod2/ctr0")

nidaqmx.errors.DaqError: Task cannot contain a channel with the specified channel type, because the task already contains channels with a different channel type.

Status Code: -200559

В документации по этой ошибке вы найдете:

Ошибка -200559 Задача не может содержать канал с указанным типом канала, так как задача уже содержит каналы с другим типом канала.Создайте одну задачу для каждого типа канала.

Итак, сейчас я озадачен тем, что код MATLAB работает (и работает), и как я могу реализовать две задачи, которые синхронизировали полученные данные.

...