У меня есть шасси 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 работает (и работает), и как я могу реализовать две задачи, которые синхронизировали полученные данные.