主要内容

使用NI设备将模拟输入数据记录到文件中

这个例子展示了如何将后台获取的数据保存到一个文件中。

创建一个模拟输入通道的数据采集

创建一个数据采集和添加两个模拟输入通道电压测量类型。在本例中,使用美国国家仪器公司®X系列数据采集设备,带ID的NI PCIe-6363卡Dev1

D = daqlist(“倪”
d = 12×4表的DeviceID DeviceInfo描述模型  ___________ __________________________________ _____________ ____________________ " cDAQ1Mod1”“国家仪器NI 9205”“NI 9205”[1×1采集。DeviceInfo] "cDAQ1Mod2" "美国国家仪器NI 9263" "NI 9263" [1×1 daq。DeviceInfo] "cDAQ1Mod3" "美国国家仪器NI 9234" "NI 9234" [1×1 daq。DeviceInfo] "cDAQ1Mod4" "美国国家仪器NI 9201" "NI 9201" [1×1 daq。DeviceInfo] "cDAQ1Mod5" "国家仪器NI 9402" "NI 9402" [1×1 daq。DeviceInfo] "cDAQ1Mod6" "美国国家仪器NI 9213" "NI 9213" [1×1 daq。DeviceInfo] "cDAQ1Mod7" "美国国家仪器NI 9219" "NI 9219" [1×1 daq。DeviceInfo] "cDAQ1Mod8" "美国国家仪器NI 9265" "NI 9265" [1×1 daq。DeviceInfo] "Dev1" "美国国家仪器公司pci -6363" " pci -6363" [1×1 daq。DeviceInfo]"Dev2" "National Instruments NI ELVIS II" "NI ELVIS II" [1×1 daq.DeviceInfo] "Dev3" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo] "Dev4" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo]
deviceInfo = d{9,“DeviceInfo”
deviceInfo = ni: National Instruments PCIe-6363(设备ID: 'Dev1')模拟输入支持:7个范围支持速率从0.0到万博1manbetx20000000 .0扫描/秒32通道('ai0' - 'ai31')'电压'测量类型模拟输出支持:-5.0到+5.0伏,-10到+10伏范围速率从0.万博1manbetx0到2000000.0扫描/秒4通道('ao0','ao1','ao2','ao3')数字IO支持39个通道('port0/line0' - 'port2/lin万博1manbetxe6')计数器输入支持:速率从0.1到100000000.0扫描/秒4个通道('ctr0','ctr1','ctr2','ctr3')万博1manbetx'EdgeCount','PulseWidth','Frequency','Position'测量类型计数器输出支持:速率从0.1到100000000.0扫描/秒万博1manbetx4个通道('ctr0','ctr1','ctr2','ctr3')'PulseGeneration'测量类型
Dq = daq(“倪”);addinput (dq,“Dev1”0:1,“电压”);dq。渠道
ans =指数类型设备通道测量类型范围名称  _____ ____ ______ _______ ________________ __________________ __________ 1“人工智能”“Dev1”“ai0”“电压(Diff)”"-10到+10伏特" "Dev1_ai0" 2 "ai" "Dev1" "ai1" "电压(差值)""-10到+10伏" "Dev1_ai1"

创建日志文件

创建文件log.bin然后打开它。文件标识符用于写入文件。

Fid1 = fopen(“log.bin”“w”);

设置“ScansAvailableFcn”

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

dq。ScansAvailableFcn = @(src, evt) logData(src, evt, fid1);

在后台获取数据

使用开始获取5秒钟的数据。

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

在正常操作过程中,其他MATLAB命令也可以在采集过程中执行。对于本例,使用暂停在循环中监视采集期间采集的扫描数。

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

关闭日志文件

文件关闭(fid1);

从日志文件中加载数据

将文件内容作为3列矩阵加载到数据

Fid2 = fopen(“log.bin”“r”);[data,count] = fread(fid2,[3,inf],“双”);文件关闭(fid2);

分配和绘制数据

T = data(1,:);Ch =数据(2:3,:);情节(t, ch);

函数logData(src, ~, fid) [data, timestamps, ~] = read(src, src, fid)ScansAvailableFcnCount,“OutputFormat”“矩阵”);Data =[时间戳,数据]';写入文件(支撑材、数据“双”);结束
While循环:获得扫描次数= 500 While循环:获得扫描次数= 1000 While循环:获得扫描次数= 1500 While循环:获得扫描次数= 2000 While循环:获得扫描次数= 2500 While循环:获得扫描次数= 3000 While循环:获得扫描次数= 3500 While循环:获得扫描次数= 4000 While循环:获得扫描次数= 4500 While循环:获得扫描次数= 5000采集结束,获得5000次扫描次数