LabVIEWCompactRIO 开发指南22 CVT客户端通信(CCC)

LabVIEWCompactRIO 开发指南22

CVT客户端通信(CCC)

如果使用第3章中讨论的CVT进行进程间通信,请考虑使用CCC。如果已经创建了CVT标签,并且想在网络上发布此数据,CCC不失为一个简单而优雅的解决方案。它基于TCP/IP,最适合1:1系统配置。如果使用的是1:N或N:1系统配置,请考虑在实现网络通信时将CVT标签绑定到网络发布的共享变量。

客户端通信接口的主要功能是在服务器(CompactRIO)上的CVT实例和客户端之间共享信息。通过将CVT的部分从一侧镜像到另一侧,反之亦然。

安装CCC库的说明

步骤1:导航至NI开发人员专区白皮书《CVTClient Communication (CCC) Reference Library》。

步骤2:按照“下载”部分下的说明进行操作。CCC库显示在“User Libraries”选项板下。

实现

CCC的基础实现是TCP/IP。具体来说,它是STM的改编版,它提供了一种独立于平台的按名称发送消息的方式,同时保持原始TCP通信的性能和吞吐量。在涉及数百甚至数千个标签的应用程序中,高效通信的重要性是显而易见的。

CCC接口由两个单独的元素组成。接口的服务器部分充当TCP服务器,由处理来自客户端的数据请求的命令解析器组成。接口的客户端部分充当TCP客户端并启动与服务器的通信。然后,它向服务器发送命令来配置和发送/接收数据。

图4.30.CCC概述

CCC协议实现强调性能优化,通过在第一次调用时尽可能多地配置,使重复操作的工作更少。因此,协议的实现方式是,客户端必须首先使用BoundAddress参数标识所有感兴趣的标记。在第一次执行时,服务器在CVT中按标签的索引查找标签。至此,仅使用CVT索引API来确保尽可能高的性能。

在客户端和服务器组件上,所有重复操作的实现都考虑到了确定性。它们在每个函数的第一次调用时分配所有必要的资源,并使用函数全局变量在迭代之间存储数据块。这可确保在第一次迭代后不会发生内存分配。

API和示例

CCC服务器是一个VI,旨在与应用程序的其余部分并行运行。这允许计算机控制的其余部分异步执行,从而更好地控制应用程序定时。服务器API具有用于启动和停止CCC服务器的功能。需要在调用CCCStart Server.vi.之前初始化CVT。

在大多数情况下,可以将接口的服务器和客户端元素用作插入式组件。服务器只需要配置TCP端口(默认为54444),客户端需要服务器的IP地址和端口号。图4.31显示了包含以下步骤的CCC服务器应用程序的示例:

1.初始化服务端CVT

2.初始化CCC服务器进程,该进程从应用程序的其余部分异步执行

3.使用CVTAPI函数(标签)在服务器端CVT中读写数据

4.停止CCC服务器进程

图4.31.CCC服务器示例-静态标记列表

在相应的客户端应用程序中,如图4.32所示,CCC写入和读取操作与其余HMI代码串联实现。这可确保在每次迭代时更新读取和写入标记的值。客户端应用程序包括以下步骤:

1.初始化客户端CVT

2.启动与服务器的连接

3.使用CVTAPI函数(标签)在客户端CVT中读写数据

4.使用CCC客户端读写VI在客户端CVT和服务器端CVT之间传输数据

5.结束与服务器的连接

图4.32.CCC客户端示例—静态标记列表

有关CCC的更多信息,请参阅NI开发人员专区白皮书《CVTClient Communication (CCC) Reference Library》。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/20695.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 指令3

文章目录 标题日期date时间戳 cal 日历find -name 查找which ls 搜指令whereisgrep 行文本过滤工具(例如找到main函数入口)用途例子 ps ajx 进程 打包压缩,解包解压(过程是这么个过程,简化成压缩->解压)…

Java进阶-面向对象进阶(多态包权限修饰符代码块)

1 多态 1.1 多态的形式 多态是继封装、继承之后,面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式: 父类类型 变量名 new 子类/实现类构造器(); 变量名.方法名();多态的前提:有继承关系,子类对象…

MySQL高级语句(三)

一、正则表达式(REGEXP) 1、正则表达式匹配符 字符解释举列^匹配文本的开始字符’ ^aa ’ 匹配以 aa 开头的字符串$匹配文本的结束字符’ aa$ ’ 匹配以aa结尾的字符串.匹配任何单个字符’ a.b 匹配任何a和b之间有一个字符的字符串*匹配零个或多个在它…

MHA高可用与故障切换

一、MHA的概述 1、 MHA的概念 MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故…

前端需要注意和了解的SEO

