主要内容

使用NI设备获取连续和后台数据

这个例子展示了如何使用非阻塞命令获取模拟输入数据。这允许您在采集期间继续在MATLAB命令窗口中工作。这叫做背景收购.使用前景收购使MATLAB在执行下一个命令之前等待整个采集完成。

创建并配置数据采集对象

使用数据收集创建DataAcquisition对象和addinput向其添加一个输入通道。本例使用的是National Instruments®CompactDAQ Chassis NI cDAQ-9178中的NI 9205模块。这是机箱中的模块1。

Dq = daq(“倪”);addinput (dq,“cDAQ1Mod1”“ai0”“电压”);dq。比率= 2000;

绘制实时数据,因为它是获得的

在后台采集过程中,DataAcquisition可以使用指定的方式处理所采集的数据ScansAvailableFcn财产。

dq。ScansAvailableFcn = @(src,evt) plotDataAvailable(src, evt);

设置ScansAvailableFcnCount

缺省情况下,ScansAvailableFcn每秒被调用10次。修改ScansAvailableFcnCount属性以减少调用频率。当累积的点数超过这个值时,ScansAvailableFcn将被调用。将ScansAvailableFcnCount设置为速率,这将导致每秒调用一次ScansAvailableFcn。

dq。ScansAvailableFcnCount = 2000;

开始后台采集

使用开始开始后台采集。

开始(dq,“持续时间”秒(5))

不需要执行其他计算,采集设置为在整个5秒内运行。使用暂停在循环中监视采集期间采集的扫描数。

dq。运行暂停(0.5)"While循环:扫描已获取= %d\n"dq.NumScansAcquired)结束流(“获取停止,%d扫描已获得\n”, dq.NumScansAcquired);
While循环:已获取扫描次数= 1000

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

持续获取,直到满足特定条件。在这个例子中,获取直到信号等于或超过1v。

dq。ScansAvailableFcn = @(src,evt) stopWhenEqualsOrExceedsOneV(src, evt);

将数据采集配置为连续采集。监听器检测到1V事件并进行呼叫停止

开始(dq,“连续”);

使用暂停在循环中监视采集期间采集的扫描数。方法显示的状态字符串ScansAvailableFcn可能出现在while循环显示的最后一个状态字符串之前。

dq。运行暂停(0.5)"While循环:扫描已获取= %d\n"dq.NumScansAcquired)结束流(“获取已终止,已获取%d个扫描\n”, dq.NumScansAcquired);dq。ScansAvailableFcn = [];
检测到电压超过1V:停止采集While循环:已获取扫描= 2000采集已终止,已获取2000个扫描

函数plotDataAvailable(src, ~) [data, timestamps, ~] = read(src, src.)ScansAvailableFcnCount,“OutputFormat”“矩阵”);情节(时间戳、数据);结束函数stopWhenEqualsOrExceedsOneV(src, ~) [data, timestamps, ~] = read(src, src.)ScansAvailableFcnCount,“OutputFormat”“矩阵”);如果Any (data >= 1.0)“检测电压超过1V:停止采集”明确停止连续收购Src.stop () plot(时间戳,数据)其他的disp (“继续获取数据”结束结束
While循环:已获取扫描次数= 2200 While循环:已获取扫描次数= 3200 While循环:已获取扫描次数= 4200 While循环:已获取扫描次数= 5200 While循环:已获取扫描次数= 6200 While循环:已获取扫描次数= 7200 While循环:已获取扫描次数= 8200 While循环:已获取扫描次数= 9200 While循环:已获取扫描次数= 10000已获取10000次扫描次数