多语言展示
当前在线:1346今日阅读:39今日分享:10

LabVIEW-Datasocket

DataSocket技术是NI公司推出的面向测控领域的网络通信技术。DataSocket技术基于Microsoft的COM和ActiveX技术,对TCP/IP协议进行高度封装,面向测量和自动化应用,用于共享和发布实时数据。DataSocket能有效地支持本地计算机上不同应用程序对特定数据的同时应用,以及网络和不同计算机的多个应用程序之间的数据交互,实现跨机器、跨语言、跨进程实时数据共享。在测试测量过程中,用户只需要知道数据源和数据宿及需要交换的数据就可以直接进行高层应用程序的开发,实现高速数据传输,而不必关心 底层的实现细节,从而简化通信程序的编写过程、提高编程效率。DataSocket在10M网络中的传输速率可达到640kbps。对于一般的数据采集系统,可以达到很好的传输效果。随着网络技术的飞速发展和网 络信道容量的不断扩大,测控系统的网络化已经成为现代测量与自动化应用的发展趋势。依靠DataSocket和网络技术,人们将能更有效地控制 远程仪器设备,设置在任何地方进行数据采集、分析、处理和显示,并利用各地专家的优势,获得正确的测量、控制和诊断结果。
工具/原料

LabVIEW

Datasocket API
1

Datasocket函数位于:函数选板-函数-数据通信-Datasocket,包括:读取DataSocket,写入Datasocket,打开Datasocket,关闭Datasocket,Datasocket选择URL;

2

打开DataSocket (函数):打开在URL中指定的数据连接。URL(接线端):确定要读取的数据源或要写入的数据终端。 URL以读写数据要使用的协议名称作为开始(例如,psp、dstp、opc、ftp、http、file)。也可连线共享变量控件至该接线端。模式(接线端):指定通过数据连接进行的操作。 使用读取DataSocket函数读取服务器写入的数据时,需使用缓冲。使用前面板DataSocket数据绑定来读取数据时,缓冲不可用。如绑定控件和共享变量,并在共享变量属性对话框的网络页上启用缓冲区,此时对通过“共享变量引擎”实现的前面板数据绑定而言,缓冲可用。0:Read(默认)/1:Write/2:ReadWrite/3:BufferedRead/4:BufferedReadWrite毫秒超时(接线端):指定等待LabVIEW建立连接的时间,以毫秒为单位。 默认值为10000毫秒(10秒)。值为–1时,函数无限等待。值为0时,LabVIEW不建立连接并返回错误56。错误输入(接线端):)表明节点运行前发生的错误。该输入将提供标准错误输入功能。连接ID(接线端):用于唯一标识数据连接。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

3

写入DataSocket (函数):写入数据至连接输入中指定的连接。连线板可显示该多态函数的默认数据类型。连接输入(接线端):标识要写入的数据项。连接输入是描述URL或共享变量控件的字符串。数据(接线端):是写入连接的数据。 数据可以是LabVIEW中任意类型的数据。毫秒超时(接线端):指定函数用于等待操作完成的时间,以毫秒为单位。 默认值为0,函数不等待操作完成。值为-1表示函数一直等待直到操作完成。目前,Windows平台上的opc,LabVIEW支持平台的dstp和file协议都允许该函数使用非零超时值。与psp协议一同使用非零超时值时,必须启用同步通知。启用同步通知后,函数一直等待知道操作结束或超时。必须在psp URL的尾部添加?sync=”true”以启用同步通知,并允许在写操作时使用非零超时值。启用同步通知可能导致性能降低,对RT终端的影响尤其显著。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。连接输出(接线端):是指定数据连接的数据源。超时(接线端):操作在超时区间内完成且未错误发生时,值为FALSE。如毫秒超时的值为0,超时的值永远为FALSE。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

4

