LabVIEWCompactRIO 开发指南5

简介: LabVIEWCompactRIO 开发指南5

LabVIEWCompactRIO 开发指南5

当前值表(CVT)

当前值查找表提供了一种在应用程序中共享标记的机制,它具有动态标记查找和组管理特性,这些特性在处理大量标记时非常有用。单进程共享变量和全局变量不提供动态查找功能。当前值表(CVT)允许应用程序组件共享公共数据存储库,并可以直接访问组件之间使用的任何变量的最新值。应用程序操作(如警报检测、用户界面更新、进程逻辑等)可以由共享相同数据存储库的单独进程处理。


CVT包含三组API函数来提供不同的接口,可以根据特定的应用程序需求进行选择。基本API提供简单的写入和读取功能。另外两个API(静态API和索引API)为CVT提供了更高性能的接口,但在使用CVT时对应用程序施加了一些限制。每个API都包含示例程序。


1c9911f2c666ef54e9ffc0dcc0237fec.png


图3.9每个API的示例都以CVT库作为起点安装。


基本的API编写器示例如图3.10所示。在API调用中,变量名用于查找变量的索引,然后使用索引从CVT访问该值。本例将随机数数据分配给Var0-Var4标记,并写入Stop和Index标记。可以使用簇数组初始化标签,如图3.10所示,或者使用CVT load Tag List VI从文件加载它们。


55581a9b5dc27725f9588fbff95f9783.png


图3.10。基本CVT写入器示例


图3.11中的Basic CVT Reader示例在应用程序的另一个实例中读取标签的当前值。两个示例都使用Format Into String函数来动态查找Var0-Var4标记。


4aea173959cc3e4a6c4aa0de2eba2c2e.png


图3.11。基本CVT读取示例


可以在NI Developer Zone文档Current Value LookupTable Reference Library中找到有关CVT的更多信息。


CVT库安装说明


步骤1:浏览到ni.com/labviewtools


步骤2:下载并安装VI包管理器


步骤3:在VI包管理器中,搜索“CVT”


队列


队列是两个不确定进程之间基于命令或消息的通信的推荐协议,因为它们灵活、易于使用,并且允许传输缓冲的数据。在发送消息时,可能需要在单个数据包中发送多种数据类型。队列支持Cluster数据类型,可以使用该数据类型将固定大小和可变大小(如字符串)的不同数据类型捆绑在一起。可以在实时操作系统和Windows操作系统上使用队列。


图3.12中的框图显示了执行数据采集任务的循环。数据采集循环使用队列与第二个循环共享获取的数据。第二个循环将它从队列中读取的采集数据记录到实时目标的磁盘上。


70f701d61531960894e36049c62cb82e.png


图3.12可以使用队列在两个不确定循环之间传输缓冲数据。


队列操作面板包含在LabVIEW的Synchronization»Queue Operations下的函数面板上。可以在NI示例查找器中找到使用队列的示例程序。


RT FIFO


RT FIFO是具有确定性行为的先入先出内存缓冲区。可以使用与Queue函数类似的RT FIFO函数或启用RT FIFO的共享变量来实现它们。这两种机制在本质上是相同的。虽然支持RT FIFO的共享变量的实现比RT FIFO函数更简单,但RT FIFO函数提供了更多的控制。例如,使用RT FIFO函数,可以决定何时创建FIFO以及何时关闭FIFO。共享变量在第一次调用时自动创建,并在应用程序停止时关闭。还可以控制配置选项,例如轮询还是阻塞来优化性能,并且可以使用更复杂的数据类型,例如集群(只要它们包含固定大小的元素)。本节讨论RTFIFO函数和启用RT FIFO的共享变量。


RT FIFO功能


RT FIFO函数类似于Queue函数,但灵活性较差,更具确定性。推荐用在RTOS上任意两个进程之间的数据流,因为它们总是预先分配内存并具有最大缓冲区大小。RT FIFO也推荐用在向时间关键循环传输命令或消息。它们提供了一种不增加抖动的确定性数据传输方法。队列和RT FIFO在以下方面有所不同:


队列可以处理字符串、变量和其他可变大小的数据类型,但是RT FIFO不能。


■RT FIFO的大小是固定的,因此它们可以在定时循环之间传输数据,而无需动态分配新的内存。队列可以随着添加元素而增长。


■队列在读写共享资源时使用阻塞调用,这可能会阻塞另一个循环的运行并影响确定性。RT FIFO不使用阻塞调用。


