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