主要内容

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

这个例子展示了如何使用非阻塞获得模拟输入数据的命令。这允许您继续工作在MATLAB命令窗口的收购。这就是所谓的背景收购。使用前景收购导致MATLAB等待整个收购完成才能执行下一个命令。

创建和配置DataAcquisition对象

使用数据收集创建一个DataAcquisition对象addinput添加一个输入通道。这个示例使用一个NI 9205年国家仪器模块®CompactDAQ底盘倪cdaq - 9178。这是模块1的底盘。

dq =采集(“倪”);addinput (dq,“cDAQ1Mod1”,“ai0”,“电压”);dq。率= 2000;

情节获取实时数据

背景收购期间,DataAcquisition可以处理获得的数据在指定的方式使用ScansAvailableFcn财产。

dq。ScansAvailableFcn = @ (evt) src 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

捕获一个独特的事件在传入的数据

获得不断,直到特定的条件满足。在这个例子中,获取,直到信号等于或超过1 V。

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

配置DataAcquisition不断收购。侦听器检测到1 v事件和调用停止

开始(dq,“连续”);

使用暂停在一个循环中监控扫描期间获得的数量。注意,字符串显示的状态ScansAvailableFcn可能出现之前最后一个状态while循环显示的字符串。

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

函数plotDataAvailable (src, ~)(数据、时间戳~)=阅读(src, src.ScansAvailableFcnCount“OutputFormat”,“矩阵”);情节(时间戳、数据);结束函数stopWhenEqualsOrExceedsOneV (src, ~)(数据、时间戳~)=阅读(src, src.ScansAvailableFcnCount“OutputFormat”,“矩阵”);如果任何(数据> = 1.0)disp (“检测到电压超过1 v:停止收购”)%停止连续收购明确src.stop()图(时间戳,数据)其他的disp (“继续获取数据”)结束结束
While循环:While循环扫描获得= 2200:扫描获得= 3200 While循环:扫描获得= 4200 While循环:扫描获得= 5200 While循环:扫描获得= 6200 While循环:扫描获得= 7200 While循环:扫描获得= 8200 While循环:扫描获得= 9200 While循环:扫描获得= 10000与10000年收购停止扫描