SEO的基本了解 1.什么是SEO? SEO(Search Engine Optimization又叫做搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。 2. 前端怎么理解SEO? 对于SEO引擎,在前端需要的是做出来的网站,页面…

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时…

服务(第二十一篇)mysql高级查询语句(二)

①视图表: 视图表是虚拟表,用来存储SQL语句的定义 如果视图表和原表的字段相同,是可以进行数据修改的; 如果两者的字段不通,不可以修改数据。 语法: 创建:create view 试图表名 as ... 查…

vue3项目搭建超详解

vue3安装与目录讲解 文章目录 vue3安装与目录讲解安装node.jsnpm绑定淘宝镜像安装vue脚手架创建vue项目目录解释推荐使用vscode 安装node.js http://nodejs.cn/download/ 根据自己电脑的位数自行下载。可安装到任意盘哈,因为我C盘比较大,我就直接在C盘了…

springboot项目如何优雅停机

文章目录 前言kill -9 pid的危害如何优雅的停机理论步骤优雅方式1、kill -15 pid 命令停机2、ApplicationContext close停机3、actuator shutdown 停机4、ApplicationListener 监听延时停机 前言 相信很多同学都会用Kill -9 PID来杀死进程,如果用在我们微服务项目里…

快速入门matlab——变量练习

学习目标:1.掌握matlab编程中最常用的几种变量类型 2.对变量类型的属性有所熟悉,不要求记忆,知道了解即可 3.要求熟练运用这几种变量类型创建自己的变量 clear all; % 清除Workspace中的所有…

FreeRTOS_移植和配置

目录 1. 什么是FreeRTOS? 2. FreeRTOS 特点 3. FreeRTOS 移植 3.1 验证程序 1. 什么是FreeRTOS? 我们先看 FreeRTOS 的名字,可以分成两部分:Free 和 RTOS,Free 就是免费的、自由的、不受约束的意思,RTO…

ERP、SCM与CRM系统的关系和区别是什么?

在当今数字化时代,企业管理系统扮演着至关重要的角色,而ERP、SCM和CRM系统是其中三个核心组成部分。 虽然它们都在企业管理中发挥着关键作用,但它们各自的功能和应用领域存在一些区别。 我们先来看看,ERP、SCM与CRM系统分别是啥…

DevExpress:报表控件绑定数据库数据源的三种方式(Winform)

1.写在前面 如果你是和我一样,第一次接触DevExpress,并且因为网上资源眼花缭乱无从下手,然后脑子一转直接到DevExpress官网寻找官方使用文档的,那我们的了解顺序应该差不多是一致的。 DevExpress官网:https://www.de…

(十六)数据编辑——图形编辑②

数据编辑——图形编辑② 目录 数据编辑——图形编辑②1.5线要素的延长和裁剪1.5.1线要素延长1.5.2线要素裁剪 1.6要素的变形与缩放1.6.1要素变形操作1.6.2要素缩放操作 1.7要素结点的编辑1.7.1添加结点1.7.2删除结点1.7.3移动结点 1.5线要素的延长和裁剪 单击编辑器下拉菜单&a…

ChatGPT 联网和插件功能,下周起可直接使用,无需排队!

夕小瑶科技说 分享 来源 | 新智元 OpenAI和谷歌,已经打得急红了眼,ChatGPT Plus用户,下周就可以体验联网和插件功能,无需再排队。鲨疯了,真的鲨疯了! ChatGPT,下周开始联网,并开放插…

字典翻译EasyTrans简单使用分享

前言 最近太忙了,一直按在项目上摩擦,都没有时间写分享了。今天终于市把所有负责的模块都写完了,本次迭代引入了字典翻译,借这个机会顺便分享下。 一、什么是字典翻译 所谓的字典翻译其实简单理解就是一些不常更新的有键值对属性的…

如何利用python调用API接口获取数据进行测试

一、Python 可以使用 requests 库来调用 API 接口获取数据。以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests 库 import requests 3.构建 API 请求的 URL 根据 API 文档,构建请求的URL。 例如, https://a…

从BinDiff到0day 在IE中利用CVE-2019-1208

前言 如上所述,CVE-2019-1208是UAF漏洞,这类安全漏洞可以破坏有效数据、引发进程crash、并且可以精心利用最终导致任意代码执行。而对于本文介绍的CVE-2019-1208而言,成功利用此漏洞的攻击者可以获得系统当前用户权限。如果当前用户具有admi…

C++: 计时器类的设计和实现

文章目录 1. 目的2. 功能列表3. 基础功能:获取耗时4. API 设计: Timer 类5. 单元测试6. API 实现 1. 目的 使用 C Class 的形式,封装原本 C语言的获取时间的函数,提供更容易使用的计时器调用。 使用 C03,原因是和先前的线程安全队…

python+vue流浪动物公益科普宠物在线领养网站

使用动物在线领养网站的用户分管理员和用户两个角色的权限子模块。 开发语言:Python 框架:django/flask Python版本:python3.7.7 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 系统所要实现的功…