LabVIEW网络数据传输&远程控制编程与验证测试

目的:

验证将采集卡采集的数据上传到网络中其他的计算机
(网络中其他的计算机可指在局域网中,或者在广域网上,本文所做测试都是指在广域网中实现。所以能够在广域网中实现的labview数据传输,就一定可以在局域网中实现。)

LabVIEW实现网络数据传输的各种方法:

1.直接使用TCP选板的函数进行编程实现
2. 使用FTP选板的函数实现
3. LabVIEW特有的DataSocket技术实现网络中不同计算机不同应用程序之间的实时高速数据交换,使用DataSocket选板的函数实现
4. 使用共享变量引擎的方式实现
5. 网络流编程的方式实现,使用网络流选板的函数
6. 使用LabVIEW NXG Web模块,在不改变原有程序在以此模块编程方法编写新程序实现多地分布式共享数据
7. 其他方法

LabVIEW实现远程操作控制的方法:

  1. 在实现不同计算机不同应用程序网络通信的基础上,用编程的方法实现本地主机对远端主机程序的控制
  2. LabVIEW NXG Web模块能够用于​设计​和​部署​基于​Web​的​用户​界面​(UI),为​自动​化​测试​和​测量​应用​创建​远程​控制​和​监测​界面,​无​需​使用​其他​插​件​或​安装​程序​即可​在​任何​现代​Web​浏览​器、​平板​电脑​或​手机​上​运行​自​定义​用户​界面
  3. 发布远程控制面板的方法(LabVIEW基本安装模块就可实现,“在web发布VI”,也很方便,但就是一种在Web浏览器中远程操控某一程序前面板的方法),但目前只能在ie浏览器中实现(因为此浏览器中的旧插件才支持)
  4. 其他方法

测试环境:

一台阿里云ECS服务器(部署了LabVIEW基础环境、FTP服务器等)、
一台本地主机(部署了LabVIEW基础环境、作为FTP客户端等)
另:在云主机上有I个公网ip,并且开放了所有入方向和出方向的端口权限,带宽是1M。
在本地主机的网络环境中不能做自己的个性化配置,只能使用运营商网络的默认配置(也就是说有些端口权限是没有开放的)。

不同编程实现方法与网络测试

采集卡相关参数:采集卡AD是24位,FIFO的存储精度是32位,也就是此采集卡1个采样点数是4个字节。采集卡有一个百兆以太网接口,默认工作在服务器模式。

TCP数据传输测试

labview的TCP选板函数,使用TCP协议直接传输数据,编程实现在服务器端和客户端实现实时的数据通信:

对于下载和上传都做了测试,以下是下载测试时的具体数据:
l 500个双精度数据(5008个字节),需要带宽大概是336Kbps
l 1000个双精度数据,需要带宽大概是672Kbps
l 1000个单字节整型数据(1000
1个字节),需要带宽大概是88Kbps
l 500个单字节整型数据(500*1个字节),需要带宽大概是40-48Kbps

本地主机上传数据到云主机所需带宽与上类似,因为所需的带宽使用的是网口的统计数据所以只能是一个大致数据,但精度相对比较准确。
以上所说的是在TCP函数默认的延时时间内完成数据传输不报错,也可理解为即时的传输。
限于测试条件,因为云机的网络带宽限制。进行理论估算:也就是说,采集卡每次采集的8个通道1.02秒共53788个数需要传输带宽18073Kbps。
(意思是这个带宽下可以实现采集卡每次采集的数据在很短的时间内即时上传或下载到云主机)
使用TCP选板的函数进行下载和上传测试都是用云主机作为TCP服务器端,本地主机作为TCP客户端,架构与实现如下图所示:
LabVIEW网络数据传输&远程控制编程与验证测试_第1张图片

