主要内容

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

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

用模拟输入通道创建数据采集

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

d = daqlist (“倪”
d = 12×4表的DeviceID DeviceInfo描述模型  ___________ __________________________________ _____________ ____________________ " cDAQ1Mod1”“国家仪器NI 9205”“NI 9205”[1×1采集。DeviceInfo] "cDAQ1Mod2" "National Instruments NI 9263" "NI 9263" [1×1 daq.]DeviceInfo] "cDAQ1Mod3" "National Instruments NI 9234" "NI 9234" [1×1 daq.]DeviceInfo] "cDAQ1Mod4" "National Instruments NI 9201" "NI 9201" [1×1 daq.]DeviceInfo] "cDAQ1Mod5" "National Instruments NI 9402" "NI 9402" [1×1 daq.]DeviceInfo] "cDAQ1Mod6" "National Instruments NI 9213" "NI 9213" [1×1 daq.]DeviceInfo] "cDAQ1Mod7" "National Instruments NI 9219" "NI 9219" [1×1 daq.]DeviceInfo] "cDAQ1Mod8" "National Instruments NI 9265" "NI 9265" [1×1 daq.]DeviceInfo] "Dev1" "National Instruments PCIe-6363" "PCIe-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到200000 .0扫描/秒32通道('ai0' - 'ai31')模拟输出支持:-5.0到+5.0伏特,-10到+10伏特范围速率从0.0到2000000.0扫描/秒4通道('ao0','ao1','ao2','ao3')数字IO支持:39通道('port0/line0' - 'port2/line6')计数器输入支持:速率从0.1到100000000.0扫描/秒4通道('ctr0','ctr1','ctr2','ctr3')'EdgeCount','PulseWidth','Frequency','Position'测量类型计数器输出支持:速率从0.1到100000000.0扫描/秒4通道('ctr0','ctr1','ctr2','ctr3')“PulseGeneration”测量类型
dq =采集(“倪”);addinput (dq,“Dev1”0:1,“电压”);dq。渠道
ans =指数类型设备通道测量类型范围名称  _____ ____ ______ _______ ________________ __________________ __________ 1“人工智能”“Dev1”“ai0”“电压(Diff)”"-10 ~ +10 Volts" "Dev1_ai0" 2 "ai" "Dev1" "ai1" "Voltage (Diff)""-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\ndq.NumScansAcquired)结束流("获取已终止,已获取%d个扫描\n", dq.NumScansAcquired);

关闭日志文件

文件关闭(fid1);

从日志文件加载数据

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

fid2 = fopen (“log.bin”“r”);(数据,统计)=从文件中读(fid2(3正),“双”);文件关闭(fid2);

分配和绘制数据

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

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