LabVIEW中的数据通信方法
LabVIEW中的数据通信方法
LabVIEW中包含多种数据通信方法,不同的方法适用于不同的场景。确保在应用程序中使用正确的数据通信方法。
数据通信类型: |
数据流元素 |
缓冲接口 |
变量接口 |
应用场景: |
在多数程序框图对象间发送数据。 |
在位置间发送数据,此时要求避免或丢失数据值。 |
在内存中存储容易获取的值,目标为获取最新值。谨慎使用以避免竞争状态。 |
范例: |
从VI输出传输数据至VI输入。 |
采集波形;发送消息或命令;流输出图像。 |
监控当前温度;监控系统状态。 |
类别: |
— 连线 — 移位寄存器 — 反馈节点 — 通道线 |
内部终端或PC — 队列 — RT FIFO — 用户事件 — 异步消息传递通信(AMC)参考库已联网 — 网络流 — TCP — 简单TCP消息传递(STM)参考库内部FPGA — 终端范围的FIFO — VI定义的FIFO — DRAMFPGA至主机或主机至FPGA — DMA FIFOFPGA至FPGA — 点对点(P2P) FIFO |
内部终端或PC — 局部变量 — 全局变量 — 功能全局变量(FGV) — 单进程共享变量 — 数据值引用 — 当前值表格(CVT)已联网 — 网络发布共享变量 — 编程共享变量API — Web服务 — UDP内部FPGA — 全局变量 — 存储器项 — 寄存器项FPGA至主机或主机至FPGA — 读取/写入控件 — NI扫描引擎和变量 — 用户定义I/O变量 |
数据流元素
如要发挥LabVIEW的数据流编程环境优势,应将连线、移位寄存器、反馈节点和通道线作为应用程序的主要数据通信方法。
方法 |
属性 |
连线 |
§ 程序框图对象之间的主要数据传输 |
移位寄存器 |
§ 循环间的主要数据传输 |
反馈节点 |
§ 代码循环间的主要数据传输(无需循环) |
通道线 |
§ 在并行代码段之间进行异步通信的主要数据传输 |
缓冲接口
从一个位置发送数据至另一个位置,且不想覆盖或丢失值的情况下使用缓冲接口。缓冲接口通常表示为单元素或多元素FIFO(先进先出)缓冲区,一个或多个写入方添加数据至缓冲区一端,读取方从另一端接收数据。
内部终端或PC
方法 |
属性 |
队列 |
§ 灵活大小和访问选项 § 非确定性 |
RT FIFO(Real-Time模块) |
§ 确定性 § 轮询模式(默认)确定性地处理读取/写入等待时间,但占用大量的CPU系统开销。 § 阻隔模式处理读取/写入等待时间时优化了CPU使用,但非确定性地处理。 § 由于固定大小和限制访问选项的原因,灵活性不如队列。 |
用户事件 |
§ 应用程序不同部分间的事件触发通信 § 响应对象的编程改动 |
异步消息传递通信(AMC)库 (通过ni.com获取) |
§ 进程内和进程间消息通信 § 相对于队列,设计消息传递架构时更易于使用 § 包含“队列消息处理器”(QMH)模板 § 注:此内容符合Sample Code License Terms,通过ni.com/samplecodelicense打开条款。 |
已联网
方法 |
属性 |
网络流 |
§ 1:1通信 § 比TCP易于实现 § 自动处理未连接和重新连接 § 单向 § 仅在Windows和RT系统上可用。 |
TCP |
§ 广泛适用于需要网络连接至不支持网络流设备的应用 § 低端协议增加了执行的复杂性 |
简单TCP消息传递(STM)参考库 (通过ni.com获取) |
§ 消息访问控制低端TCP函数 § 用于实现1:N(单个服务器对多个客户端)的通信 § 注:此内容符合Sample Code License Terms,通过ni.com/samplecodelicense打开条款。 |
内部FPGA
方法 |
属性 |
终端范围的FIFO(FPGA模块) |
§ 执行选项指定FIFO使用的存储类型:触发器、查找表或块内存 |
VI定义的FIFO(FPGA模块) |
§ 执行选项指定FIFO使用的存储类型:触发器、查找表或块内存 § 通过复制每个实例的资源,避免可重入子VI的资源冲突。 § 利于用于多个项目的VI可重用代码 § 在项目浏览器窗口不可见或不可自定义 |
DRAM(FPGA模块) |
§ 使用内存项或CLIP接口与动态随机访问内存(DRAM)交互 § 相对于终端范围或VI定义的FIFO,提供了大量的缓冲内存控件 § 非确定性访问延时 § 并非全部终端可用 |
FPGA至主机或主机至FPGA
方法 |
属性 |
DMA FIFO(FPGA模块) |
§ 使用直接内存访问(DMA)传输大量数据至主机或接收来自主机的数据 |
FPGA至FPGA
方法 |
属性 |
点对点(P2P) FIFO(FPGA模块) |
§ 终端间的1:1通信 |
变量接口
在内存中存储值,且需读取方和写入方在使用最小或无流控制的情况下访问该值时使用变量接口。注意,在需要获取最新值,且允许新值覆盖之前的值的情况下使用变量。谨慎使用以避免竞争状态。
内部终端或PC
方法 |
属性 |
局部变量 |
§ 存储可通过单个VI访问的数据 |
全局变量 |
§ 存储可通过同一LabVIEW应用实例中多个VI访问的数据 |
功能全局变量(FGV) |
§ 使用未初始化寄存器存储全局数据的VI § 可实现简单全局变量和复杂的数据结构(例如,堆栈或队列缓存) § 通过定义指定操作避免了竞争状态,调用代码可对变量执行指定操作 |
单进程共享变量 |
§ 确定性选项可用 § 可扩展至网络发布的使用场景 |
数据值引用 |
§ 存储大的数据集 § 帮助管理内存并避免数据副本 |
当前值表格(CVT) (通过ni.com获取) |
§ 通用数据存储,用于带有独立组件的应用程序变量 § 通过集中I/O操作,比共享变量使用更少的计算资源 § 注:此内容符合Sample Code License Terms,通过ni.com/samplecodelicense打开条款。 |
已联网
方法 |
属性 |
网络发布共享变量 |
§ 确定性选项可用 § 监控值的理想选择 § 在网络数据服务器上存储值(共享变量引擎) § 用于1:N和N:1网络配置的内置连接管理器 |
编程共享变量API |
§ 相对于静态节点绑定,通过提供对变量的动态访问增强了设计的可扩展性 § 通过单个变量API函数访问多个变量 § 访问网络发布的I/O变量 |
Web服务 |
§ 使用标准HTTP协议的网络数据通信 § 数据流标准MIME数据类型。例如,文本、图像和视频 § 使用LabVIEW VI生成和部署网络服务 |
UDP |
§ 对于设备进程间的低端通信,支持单点传送(1:1)和多点传送(1:N) § 应用使用的协议性能如高于TCP,无需要求无损数据传输 § 低端协议增加了执行的复杂性 § 不能确保客户端接收到数据 |
内部FPGA
方法 |
属性 |
全局变量 |
§ 存储可通过同一LabVIEW应用实例中多个VI访问的数据 |
存储器项(FPGA模块) |
§ 可将值存储为多个数据点 § 执行选项指定存储项使用的存储类型:块内存、查找表或DRAM § 终端范围(在项目中配置)和VI定义(在重入VI中配置)选项 |
寄存器项(FPGA模块) |
§ 可在每个时钟周期发布状态信息 § 终端范围(在项目中配置)和VI定义(在重入VI中配置)选项 § 比FIFO占用更少的FPGA资源 |
FPGA至主机或主机至FPGA
方法 |
属性 |
读取/写入控件(FPGA模块) |
§ 读取或写入FPGA终端顶层FPGA VI的输入控件或显示控件。 |
NI扫描引擎和变量 (终端支持FPGA模块 + NI扫描引擎) |
§ FPGA I/O数据与RT主机间的简单、周期性通信 § 减少了FPGA终端与RT主机间传输I/O数据所需的代码 |
用户定义I/O变量(FPGA模块) |
§ 在混合模式使用扫描引擎时发送用户定义数据 § FPGA VI和LabVIEW RT主VI之间的数据传输 § 传输自定义FPGA处理的I/O数据 |
上文中提到的例子和资料,均在word中的附件里,可点击下载。
LabVIEW中的数据通信方法相关推荐
- LabVIEW中保存数据的方法
LabVIEW中保存数据的方法 在使用LabVIEW时,不论是数据采集还是过程记录,都涉及到数据的保存.因此,常将数据保存为.xls..xlsx..txt等格式,便于数据分析. 保存为.xls..xl ...
- 在Labview中调用M文件(Matlab文件)
使用 NI LabVIEW,不论您是在开发算法.分析结果.处理信号,还是在探索 DSP 概念,您都可以自由选择用于工程计算的语法规则.您可以将直观的 LabVIEW 图形化数据流编程与 MathScr ...
- 《Arduino开发实战指南:LabVIEW卷》——3.2 LabVIEW的数据流编程方法
本节书摘来自华章计算机<Arduino开发实战指南:LabVIEW卷>一书中的第3章,第3.2节,作者:余崇梓著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...
- #串口通信超时处理_【学院推荐】划重点!LabVIEW中串口参数需注意的几点
串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机.仪器等很多都还是使用串口通信的. 1,串口扩展的问题 先说一下串口的扩展问题,一般的台式机或工控机上都至少 ...
- 在LINQ to SQL中使用Translate方法以及修改查询用SQL
目前LINQ to SQL的资料不多--老赵的意思是,目前能找到的资料都难以摆脱"官方用法"的"阴影".LINQ to SQL最权威的资料自然是MSDN,但是M ...
- LabVIEW:自动化引用方法下Excel报表生成与存储子VI创建
LabVIEW中,通过引用自动化函数可以实现Excel 报表生成与存储,并且其丰富的属性节点和方法,可以提供多种处理和操作. Excel报表 1.1 在前面板(控件-新式-引用句柄)添加"自 ...
- 在LabVIEW中如何使用Flash动画
在LabVIEW中如何使用Flash动画 已经用Macromedia Flash创建了一个动画.我想在LabVIEW中用ActiveX控件来观看这个动画,该如何实现? 解答: 利用LabVIEW 中的 ...
- labview中java联合编程_LabVIEW与MATLAB混合编程的实现
本栏目责任编辑:谢媛媛系统软件与软件工程 ComputerKnowledgeand Technology 电脑知识与技术 第 6 卷第 15 期 (2010 年 5 月) LabVIEW 与 MATL ...
- 第三方数据采集卡在LabVIEW中使用Express VI简化编程范例
什么是Express VI? Express VI是NI LabVIEW中提供的快捷的编程方法,用很少量的操作替代复杂.底层的代码,常见的如:DAQ助手ExpressVI和仿真信号Express VI ...
最新文章
- mysql中添加外键属性_Python将值插入外键属性(MYSQL)
- 2018年的上半年目标之一:培养阅读的兴趣和爱好
- gitblit如何迁移入gitlab合并迁移_github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器...
- Android SlidingMenu插件的使用
- 2021最新全球CS专业排名发布,CMU再夺榜首,清华和MIT并列
- python中else和if的结合语句_python中else和if的结合语句_python中的if-else语句和字典...
- linux 局域网内互ping丢包_ping命令还能这么用?
- 从0成为Facebook广告高手系列教程,Facebook广告数据分析上篇
- [SQL Server]关于15517号错误的一点想法
- 中国吉非替尼行业市场供需与战略研究报告
- Oracle开源Fn,加入Serverless之争
- python函数里面可以修改一些数据类型
- 【CodeVS】p1174 靶形数独
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_02maven依赖管理的概念
- 异步操作之后让await后续的代码能够继续执行
- PVID、Access、Trunk、Hybrid三种不同端口收发规则、Vlan中tagged端口和untagged端口的区别
- 求助wpe封包遇到动态验证怎么办
- android支持u盘格式文件,安卓系统OTG支持U盘格式
- Blowfish简介
- 线下 Meetup 预告|从原理到实战,详解 Database Plus 的互联网最佳实践
热门文章
- Android APP 奔溃 ,如何在开发者选项观察错误日志
- 华为荣耀平板5怎么样_华为荣耀5平板电脑怎么样(超便宜且好用的华为荣耀5平板)...
- 分析师担忧特斯拉电动汽车需求 认为美国市场需求在下滑
- T3054 高精度练习-文件操作 codevs
- [BZOJ3054] Rainbow的信号(考虑位运算 + DP?)
- 社会工程学在***中的应用--一个密码引发的“血案”
- 测试月经周期的软件,大姨妈预测app
- 人工智能-深度学习:神经网络模型压缩技术(Network Compression)
- CreateJS-EaseJS 应用
- 【已解决】error: ‘xxx’ is not a member of ‘xxx’