如果计算节点和采集卡不在同一个局域网中,一般限于网络配置的原因是不能实现计算节点的计算机与采集卡之间通信的,因为在采集卡这个局域网中的ip和端口号一般无法发布到Internet中,而采集卡又是工作在TCP服务器模式的,所以计算节点的计算机和采集卡之间不能够建立TCP连接。所以这种情况下,不能够实现采集卡的信息传输到计算节点中。
如果需要使得不在同一个局域网中的计算节点和采集卡实现这种方式的数据传输,必须配置好两端的通信网络,包括路由和端口,这样才能够实现通信畅通。

FTP数据传输测试

labview的FTP选板函数,使用FTP协议直接传输数据,编程实现在服务器端和客户端实现数据通信:
在云主机中搭建了FTP Server,所以其作为FTP的服务器端而本地主机是作为FTP的客户端,以此测试两端文件的下载和上传。

FTP测试发现:虽然服务器端限制的是1M带宽,但是上传速度能够超过1M甚至达到十几兆bps。但下载速度基本上限制在带宽范围左右,有时能到1.4Mbps。
对于下载和上传都做了测试,具体的测试情况如下:
用labview编写FTP程序做本地到云服务器的上传下载实验,下载速度基本被带宽限制,但因为上面的发现所以再做下上传文件测试速度的实验,看文件的传输速度能到多大:
l 实验测试验证了上传文件时确实云服务不会怎么限制上行带宽,上传单个文件时的速度为:上传速度一开始测试显示就是在14Mbps,稳定上传速度大概在94Mbps。
l 传输压缩包zip文件(里面是采集卡采集的存储文件TDMS,有很多个文件夹,每个文件夹里又分别有好几个TDMS文件),ASCII码传输和二进制传输的速度相差不大,几乎一样,可能ASCII码传输速度会稍快一些。ASCII码传输此TDMS格式文件也不会乱码。

关于此应用模式的编程实现架构如下:
LabVIEW网络数据传输&远程控制编程与验证测试_第2张图片

Labview在本地主机编程的时候,上传文件时函数最好选为FTP“被动模式”,以防网络原因不能连接到服务器。与使用TCP选板函数进行网络数据传输一样,当计算节点与控制采集卡的本地主机不在同一个局域网时,只能选用“被动模式”编程;如果同在一个局域网中,“主动模式”和“被动模式”编程都可以实现数据的传输。

另外,关于使用labview FTP选板函数进行编程和实现数据传输中的一些技巧说明:
labview FTP选板的这几个函数它的远程路径和本地路径都需要写上文件名。这种传送的原理应该是传输文件中的数据,比如说下面示例的这个FTP获取函数,远程路径是:labview/test2.txt,本地路径是:C:\Users\Administrator\Desktop\ftp-test\t2.txt。
这个函数的功能是将服务器端FTP根目录下labview子目录中的文件“test2.txt”下载到本地,并且下载的目录是“C:\Users\Administrator\Desktop\ftp-test”,下载后的文件名是“t2.txt”。
也就是说labview FTP选板的这几个labview FTP函数具有指定下载后的文件名,或者上传后的文件名(“比如FTP传送文件”)
LabVIEW网络数据传输&远程控制编程与验证测试_第3张图片

在下载来自云服务器的文件时,使用默认的“主动模式”应该也都是可以完成正常下载的,但是上传文件时一般就会出现“15426”的报错了。
此外,在FTP传输的文件最好验证下MD5 ,以此确保传输到了完整的文件,不然可能只会有报错,如果忽略了报错那么得到的文件就是不全的。

DataSocket数据传输测试

labview的DataSocket选板函数,使用dstp协议直接传输数据,编程实现在服务器端和客户端实现数据通信:
对于下载做了测试(云主机作为DataSocket的服务器和管理端,本地主机作为DataSocket API一端),以下是下载测试时的具体数据:
l 500个双精度数据(5008个字节),需要带宽大概是338Kbps——400bps
l 1000个双精度数据,需要带宽大概是678Kbps——712bps
l 1000个单字节整型数据(1000
1个字节),需要带宽大概是104Kbps——120Kbps
l 500个单字节整型数据(500*1个字节),需要带宽大概是48Kbps——104Kbps