读取DataSocket (函数):将客户端缓冲区(与连接输入中指定的连接相关)的下一个可用数据移出队列并返回该数据。客户端缓冲也适用于其他协议(例如,opc和文件协议);连接输入(接线端):指定要读取的数据源。 连接输入可以是描述URL的字符串、共享变量控件、打开DataSocket函数的连接ID引用参数输出,或写入DataSocket函数的连接输出参数。类型(变体)(接线端):指定要读取数据的类型,并定义数据输出接线端的类型。默认的类型为变体,任意类型。 连线任意数据类型至输入端可定义输出数据类型。LabVIEW忽略输入数据的值。超时毫秒(接线端):指定用于等待连接缓冲区中可用更新值的时间。 如等待更新值的值为FALSE且初始值已到达,函数忽略该输入并并取消等待。默认值为10000毫秒(10秒)。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。等待更新值(接线端):如设置为TRUE,函数可等待新值。 如连接缓冲区包含未处理的数据,函数可立即返回下一个可用值。否则,函数可等待毫秒超时以获取更新。如在超时周期内未出现新的值,函数可返回当前值并设置超时为TRUE。如等待更新值的值为FALSE,函数可返回连接缓冲区中的下一个可用值,如无可用值,可返回前一个值。状态(接线端):报告来自PSP服务器或FieldPoint控制器的警报或错误。如第31位是1,则状态表明发生错误。否则,状态是状态代码。质量(接线端):是从共享变量或NI发布-订阅协议(NI-PSP)数据项读取的数据的数据质量。质量的值可用于调试VI。 下表列出了可能的质量值。1:该共享变量的值可能不是来自数据源的当前值。2:传感器失败。3:常规设备出错响应。4:服务器错误。5:常规通信失败。6:无法在共享变量引擎中定位变量。变量部署可能失败。7:共享变量含有未知值。8:共享变量处于非活动状态。10:下限。11:上限。12:常量。13:传感器不精确。14:超出工程单位范围。15:一般OPC错误。16:数学错误。17:通信链接失败。18:NI-PSP尚未连接到服务器。19:服务器DNS查找失败。20:无法连接服务器。21:服务器服务查找失败。22:服务器连接被断开。23:进程未找到或未响应。2:4无法解析共享变量的URL。25:共享变量的读权限被禁止。26:共享变量的URL无效。30:该点存在活动预警。31:订阅失败。32:大于32的质量位被置位或存在错误/状态报告。33:共享变量客户端的“读取缓存”已满。34:共享变量客户端的“读取缓存”溢出。35:共享变量服务端的“写入缓存”已满。36:共享变量服务端的写入缓存溢出。连接输出(接线端):是指定数据连接的数据源。数据(接线端):是读取的数据。如函数超时,数据返回函数最后读取的值。如函数在尚未读取数据前就已经超时,或数据类型不兼容,数据可返回0、空或等同的值。超时(接线端):如函数等待更新值或初始值时超时,则值为TRUE。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。时间标识(接线端):返回共享变量和NI-PSP协议数据项的时间标识数据。

5

关闭DataSocket (函数):关闭在连接ID中指定的数据连接。连接ID(接线端):是唯一标识连接的连接引用句柄。毫秒超时(0)(接线端):指定函数等待待定的操作完成的时间,以毫秒为单位。 默认值为0,函数不等待操作完成。值为-1表示函数一直等待直到操作完成。错误输入(接线端):指示节点运行前产生错误的条件。在下列情况下,该输入可作为标准错误输入。 即使在节点运行前发生错误,节点仍正常运行。超时(接线端):操作在超时区间内完成且未错误发生时,值为FALSE。如毫秒超时的值为0,超时的值永远为FALSE。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

6

DataSocket选择URL VI:显示对话框,使用户选择数据源并返回该数据的URL。该VI仅适用于对象URL未知,且希望通过对话框搜索数据源或终端的情况。选项(接线端):确定是否在浏览器中显示PSP、DataSocket或OPC项。组合值用于显示不同类型的项。例如,输入3可显示PSP和DataSocket项,输入7可显示所有类型。默认值为0。 1:显示PSP项2:显示DataSocket项4:显示OPC项起始URL(接线端):指定用于打开对话框的URL。 起始URL可以为空、协议(例如,file:)或整个URL。标题(接线端):是对话框的标题。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。过滤(接线端):输入对话框使用的过滤值。 过滤目前仅对文件有效。已选定URL(接线端):如已经选择有效的数据源,则值为TRUE。URL(接线端):提供选定数据源的URL。 已选定URL的值为TRUE时,该值有效。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

DataSocket逻辑构成
1

DataSocket包括DataSocket Server Manager(以下简称Manager),DataSocket Server和DataSocket API一部分。

2

