2. 实验仪器接口与协议基础

在实验仪器边缘采集工程中,接口与协议决定了“数据从哪里来、以什么节奏来、能传多远、能接几台、出错后怎么恢复”。很多采集不稳定问题并非程序写错,而是接口选型与协议层次不匹配。理解这一节,需要把物理接口、链路协议和应用层命令分开看:RS-232/485、GPIB、USB 属于物理与链路层,Modbus、SCPI 属于应用层语义,TCP/IP 则是承载层。选型时先问四个问题:距离多远、设备多少、速率多高、是否需要标准命令集。

一、串行接口:RS-232 与 RS-485

RS-232 是最传统的点对点串行接口,典型参数为 9600/115200 bps、8 数据位、无校验、1 停止位(常写作 9600-8-N-1)。它使用单端信号,逻辑电平约 ±3~±15 V,抗干扰弱,可靠距离通常十几米以内,只能连接一台设备。适合台式万用表、电子天平、老式电源等短距离单机采集。

RS-485 使用差分信号(A/B 两线),共模抑制能力强,支持多点总线,一条总线可挂 32 个标准负载(加中继可扩展),距离可达 1200 m(低速时)。它必须处理三个工程细节:终端电阻(长线两端各 120 Ω)、偏置电阻(防止空闲时电平漂移)、半双工方向控制(发送与接收分时切换)。若忽略方向切换延时,常出现“发得出去、收不回来”的现象。

典型 RS-485 采集参数示例(假设值,用于说明配置方法):波特率 19200,8-E-1,从站地址 1~8,轮询周期 500 ms,超时 200 ms,重试 2 次。若 8 台设备各返回 20 字节,则每轮数据量约 160 字节,19200 bps 下理论传输时间约 83 ms,轮询周期 500 ms 留有充足余量。

二、GPIB(IEEE-488)

GPIB 是早期仪器专用并行总线,8 位数据线加多条控制线,支持最多 15 台设备,线缆总长一般不超过 20 m,速率约 1~8 MB/s。它的优势是成熟稳定、支持“讲者/听者/控者”角色和 SRQ 服务请求,大量老式示波器、频谱仪仍在使用。缺点是线缆粗、接口卡贵、现代计算机原生不支持,通常需要 USB-GPIB 或 PCI-GPIB 转换器。选型时若设备只有 GPIB 口,转换器是唯一现实路径。

三、USB-TMC 与 USBTMC 类仪器

USB-TMC(USB Test and Measurement Class)把 SCPI 命令封装到 USB 批量传输中,是现代仪器最主流的接口。它即插即用、速率高(USB 2.0 可达数十 MB/s),支持多台设备通过 Hub 扩展。工程上需注意:端点缓冲区大小、每次读写的最大包长、以及“读响应前先发查询”的时序。若一次读取超过缓冲区,需循环读取直到收到结束标志。USB-TMC 通常配合 VISA 库使用,资源地址形如 USB0::0x0699::0x0363::C012345::INSTR。

四、Modbus:面向寄存器的轮询协议

Modbus 是工业现场最常用的应用层协议,分 Modbus RTU(串行)和 Modbus TCP(以太网)。它把数据组织为线圈、离散输入、输入寄存器、保持寄存器四类,通过功能码读写。采集时最典型的是功能码 03(读保持寄存器)和 04(读输入寄存器)。Modbus 是主从轮询结构,从站不会主动上报,因此采集周期由主站决定。常见坑包括:寄存器地址偏移(协议地址与文档地址差 1)、字节序(大端/小端)、以及 32 位浮点跨两个寄存器的拼接顺序。

五、SCPI:仪器命令的通用语言

SCPI(可编程仪器标准命令)建立在 IEEE-488.2 之上,用树状命令描述仪器功能,例如 MEASure:VOLTage:DC? 查询直流电压,CONFigure:VOLTage:DC 10 设置 10 V 量程。它不规定物理接口,可跑在 GPIB、USB-TMC、TCP/IP 之上。SCPI 的关键约定是:以问号结尾为查询、返回字符串需解析、命令大小写不敏感但推荐大写缩写。采集程序应统一封装“发送命令—读取响应—超时重试”三步,避免每条命令各写一套。

六、TCP/IP 与 LXI

现代仪器普遍支持 LAN 接口,遵循 LXI 标准,资源地址形如 TCPIP0::192.168.1.50::inst0::INSTR。TCP/IP 的优势是距离远、可跨网段、天然支持多主机,适合分布式实验台。工程上要关注:固定 IP 或 DHCP 保留、端口号(SCPI 常用 5025)、连接超时与断线重连、以及防火墙策略。与串行相比,TCP 不保证消息边界,因此需要按换行符或结束符解析响应。

实验仪器接口分层与选型对照 应用层语义 SCPI 树状命令 / 查询响应 Modbus 寄存器 / 功能码轮询 IEEE-488.2 公共命令 *IDN? / *RST / *OPC? 承载 / 链路层 TCP/IP · LXI 端口 5025 / 跨网段 USB-TMC 批量传输 / VISA 地址 GPIB (IEEE-488) 讲者/听者/控者 · SRQ 物理接口 RS-232 单端 · 点对点 · ≤15 m RS-485 差分 · 多点 · ≤1200 m USB / 以太网物理口 RJ45 / Type-B / Hub 选型判断路径 距离 > 100 m? 设备 > 1 台? 需标准命令集? 推荐接口组合 是→RS-485/TCP 是→485/GPIB/USB 是→SCPI 承载 短距单机:RS-232 / USB-TMC 多机远距:RS-485 + Modbus 分布式:TCP/IP + SCPI

七、选型依据与工程建议

把上述接口放到一张决策表里,选型逻辑就清晰了。短距离、单台、老设备优先 RS-232;多台、中长距离、工业现场优先 RS-485 + Modbus RTU;现代台式仪器优先 USB-TMC + SCPI;只有 GPIB 口的老仪器用转换器;分布式、跨房间、多主机场景用 TCP/IP + SCPI(LXI)。速率方面,USB-TMC 和 TCP 远高于串行,但采集周期往往受仪器内部积分时间限制,例如 6½ 位万用表在 1 PLC 下约 20 ms 一次,此时接口速率不是瓶颈。

接口拓扑典型距离典型速率适用场景
RS-232点对点≤15 m9.6~115.2 kbps单台老仪器、天平
RS-485多点总线≤1200 m9.6~115.2 kbps多台传感器、Modbus
GPIB星型/链型≤20 m1~8 MB/s老式示波器、频谱仪
USB-TMC星型(Hub)≤5 m/段数十 MB/s现代台式仪器
TCP/IP任意跨网段100 Mbps~1 Gbps分布式实验台
采集程序建议统一抽象为“传输层 + 协议层”两层:传输层负责打开/关闭、读写、超时重试;协议层负责 SCPI 命令拼接或 Modbus 帧构造。这样更换接口时只需替换传输层,命令解析逻辑可复用。
RS-485 总线若未加终端电阻或偏置电阻,短距离可能正常,长距离或高波特率下会随机丢包。排查时先用示波器看 A/B 差分波形,确认空闲电平稳定、无反射振铃,再检查方向切换延时是否足够。

最后强调一个易混点:Modbus 与 SCPI 不是竞争关系,而是不同层面的协议。Modbus 面向寄存器,适合 PLC、传感器、电源等;SCPI 面向仪器功能,适合示波器、万用表、信号源。若一台设备同时支持两者,应按数据语义选择:读寄存器值用 Modbus,读测量结果用 SCPI。接口选对了,后续缓存、断线续传和边缘计算才有稳定的数据基础。