【NI-DAQmx入门】多通道数据采集
1.通道扩展解释
通道扩展是扩展数据采集设备的通道以包含另一个设备的通道的过程,从而有效地创建具有更多通道的任务。当使用通道扩展时,DAQmx 自动在 DAQmx 驱动程序级别路由触发器和时钟,以便多个设备同步。为了使设备作为一个整体运行,这种同步是必要的。通道扩展是同步多个 DAQmx 设备的最简单且通常最精确的方法之一。
此外,即使使用通道扩展,多个 DAQmx 创建虚拟通道实例也可以合并到一个 DAQmx 任务中。这允许单个 DAQmx 任务包含不同的测量类型以及来自多个设备的通道。
通过多次调用DAQmx创建通道VI,能够在同一任务中创建不同测量类型的通道。要将电流读数添加到电压读数中,可以串联创建两个通道。以下屏幕截图显示了对示例“电压-连续输入”(帮助>>查找范例>>硬件输入与输出>> DAQmx >>模拟输入)的编辑,以获取电流读数和电压读数:
尽管 DAQmx 任务可以将多个通道捆绑在一起,但它通常仅限于只能访问一个硬件设备(Compact DAQ、S 系列、X 系列和 DSA 模块除外)。如果您尝试将多个设备组合到一个任务中,如下所示,您将收到此错误,因为每个设备都有自己的采样时钟,并且任务只能在一个采样时钟上计时。
相反,您应该为每个设备使用单独的 DAQmx 任务,如下所示。
排除的模块允许进行此类设置,因为 S 系列、X 系列和 DSA 模块支持模拟输入的通道扩展(请参阅下面链接的相关知识库),并且紧凑型 DAQ 机箱可以对它们包含的所有模块使用单个采样时钟。
一般规则和条件
所有设备
- 任务中的所有通道必须是同一类型设备的模拟输入通道(即所有 DSA 设备、或所有 S 系列设备、或所有 X 系列设备、或所有 CompactDAQ 设备),但 SC Express 除外,它可以与某些 X 系列设备或某些 DSA 设备结合使用。
- 输入通道名称时,请遵循物理通道的语法,例如,冒号可用于表示通道范围,逗号可用于分隔各个通道或通道范围。
PXI 设备
- 这些设备必须全部位于一个机箱中,并且必须在 NIMeasurement & Automation Explorer (NI MAX) 中识别该机箱。
PCIe 设备
- 您必须使用 RTSI 电缆来连接设备,并且必须在 MAX 中识别该电缆。
DSA 和 SC Express 设备
- 如果通道扩展任务仅包含 PXI-447x 设备的通道,则其中一个 PXI-447x 设备必须位于 PXI 插槽 2 中。
- 如果任务包括来自 PXI-4461/4462 和 PXI-447x 设备的通道,则 PXI-4461/4462 设备必须位于 PXI 插槽 2 中。
- NI-DAQmx 考虑了具有某些资格的设备之间的滤波器延迟差异:
- NI 4461 和 4462 设备缺乏补偿滤波器延迟的能力。
- 对于所有其他设备,如果任务包括来自不同设备系列的通道,NI-DAQmx 将计算设备之间的滤波器延迟差异。
- 在单个任务中包含多个设备,让 NI-DAQmx 自动同步它们,并启用设备的触发偏差校正。通过让 NI-DAQmx 启用触发偏移校正,驱动器可以通过将触发器锁定到参考时钟来补偿跨多个设备的触发信号的偏移。它还允许设备在该时钟的后续边沿响应触发,而不是立即响应。触发偏差校正功能仅适用于 PXI Express 机箱。使用这些类型的设备,您可以扩展模拟输入或输出通道;但是,单个任务中的所有通道必须具有相同的 I/O 类型。X 系列的另一个警告是 USB 设备不能用于跨多个设备的通道扩展。
CompactDAQ 设备
- 所有模拟输入 CompactDAQ 模块以及大多数模拟输出和数字 I/O CompactDAQ 模块都能够将通道组合到单个 DAQmx 任务中。
- 单个 DAQmx 任务中涉及的所有 CompactDAQ 设备必须位于同一机箱中,除非您要在具有 9469 模块的机箱之间进行同步。您必须至少拥有 DAQmx 9.9 才能执行此操作。
- 任务中的所有通道必须属于同一类型(即所有模拟输入模块、所有模拟输出模块或所有数字 I/O 模块)。
- 任务数量受机箱、使用的模块和任务类型的限制。
但是,您可以将多个 DAQmx 创建虚拟通道实例包含到一个 DAQmx 任务中,只要它们共享相同的 I/O 类型即可。例如,您可以将电压通道与温度通道组合起来。这意味着您可以在单个 CompactDAQ 机箱或控制器内自动同步具有不同测量、不同测量范围或不同测量单位的单个任务。
通过通道扩展,您可以将不同类型的模拟输入模块(扫描、Delta-Sigma、慢采样)混合到同一任务中,并允许 NI-DAQmx 驱动程序自动为您同步它们。驱动程序选择最佳的方法来同步不同类型的模块。了解有关这些不同同步类型的更多信息。当您在单个任务中混合使用 C 系列 Delta-Sigma 模块(例如 NI 9234 和 NI 9218)时,您需要考虑设备之间的滤波器延迟。该延迟也称为输入延迟。有关设备的延迟,请参阅设备的规格手册。
从NI-DAQmx 9.9开始,您可以使用NI 9469 C系列同步模块链接多个CompactDAQ机箱或连接到CompactDAQ控制器的机箱,应用通道扩展功能使它们感觉像一个设备,并让驱动程序处理此同步自动地。NI 9469 可简化信号路由和编码,并同步扫描、慢速采样和 Delta-Sigma 模拟输入模块;数字输入模块;数字输出模块;和不同机箱拓扑中的模拟输出模块。您可以在Measurement & Automation Explorer (MAX)软件中配置NI 9469模块之间的连接
在MAX中配置NI 9469后,配置任务的过程几乎与单机箱通道扩展方法相同。
但是,在跨多个机箱使用通道扩展时,您必须考虑一些因素。任务内通道列表中的第一个通道必须位于主机箱内。主机箱由机箱连接的物理配置决定,并且必须能够向从机箱输出信号。此外,如果任务包含来自 Delta-Sigma 模块的通道,则主机箱内 Delta-Sigma 模块上的通道需要位于任务通道列表的第一个位置。
2. 同时配置差分和单端DAQmx任务
方法1:
在单个任务中组合不同的输入端子配置和测量类型(热电偶、应变仪等),如下所示。
方法2:
创建一个 for 循环并在其中调用 DAQmx Create Virtual Channel,将任务输入和任务输出端子连接到移位寄存器。然后,您需要为每个通道创建具有不同配置(最大值和最小值、输入端子配置等)的数组,并将它们连接到相应的端子。如果通道被指定为通道范围,例如Dev1/ai0:Dev1/ai4,则可以使用 DAQmx Unflatten Channel String VI将通道范围转换为通道数组,并将其连接到物理通道端子。
下面演示了使用 DAQmx 属性节点返回可为四个输入配置中的每一个配置的通道数组。
3.多通道输入范围的DAQmx采集
4.为每个通道设置交流和直流耦合
5. 为每个 AI 通道创建自定义线性刻度
6.使用外部时钟进行通道扩展
通过 PXI_Trig 线连线,您可以使用外部时钟源作为采样时钟。通道扩展负责在后台的多个设备上同时采样。此代码显示了您可以使用的典型设置,尽管在此示例中,外部时钟是从计数器提供给 PXI_Trig 线
7.多功能DAQ设备以不同速率采样通道
独立 NI-DAQmx 任务的数量,以及可使用的不同采样率的数量,由该卡可用的定时引擎的数量决定:
- X系列卡,STC3芯片允许一项模拟输入任务、一项模拟输出任务和一项数字输入/输出任务。
- M系列卡 使用STC2芯片,允许一项模拟输入任务和一项模拟输出或数字输入/输出任务。
- S系列卡采用DAQ-STC芯片,该芯片有一个专门用于模拟输入任务的定时引擎。
一般来说,如果您需要在多个通道上以不同的速率进行采样,最简单且推荐的方法是以更高的速率对所有通道进行采样,并丢弃软件中的任何其他采样。您还可以以编程方式写入模拟输出数据,这些数据看起来具有不同的速率,具体取决于您的采样方式。
在多路复用设备上,有一种方法可以管理转换时钟速率和扫描列表,以在不同通道上获取不同数量的样本。此方法的一个要求是,由于采样时钟必须从主时基向下分频,因此使用的所有采样时钟速率必须具有公约数:
- 理解这一点非常重要:该方法仅返回反映采样通道 1(300 kS/s)和通道 2(100 S/s)的样本数。为通道 1 生成的样本不会像通道 2 那样均匀分布。更具体地说,通道 1 将每 10 ms 读取 3 个样本,而不是按照真正的 300kS/s 采样率预期每 3.33 ms 读取 1 个样本。如下图所示:
如果无法在软件方面删除额外的样本,并且多路复用采样解决方案不可行,则可以使用其他NI 硬件来实现跨通道的多个采样率。
另一种替代解决方案是使用 Resample Waveforms (single shot).vi 对高频测量值进行重新采样。例如,用户希望在通道 0 中使用 15kHz,在通道 1 中使用 1kHz 作为采样频率。客户可以在下面的VI中使用15kHz作为<最高频率>和1kHz作为<预期频率>。
- 如果速率确定卡未同时采样,则最大采样率将分布在卡上的所有通道上。例如,如果上述 NI-9237 上使用的采样率在两个通道上被分割为每通道 25kS/s,则 NI-9201 将被限制为 25kS/s,而不是 50kS/s。
- 如果您的慢速模块具有同步输入(就像大多数慢速模块一样),则无需将模块的采样率除以模块上的通道数。每个通道将能够实现最大采样率,因此将为每个通道单独返回与仅为一个通道返回相同数量的重复样本。
- 某些慢速模块(即NI-9219等)对于不同类型的任务具有不同的最大采样率。这将是模块本身的示例模式属性,必须在软件中进行配置。
相关文章:

【NI-DAQmx入门】多通道数据采集
1.通道扩展解释 通道扩展是扩展数据采集设备的通道以包含另一个设备的通道的过程,从而有效地创建具有更多通道的任务。当使用通道扩展时,DAQmx 自动在 DAQmx 驱动程序级别路由触发器和时钟,以便多个设备同步。为了使设备作为一个整体运行&…...

回顾 — SFA:简化快速 AlexNet(模糊分类)
模糊图像的样本 一、说明 在本文回顾了基于深度学习的模糊图像分类(SFA)。在本文中:Simplified-Fast-AlexNet (SFA)旨在对图像是否因散焦模糊、高斯模糊、雾霾模糊或运动模糊而模糊进行分类。 二、大纲 图像模糊建模简要概述简化快速 AlexNet…...

基于51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)
PCF8591数字电压表数码管显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲…...

分发饼干(贪心算法+图解)
455. 分发饼干 - 力扣(LeetCode) 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最…...

vue项目路由使用history模式,nginx配置,刷新页面显示404
需要在配置项中添加 try_files $uri $uri/ /index.html;...
redis的redis.service配置
在CentOS中,可以使用以下步骤配置redis.service: 创建redis用户和组 在终端中执行以下命令: 复制插入 sudo useradd -r -s /bin/false redis复制插入 这将创建一个名为redis的系统用户,并禁止该用户登录系统。 安装Redis 在…...

