通过编程共享实时数据
- 更新时间2025-08-27
- 阅读时长5分钟
可使用DataSocket VI和函数通过编程配置、读取和写入实时数据。
(Real-Time、Windows)NI建议连接共享变量节点至VI和函数,通过编程共享实时数据。
使用共享变量
通过共享变量可在VI或程序框图中无法连线的位置间共享数据。使用共享变量进行数据共享时,仅需在程序框图中编写少量程序,甚至不需要编写程序。
对于DataSocket VI和函数,读写数据时指定URL的方式与在Web浏览器中指定URL基本相同。
指定URL
传输数据时,URL在Windows平台上使用opc、ftp和http等通信协议,在LabVIEW支持的平台上使用psp、dstp和file等协议。在URL中使用何种协议,取决于写入数据的类型及网络配置。
使用DataSocket VI和函数读写数据,或启用一个控件的连接时,可使用下列协议:
- NI PSP协议psp - NI专有的数据传输协议,在网络和本地计算机之间传输数据。使用该协议时,VI通过共享变量引擎(SVE)进行通信。使用psp协议可将共享变量与服务器或设备上的数据项相连接。用户需为数据项命名并把名称追加到URL。数据连接将通过这个名称从共享变量引擎(SVE)找到某个特定的数据项。该协议也可用于使用前面板数据绑定的情况。而fieldpoint协议可作为NI-PSP协议的一个别名。
- DataSocket传输协议(dstp) - 使用该协议时,VI将与DataSocket服务器通信。必须为数据提供一个命名标签并附加于URL。数据连接按照这个命名标签寻找DataSocket服务器上某个特定的数据项。要使用该协议,必须运行DataSocket服务器。
- (Windows)过程控制OLE (opc) - 专门用于共享实时生产数据,如工业自动化操作中产生的数据。该协议须在运行OPC服务器时使用。
- (Windows)文件传输协议(ftp) - 用于指定从FTP服务器中读取数据的文件。

注:使用DataSocket函数从FTP站点读取文本文件时,需要将[text]添加到URL的末尾。
- file - 用于提供指向含有数据的本地文件或网络文件的链接。
- (Windows)http - 用于提供指向含有数据的网页的链接。

注:如要使用DataSocket函数通过http协议读取文本文件,需在URL的末尾添加[text]。
下表列举了每种协议URL的范例。
| URL | 范例 |
|---|---|
| psp | 对于共享变量: psp://computer/library/shared_variable 对于NI-PSP数据项,如服务器和设备数据项: psp://computer/process/data_item fieldpoint://host/FP/module/channel |
| dstp | dstp://servername.com/numeric,其中numeric是数据的命名标签 |
| opc | opc:\National Instruments.OPCTest\item1 opc:\\computer\National Instruments.OPCModbus\Modbus Demo Box.4:0 opc:\\computer\National Instruments.OPCModbus\Modbus Demo Box.4:0?updaterate=100&deadband=0.7 |
| ftp | ftp://ftp.ni.com/datasocket/ping.wav ftp://ftp.ni.com/support/00README.txt[text] |
| file | file:ping.wav file:c:\mydata\ping.wav file:\\computer\mydata\ping.wav |
| http | http://ni.com |
psp、dstp和opc协议的URL用于共享实时数据,因为这些协议能够更新远程和本地的输入控件及显示控件。ftp和file协议的URL用于从文件中读取数据,因为这些协议无法更新远程和本地的输入控件及显示控件。
DataSocket VI和函数支持的数据格式
DataSocket VI和函数可传递任何类型的LabVIEW数据。此外,DataSocket VI和函数还可读写以下数据:
- 原始文本 - 用于向字符串显示控件发送字符串。
- 制表符分隔的文本 - 用于将数据写入数组,方式同电子表格。LabVIEW把制表符化的文本当作数组数据处理。
- .wav数据 - 使用.wav数据,将声音写入VI或函数。
- 变体数据 - 用于从另外一个应用程序读取数据,如NI Measurement Studio的ActiveX控件。