LabVIEW 中支持TCP/IP网络通讯研究
介绍
LabVIEW具有强大的网络通讯功能,这种功能使得LabVIEW的用户可以很容易编写出具有强大网络通讯能力的LabVIEW应用软件,实现远程虚拟仪器。LabVIEW支持TCP/IP协议、UDP协议等等。而且NI公司还开发了一种DATASOCKET技术,很大程度上的简化甚至免除了网络通讯编程,用户很容易地在互联网实现高速数据交换。
TCP/IP协议(传输控制协议/互联网络协议)是INTERNET最基本的协议,由于INTERNET的广泛使用,使得TCP/IP成了事实的标准。对于该协议的介绍不是本文的重点,相关信息可以参阅其他的资料。
TCP节点介绍
在LabVIEW中,可以采用TCP节点来实现基于TCP协议的局域网通讯,该节点在FUNCTION/COMMUNICATION/TCP下,该节点分为三个部分:
Connection节点:用于建立客户机和服务器之间通讯的连接
Transmission节点:用于在客户机和服务器之间传输数据
Conversion节点:用于计算机IP地址和计算机名称间的切换
双机TCP通讯流程
两种通讯方式
多机都采用LabVIEW进行通讯
在多机采用LV中TCP实现的通讯,一端我们设定为服务器端,一端为客户端。这样在运行的时候服务器端不断的侦听,当有客户端连接的时候进行建立连接,然后收取和发送数据形成通讯,客户端运行后不断的与服务器端进行试探连接,如果没有连接上做一定的处理,当连接上后进行收发数据进行处理。该VI图结构如下
通过以上方式,可以方便的实现多机进行通讯。
有一端采用LabVIEW另一端是其他的工具实现进行通讯
在实际工作当中,有的时候下位机或者其他的机器使用其他的语言或者组态工具实现,这个时候在实现TCP之间进行交互通讯的时候,我们就不能象上面多机都是LV编写的通讯那样处理了,如何去实现呢。经过研究发现,LabVIEW提供了运行控制技术,在Semaphonre技术中,该功能可以限制任务数目,这些任务可以同时堆一个共享资源进行操作。所以大胆采用共享资源操作信息,将其他端设置为服务器端,本端为客户端,进行操作,这样受保护的资源或者临界区进行外部通讯,我们可以利用该技术同步多个相互独立的、并行的任务,这样可以利用一个公用的Semaphore可以在某一时刻仅允许一个任务执行
该图是简要的功能显示,具体有兴趣的读者可以根据上面的提示使之完善
注意事项:
当建立客户端和服务器端之间的通讯时候,除了指定Internet地址之外,还必须指定通讯端口号,端口号的范围是0到65535,该端口号区分不同的通讯服务,这样很容易的管理多个通讯连接。端口号最好手动设置,最好不要低于1000(由于该低于1000的一方面防火墙可能会禁止并且1000以下的端口号是保留个特定用途的
客户端和服务器端要指定端口,同时这两个端口必须相同,才能进行有效的通讯
在客户端首先要指定服务器的名称才能与服务器建立连接,服务器的名称是指服务器端的计算机名,若在同一台计算机上运行时候,客户端的输入服务器名称既可以是该台计算机名称也可以是LOCALHOST
在与多机并且与其他语言的接口的时候,按照以上3点执行外,加上了执行了排队,这样在连接成功后进行数据相互交换,交换完毕后断开连接,然后与下一个连接。这样依次执行程序。形成临界区保护
总结:
在LabVIEW的TCP中用于两个应用程序进行数据共享,缺点是它不是实时的。但由于TCP/IP的普及,应用范围不断的扩大,以上两点包含大多数的应用,我们也可以采用WINDOWS的ACTIVEX控件WINSOCK来实现。具体的我将在以后的文章中做专门的介绍。
如果需要采用实时数据传输,可以采用DataSocket技术,该技术是一项在测量和自动化应用中用于共享和发布实时数据的,并且可以在任何编程环境中应用。本篇主要介绍的是TCP/IP方面,对于实时数据传递通讯和控制,将在以下章节中做介绍。
参考文献
《LabVIEW高级程序设计》 清华大学出版社 杨乐平