在使用 LabVIEW 与 GPIB 设备通讯时,VISA Write Function 和 GPIB Write Function 是两个常用的函数,它们既有区别又有联系。
一、概述
VISA(Virtual Instrument Software Architecture)是一种用于仪器编程的标准 I/O 软件库,提供了统一的接口来与不同类型的仪器进行通信,包括 GPIB、串口、以太网等。而 GPIB Write Function 是专门针对 GPIB 总线设备进行数据写入操作的函数。
二、特点、优点、缺点及适用场合
(一)VISA Write Function
-
特点:具有通用性,可通过配置不同的 VISA 资源名称,与多种类型的仪器通讯。在与 GPIB 设备通讯时,也能完成数据写入功能,且能处理复杂的仪器控制指令集。其 VISA 资源控制允许从可用资源列表中选择,还支持别名,可给资源分配逻辑名称 ,比如用 “DMM”“Scope” 等代替 GPIB 地址。
-
优点:适用范围广,无论是 GPIB 设备,还是串口、USB 设备等,都能使用该函数进行通讯操作。方便在项目中整合多种不同接口类型的仪器,减少开发多种通讯程序的成本。在实际应用中,如果生产测试设备中的 GPIB 仪器出现故障,备用仪器为 USB 接口,使用 VISA 编写的测试程序能快速切换设备恢复生产;当继承其他部门不同厂商的 GPIB 控制器,或为节省成本更换测试设备接口时,使用 VISA 的现有测试程序无需更改。
-
缺点:由于其通用性,针对特定的 GPIB 设备通讯时,在效率上可能不如专门的 GPIB Write Function。对于简单的 GPIB 设备操作,使用 VISA Write Function 可能会使代码显得复杂。并且,VISA 设置超时是针对整个会话,不像 GPIB 可对每次写入单独设置超时。
-
适用场合:当系统中存在多种不同接口类型的仪器,需要统一管理和通讯时,VISA Write Function 非常适用。例如在自动化测试系统中,既有 GPIB 接口的示波器,又有串口的温度传感器,使用 VISA Write Function 可方便地实现对不同仪器的控制。
(二)GPIB Write Function
-
特点:专为 GPIB 设备设计,对 GPIB 总线协议的支持更加直接和深入,能够高效地处理 GPIB 设备的读写操作。可以对每次写入单独设置超时时间。
-
优点:针对 GPIB 设备的操作简单直接,代码编写相对容易。在与 GPIB 设备通讯时,效率更高,能更快地完成数据写入操作。
-
缺点:仅适用于 GPIB 接口的设备,不具备通用性。如果项目中需要连接多种不同接口的设备,使用 GPIB Write Function 会导致代码复杂,难以统一管理。在连接新设备时,如果旧的 GPIB 设备连接到新 PC,可能面临 GPIB 卡不兼容新电脑主板接口,且旧 GPIB 卡在新系统中的驱动可能无法使用等问题。
-
适用场合:在仅使用 GPIB 设备的系统中,或者对 GPIB 设备通讯效率要求极高的场合,GPIB Write Function 是更好的选择。比如在一个只使用 GPIB 接口的频谱分析仪进行信号分析的项目中,使用 GPIB Write Function 可高效地控制仪器。
三、实例对比
假设要通过 LabVIEW 向一台 GPIB 接口的数字万用表发送测量指令并读取测量结果。
-
使用 VISA Write Function:首先要创建 VISA 资源名称,配置好 GPIB 设备的地址等参数。在发送测量指令时,需按照 VISA 的指令格式进行编写,代码可能如下:
VISA资源名称 = "GPIB0::1::INSTR";VISA Open (VISA资源名称, VISA会话);VISA Write (VISA会话, "MEAS:VOLT:DC?", 字节数);VISA Read (VISA会话, 读取缓冲区, 读取字节数);VISA Close (VISA会话);节数);VISA Read (VISA会话, 读取缓冲区, 读取字节数);VISA Close (VISA会话);
-
使用 GPIB Write Function:直接使用 GPIB Write Function 函数,代码相对简洁:
GPIB地址 = 1;GPIB Write (GPIB地址, "MEAS:VOLT:DC?");GPIB Read (GPIB地址, 读取缓冲区);
从上述实例可以看出,使用 GPIB Write Function 代码更简洁,但如果系统中还有其他类型的设备,使用 VISA Write Function 则更具优势。
VISA Write Function 和 GPIB Write Function 在与 GPIB 设备通讯时各有优劣,开发者应根据项目的具体需求,选择合适的函数来实现高效的仪器通讯。