1

我有一个机箱 cDAQ-9174 和两个 DAQ(NI 9421 和 NI9208),用于监控一些基于电压的传感器并读取一些基于频率的传感器。

为此,在 MATLAB 中,我创建了一个会话,其中我为基于电压的传感器添加了 ai_channels,为频率传感器添加了 ci_channels。我什至设法进行了缓冲采集,因此我可以获得 1 Hz 频率同步读数:

“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 不是,所以我使用 NIDAQmx 库将此代码转换为 python (v3.7)。

我很失望地发现,显然,您不能将不同的频道类型添加到同一个任务中:

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 代码是否有效(并且确实有效),以及如何实现两个已同步获取数据的任务。

4

0 回答 0