限于测试条件,因为网络带宽不够。理论估算也就是说,采集卡每次采集的8个通道1.02秒共53788个数需要传输带宽18234Kbps——19149Kbps。
以上测试时没有发生报错,是即时的传输。因为对本地主机网络配置的能力有限原因,无法做上传数据的测试。
从上面的下载数据所需的带宽可以看到,相对与直接使用TCP选板函数进行数据传输,DataSocket选板函数进行编程实现数据数据所需要的网络带宽更多,也就是说会稍慢一些。(这点可以很容易理解,其实DataSocket、FTP这些协议都是应用层协议,其网络层、传输层都是基于TCP/IP协议的,所以当然需要更多的通信开销)。

其他情况与TCP数据传输测试类似,不再累述。
l 但是利用DataSocket进行数据通信,可以使用labview的DataSocket管理功能进行一些控制管理。
l 另外还有一个优点是,可以直接将图表控件的图形数据通过DataSocket绑定的方式传输到另一端前面板图表控件直接显示图形。

DataSocket数据传输示意图如下,这种架构与直接应用TCP或FTP选板的函数进行数据传输是不同的:
在这里插入图片描述

使用共享变量引擎的方式实现

共享变量发布在网络中,实现数据的共享和在不同计算机、不同VI之间的传输。另外,其有一优点是网络发布的共享变量最适用于监视终端或联网计算机间的损耗状态数据。
与上面所述的TCP、DataSocket数据传输编程方式不太一样,但实现相互之间通信的原理与DataSocket类似,在此不再累述。

网络流编程的方式实现

使用网络流选板的函数进行编程也能够实现在两个运行的VI间传递数据和命令的方法。在labview的官方建议中,应用程序要求在不同终端间无损耗传输命令数据,相对于在网络中发布共享变量的方式共享数据,建议使用网络流。
与上面所述的TCP、DataSocket数据传输编程类似,在此不再累述。

使用LabVIEW NXG Web模块

使用在不改变原有程序在以此模块编程方法编写新程序实现多地分布式共享数据。LabVIEW NXG Web模块的具体功能如下:

  1. 能够设计基于Web的UI
  2. 能够将现用应用程序部署为网页
  3. 能够安全的共享VI

普通安装的LabVIEW程序也需要另外安装此模块才能进行编程。LabVIEW在此模块中是将一些IT和通信技术实现了集成,在使用LabVIEW进行编程的时候不用考虑这方面的内容,直接应用其功能就可实现分布式的编程、数据传输和远程控制。

另外,其在Web中实现远程操控的能力相对于普通labview安装能够使用的“在web发布VI”的功能更为强大,在目前的任何平台的主流浏览器上几乎都可实现,例如:也可以在手机浏览器中实现远程操控和实时显示。
LabVIEW NXG Web​模​块​支持​通过​拖​放​式​小​部件、​通信​机制​和​安全​托管​创建​基于​Web​的​用户​界面。此模块编程的逻辑架构如下图所示:

LabVIEW网络数据传输&远程控制编程与验证测试_第4张图片

LabVIEW的DIAdem产品技术

能够处理并显示数据,能够编写脚本自动化完成,并可上传报告,也可实现同时测量和同时显示数据的能力。
在普通安装的LabVIEW程序也需要另外安装此包才有这个部分,就是Excel的软件,可以查看labview的各种格式的数据文件。

总结:

如果部署计算节点加快测试现场的计算分析能力,那么上面所述的几种在LabVIEW中的编程方式都可以实现,但要看这个计算节点是部署在本地现场的局域网中(和采集卡在同一个局域网),还是不在同一个局域网中。

你可能感兴趣的:(工具技能,labview,ftp,网络通信)