■RT FIFO执行时不考虑输入错误,以保持确定性;队列不会在错误时执行。


图3.13中的框图类似于前面使用队列的示例,但是由于数据采集循环现在是确定的,因此使用RTFIFO函数来共享数据。优先级为100的确定性循环使用RT FIFO函数与非确定性循环共享获取的数据。不确定性循环将它从RT FIFO读取的采集数据记录到实时目标的磁盘上。可以在第4章:网络通信的最佳实践中下载RT FIFO的更高级示例。



cdeca3f5b328d0fb843c35e5c6a89a5e.png


图3.13使用RT FIFO将缓冲数据传输到时间临界循环或从时间临界循环传输。


由于固定大小的限制,RT FIFO可能是一种有损通信方法。当FIFO满时,将数据写入RT FIFO会覆盖最老的元素。因此必须在FIFO满之前读取存储在RT FIFO中的数据,以确保在不丢失数据的情况下传输每个元素。检查RT FIFOWrite功能的覆盖输出,以确保没有覆盖数据。如果RT FIFO覆盖数据,覆盖输出返回TRUE值。


RT FIFO函数包含在LabVIEW实时的LabVIEWReal-Time»RT FIFO下的函数选板上。可以在NI示例查找器中找到具有RT FIFO功能的示例程序


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
小程序 前端开发 JavaScript
uniapp转微信小程序编译报错 Bad attr `data-event-opts` with message
uniapp转微信小程序编译报错 Bad attr `data-event-opts` with message
|
监控 前端开发 Java
错误码如何设计才合理?
对于错误码的设计,不同的开发团队有不同的风格习惯。本文分享阿里文娱技术专家长统对于错误码的看法,希望从错误码使用的不同场景讨论得到一个合理的错误码规约,得到一个面向日志错误码标准和一个面向外部传递的错误码标准。
11680 3
错误码如何设计才合理?
|
监控 算法 Linux
LabVIEW开发CAN通讯协议
LabVIEW开发CAN通讯协议
429 0
|
传感器 监控 安全
LabVIEWCompactRIO 开发指南1
LabVIEWCompactRIO 开发指南1
144 2
|
传感器 运维 网络协议
Modbus故障码速查手册(故障码含义、分析原因、详细解读)
当涉及到Modbus通信协议的故障排查和调试时,速查手册是一项极为重要的资源。了解故障码及其含义能够帮助工程师在通信问题出现时迅速定位和解决相关故障。 本篇文章旨在为读者提供一个方便快速查阅的资源,以便快速获取有关Modbus通信中可能出现的故障码的信息。通过仔细研究这些故障码,读者可以更有效地诊断和解决通信问题,减少故障排查的时间。
4325 0
|
中间件 程序员 Go
更文的快乐又体会到了 解决了困扰读者半天的问题
更文的快乐又体会到了 解决了困扰读者半天的问题
113 0
|
关系型数据库 MySQL 数据库管理
15道常见的MySQL面试题及解析
15道常见的MySQL面试题及解析
515 0
|
机器学习/深度学习 弹性计算 算法
使用阿里云ECS进行神经网络学习-使用神经网络来识别手写数字
在阿里云的ECS上搭建python环境,完成在经典数据集MNIST上进行识别手写数字的实验。
使用阿里云ECS进行神经网络学习-使用神经网络来识别手写数字
|
缓存 Java 编译器
重生之我在人间敲代码_Java并发基础_可见性、原子性、有序性问题
这些年,我们的 CPU、内存、I/O 设备都在不断迭代,不断朝着更快的方向努力。但是,在这个快速发展的过程中,有一个核心矛盾一直存在,就是这三者的速度差异。CPU 和内存的速度差异可以形象地描述为:CPU 是天上一天,内存是地上一年(假设 CPU 执行一条普通指令需要一天,那么 CPU 读写内存得等待一年的时间)。内存和 I/O 设备的速度差异就更大了,内存是天上一天,I/O 设备是地上十年。
|
存储 人工智能 NoSQL
倒计时3天!Graph+AI,揭秘阿里云新一代图智能平台
图数据库GDB是阿里云自主研发的图数据库产品,经历阿里巴巴集团内丰富的应用场景打磨,具备最佳实践的产品。2020年进入Forrester图数据平台竞争者象限,也是国内唯一入选的图数据库产品。
534 0
倒计时3天!Graph+AI,揭秘阿里云新一代图智能平台