LabVIEW通过变量识别URL来识别各个共享变量。要通过程序读取和写入共享变量,可在共享变量函数的共享变量引用句柄输入接线端指定共享变量识别URL。

注: 也可通过编程搜索共享变量,使用较少代码读写多个共享变量。

共享变量的架构

下表列出了与共享变量和变量识别URL相关的LabVIEW构件。

  • 共享变量 - 一块内存空间,可从中读取数据,也可向其写入数据。
  • PSP变量 - 通过NI发布订阅协议(NI-PSP)在网络上发布的数据项。常见的PSP变量有:网络发布的共享变量、启用了网络发布的I/O变量、通过NI-DAQmx I/O服务器发布的DAQ通道。
  • I/O变量-共享变量,使用NI扫描引擎对I/O数据进行单点访问。
  • 变量容器 - 一组变量。最常见的变量容器是项目库。但是,I/O模块、WSN节点、EtherCAT设备也可以是变量容器。可使用浏览变量对象对话框查找当前部署在网络上的所有变量容器。
  • 变量引擎 - 运行时管理变量容器和变量。
  • 项目库-各种VI、自定义类型、共享变量、选板目录文件以及其它项目库的集合。包含共享变量的项目库是项目库容器,但不是所有的变量容器都是项目库。
  • 终端名称 - LabVIEW项目中终端项的名称。例如,LabVIEW项目中的我的电脑、RT终端等等。
    注:(Real-Time模块)可使用RT终端属性对话框常规属性页的名称栏指定RT终端名称。

变量识别URL语法

变量识别URL的语法如下:

[变量引擎]://[主机名称]/[容器名称]/[变量名称]

对于所有变量表示URL,必须指定容器名称变量名称。但是,如类已指明,可忽略变量引擎。如变量与VI运行在同一台计算机上,可忽略主机名称

例如,下列LabVIEW项目包含网络发布的共享变量,在Network Variables.lvlib下,以及I/O变量,在I/O Module1容器下。

下列表格列出了项目中变量的变量识别URL。

变量名称 变量类型 变量识别URL
网络变量1 网络发布共享变量 ni.var.psp://My Computer/Network Variables/Network Variable1
AI0 I/O变量 ni.var.io://RT CompactRIO Target/I%2FO Module1/AI0
网络变量3 网络发布共享变量 ni.var.psp://RT CompactRIO Target/RT Network Variables/Network Variable3

变量识别URL不区分大小写。但是,必须将预留的字符替换为相应的转义代码,以避免解析错误。例如,必须将字符替换为转义代码%2F

URL的变量引擎部分取决于要读取或写入的变量类型。下表包括共享变量函数支持的各个类型的共享变量引擎URL。

类型 变量引擎URL
网络发布共享变量、I/O变量或I/O别名(远程访问) ni.var.psp
I/O变量或I/O别名(本地访问) ni.var.io

可使用PSP变量引擎或I/O变量引擎访问网络发布I/O变量或I/O别名。使用I/O变量引擎(ni.var.io),在本地读取或写入网络发布的I/O变量或I/O别名。使用PSP变量引擎(ni.var.psp),远程读取或写入网络发布的I/O变量或I/O别名。

使用下列类时,URL变量引擎引擎部分无需另行指定。

  • PSP变量引擎
  • I/O变量引擎
  • PSP变量容器
  • I/O变量容器
  • PSP变量
  • I/O变量

在上述情况下,可忽略URL的变量引擎部分,使用下列URL语法:

//[主机名称]/[容器名称]/[变量名称]

如使用一个不暗含变量引擎的通用类,不必指定变量引擎。LabVIEW按照下列优先顺序搜索变量引擎解析变量识别URL。

  1. I/O变量引擎
  2. PSP变量引擎

在上述情况下,如匹配URL在多个引擎中存在,LabVIEW将使用第一个匹配的URL。

变量识别URL的[主机名称]部分是可选的。可指定主机名称为DNS名称、终端名称或IP地址。但是,如不在变量识别URL中指定主机名称,LabVIEW认为主机就是VI运行所在的计算机。也可使用字符串localhost指定主机为运行VI的计算机。请尽量使用唯一的名称避免名称冲突。

如不必指定主机名,可使用下列URL语法:

/[容器名称]/[变量名称]

如指定的主机名有多种解析方法,例如,既可作为项目名称,又可作为DNS名称,LabVIEW按照下列优先级解析指定的主机名称。

  1. 终端名称(在LabVIEW项目中指定)
  2. DNS名称
  3. IP地址

容器中各个共享变量的名称必须是唯一的。但是,变量信息还包含容器名称,不同容器中的变量可使用相同的变量名称,不妨碍变量实体的唯一性。