DataSocket Server Manager是一个独立运行的程序,主要功能有:设置DataSocket Server连接的客户端程序的最大数目和创建数据项的最大数目:创建用户组和用户;设置用户创建和读写数据项的权限;限制身份不明的客户对服务器进行访问和攻击。例如,将Manager中的Default Reader设置为everyhost,则网中的每台客户计算机都可以读取服务器上的数据。Manager对DataSocket Server 的配置必须在本地计算机上进行,而不能远程配置或通过运行程序来配置。

3

DataSocket Server 是一个必须运行在服务器端的程序,负责监管Manager中所设定的具有各种权限的用户组和客户端程序之间的数据交换。DataSocket Server通过内部数据自描述格式对TCP/IP进行优化和管理,简化Internet通信方式,提供自由的数据传输,可以直接传送虚拟仪器程序所采集到的布尔型、数字型、字符串型、数组型和波形等常用类型的数据。它可以和测控应用程序安装在同一台计算机上,也可以分装在不同的计算机上,以便用防火墙进行隔离来增加整个系统的安全性。DataSocket Server不会占用测控计算机CPU的工作时间,测控应用程序可以运行得更快。使用DataSocket技术进行通信时服务器和客户端得计算机上笔形都进行DataSocket Server。

4

DataSocket API提供独立的接口,用于不同的语言平台内部多种数据类型的通读。在LabVIEW中,DataSocket API被制作成ActiveX控件和一系列功能VI(Virtual Instrument),用户可以方便地使用。一般由服务器进行数据采集,根据需要将测量地数据写入DataSocket 数据公共区,然后客户端通过网络充数据公共区读取所需地测量数据。

5

DataSocket 对外提升资源定位接口和功能调用接口,通过统一资源定位符(URL)对数据的传输目的地进行定位,读数据时为源地址,写数据时为宿地址。在资源定位符中标明数据的传输协议、网络计算机标志和数据缓冲区变量。DataSocket支持多种数据传送协议,不同的URL前缀表示不同的协议或数据类型。主要包括:(1)dstp(DataSocket Transfer Protocol):DataSocket 的专门通信协议,可以传输各种类型的数据,当使用这个协议时,VI与DataSocket Server连接,用户必须为数据提供一个附加到URL的标识Tag,DataSocket连接利用Tag在DataSocket Server上为一个特殊的数据项目指定地址,目前应用虚拟仪器技术组建的测量网络大多采用该协议;(2)http(Hyper Text Transfer Protocol,超文本传输协议);(3)ftp(File Transfer Protocol,文件传输协议);(4)opc (OLE for Process Control,操作计划和控制);特别为实时产生的数据而设计,例如工业自动化操作而产生的数据。要使用该协议,必须首先运行一个OPC Server;(5)fieldpoint,logos,lookout:分别为NI FieldPoint 模块,LabVIEW数据记录与监控(DSC)模块及NI Lookout模块的通信协议;(6)file(local file servers,本地文件服务器);可提供一个到包含数据的本地文件或网络文件的连接。

DataSocket Server Manager
1

Server Setting:MaxConnection设置服务器的最大客户端数量,MaxItems设置最大数据项数量,DfltBufferMaxBytes设置最大缓冲区域大小,DfltBufferMaxPackets设置最大数据包大小;

2

Permission Groups:Administrators配置可以管理server的主机,DefaultReaders设置可以动态读取数据项的主机,DefaultWriters设置可以动态写入数据项的主机,Creators设置可以创建新数据项的主机,SampleGroup设置可以授权的数据项的host组;我们可以通过New Group创建新组,New Item创建新数据项,Remove Group删除组,Add host添加新主机,Remove Host删除主机;

3

Predefined Data Items:预定义数据项,在服务器启动时候自动创建;

DataSocket Server
1

Process Connected:已经与服务器连接的客户端数量;

2

Packets Reveived和Packets Sent:已经接收的数据包或已经发送的数据包。Datasocket的数据以包的形式发送和接收,每次读写Datasocket均发送和接收一个数据包。数据包可以包含各种类型的Labview数据,如数组,波形等;

实例
1

Datasocket写入:主要使用打开Datasocket,写入Datasocket,最终关闭Datasocket;

2

Datasocket读取:主要使用打开Datasocket,读取Datasocket,最终关闭Datasocket;

3

此时,Datasocket server可以实时监测客户端连接数量,发送和接收包数量;

注意事项
1

Datasocket读写方法

2

Datasocket server manager配置方法

3

请点赞,收藏

推荐信息