高频SQL50题(基础版)-3
文章目录 主要内容一.SQL练习题1.1174-即时食物配送代码如下(示例): 2.550-游戏玩法分析代码如下(示例): 3.2356-每位教师所教授的科目种类的数量代码如下(示例): 4.1141-查询近30天活跃用户数代码如下&…...

OpenMMlab导出yolov3模型并用onnxruntime和tensorrt推理
导出onnx文件 直接使用脚本 import torch from mmdet.apis import init_detector, inference_detectorconfig_file ./configs/yolo/yolov3_mobilenetv2_8xb24-ms-416-300e_coco.py checkpoint_file yolov3_mobilenetv2_mstrain-416_300e_coco_20210718_010823-f68a07b3.pth…...
单链表的插入删除
#include <iostream>#include <stdio.h> #include <stdlib.h>using namespace std;//带头指针的单链表typedef struct LNode{int data;struct LNode *next;}LNode, *LinkList;bool InitList(LinkList &L){L (LNode *) malloc(sizeof(LNode));if(L NUL…...

github使用手册
核心代码 配置用户名/邮箱 best practice git init #在本地初始化一个仓库 git add . #将当前目录所有的文件加入(注意这里是加入)到缓存区 git commit -m "xxx" #将当前缓存区里的内容提交到本地仓库 git remote add <remote_rep_name&g…...
怎样做ChatGPT应用开发?
要开发一个基于ChatGPT的应用,你可以按照以下步骤进行: 步骤1:了解ChatGPT API ChatGPT的使用通常通过API进行。你需要了解ChatGPT的API文档,包括如何进行请求、API端点、身份验证等信息。在开发之前,确保你已经获取了…...

