主要内容

使用NI设备获取连续和背景数据

此示例显示了如何使用非阻塞命令获取模拟输入数据。这允许您在采集期间继续在MATLAB命令窗口中工作。这就是所谓的背景收购。采用前景收购要使MATLAB等待整个采集完成,然后再执行下一个命令。

创建和配置DataAcquisition对象

采用DAQ.创建DataAcquisition对象和addInput.添加输入通道到它。此示例在NITIONInstruments®CompactDAQ机箱NI CDAQ-9178中使用NI 9205模块。这是底盘中的模块1。

dq = daq(“你”);addInput(DQ,“cdaq1mod1”“ai0”“电压”);dq.rate = 2000;

绘制实时数据,因为它被获取

在后台获取期间,DataAtQuisition可以使用指定的方式处理获取的数据scansavailablefcn.财产。

dq.scansavailablefcn = @(src,evt)plotdataavailable(src,evt);

设置scansavailablefcncount.

默认情况下,ScansavailableFCN每秒调用10次。修改scansavailablefcncount.属性降低呼叫频率。当累积的点数超过此值时将调用ScansavailableFCN。将scansavailablefcncount设置为速率,从一次调用每秒拨打ScansavailableFCN。

dq.scansavailablefcncount = 2000;

开始背景获取

采用开始开始后台采集。

开始(DQ,“期间”,秒(5))

没有其他计算执行,并且将采集设置为在整个五秒钟内运行。采用暂停在循环中监控获取持续时间所获得的扫描的数量。

尽管dq.running暂停(0.5)fprintf(“循环:扫描获得=%d \ n”,dq.numscansacquired)结尾fprintf(“收购因%D扫描而停止\ n”,dq.numscansacquired);
循环:扫描获得= 1000

在传入数据中捕获唯一的事件

连续获取,直到满足特定条件。在该示例中,获取直到信号等于或超过1 V.

dq.scansavailablefcn = @(src,evt)stopwhenequalsorexceedsonev(src,evt);

配置DataAcquisition以连续获取。侦听器检测到1V事件并呼叫停止

开始(DQ,“连续的”);

采用暂停在循环中监控获取持续时间所获得的扫描的数量。请注意,显示的状态字符串scansavailablefcn.可能会出现在循环上显示的最后一个状态字符串之前。

尽管dq.running暂停(0.5)fprintf(“循环:扫描获得=%d \ n”,dq.numscansacquired)结尾fprintf(“收购已终止%D扫描获取\ n”,dq.numscansacquired);dq.scansavailablefcn = [];
循环:获取扫描= 1000检测到电压超过1V:停止采集而循环:获取= 2000获取已终止2000年获取的扫描

功能plotdataavailable(src,〜)[数据,时间戳,〜] = read(src,src.scansavailablefcncount,“输出格式”“矩阵”);绘图(时间戳,数据);结尾功能stopwhenequalsorexceedsonev(src,〜)[数据,时间戳,〜] = read(src,src.scansavailablefcncount,“输出格式”“矩阵”);如果任何(数据> = 1.0)disp(“检测到电压超过1V:停止采集”%明确停止连续收购src.stop()绘图(时间戳,数据)别的DISP('继续获得数据'结尾结尾
循环:扫描= 2200时循环:扫描= 3200而循环:循环获取= 4200时:循环获取= 5200时:循环获取= 7200时= 7200循环:扫描获取= 8200时循环:扫描获取= 9200,而循环:获取扫描= 10000采集停止,10000扫描获取