漏洞-任意账号注册
一漏洞介绍 1.未验证邮箱/手机号 情景:应用为了方便用户记录用户名,使用邮箱和手机号作为用户名(因此很多应用在注册的时候就要求用户填写,多数时候都会给用户发送激活信息,激活后才能登录) 缺陷ÿ…...

一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目
首先 : 整个项目的项目结构为 : 1.第一步先导入数据库的驱动,我的mysql数据库是8.0以上版本,然后导入的驱动就是8.0.16版本的jar包; 1.JdbcBase : JDBC基础操作封装成了JdbcBase类,在里面先静态定义了数据库连接对象和DQL查询结果&#x…...
C++用条件变量实现线程安全的queue容器
#include <queue> #include <memory> #include <mutex> #include <condition_variable> template<typename T> class threadsafe_queue { private:mutable std::mutex mut; // 1 互斥量必须是可变的 std::queue<T> data_queue;std::condi…...

EDA实验-----3-8译码器设计(QuartusII)
目录 一. 实验目的 二. 实验仪器 三. 实验原理及内容 1.实验原理 2.实验内容 四.实验步骤 五. 实验报告 六. 注意事项 七. 实验过程 1.创建Verilog文件,写代码 编辑 2.波形仿真 3.连接电路图 4.烧录操作 一. 实验目的 学会Verilog HDL的…...

NFTScan | 11.06~11.12 NFT 市场热点汇总
欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.11.06~ 2023.11.12 NFT Hot News 01/ 《辛普森一家》提及 NFT 及区块链,相关 NFT 地板价涨至 0.35 ETH 11 月 6 日,据 Coindesk 报道,美国时间周…...

2022年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面哪个语句正确定义了元组类型数据tuple1?( ) A: tuple1=[“张三”,“李四”,“王五”] B: tuple1=(“张三”;“李四”;“王五”) C: tuple1=(张三,李四,王五) D: tuple1=(“张三…...
第三章 将对象映射到 XML - 使用列表或数组定义的属性
文章目录 第三章 将对象映射到 XML - 使用列表或数组定义的属性使用列表或数组定义的属性%ListOfDataTypes 或 %ArrayOfDataTypes 类型的属性%ListOfObjects 或 %ArrayOfObjects 类型的属性 第三章 将对象映射到 XML - 使用列表或数组定义的属性 使用列表或数组定义的属性 对…...
C/S架构学习之基于TCP的本地通信(客户机)
基于TCP的本地通信(客户机):创建流程:一、创建字节流式套接字(socket函数): int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…...
CCF 备忘
一、不错的网站 CCF CCSP 竞赛历年资料 官网 http://118.190.20.162/home.page 二、基础套路 循环输入 数组标记法(数组下标-数值 的映射) 两个矩阵相乘 map<long long, map<long long, long long> > ans; for(int i1;i<d;i){for(int…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...