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 Ω)、偏置电阻(防止空闲时电平漂移)、半双工方向控制(发送与接收分时切换)。若忽略方向切换延时,常出现“发得出去、收不回来”的现象。
二、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 不保证消息边界,因此需要按换行符或结束符解析响应。
七、选型依据与工程建议
把上述接口放到一张决策表里,选型逻辑就清晰了。短距离、单台、老设备优先 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 m | 9.6~115.2 kbps | 单台老仪器、天平 |
| RS-485 | 多点总线 | ≤1200 m | 9.6~115.2 kbps | 多台传感器、Modbus |
| GPIB | 星型/链型 | ≤20 m | 1~8 MB/s | 老式示波器、频谱仪 |
| USB-TMC | 星型(Hub) | ≤5 m/段 | 数十 MB/s | 现代台式仪器 |
| TCP/IP | 任意 | 跨网段 | 100 Mbps~1 Gbps | 分布式实验台 |
最后强调一个易混点:Modbus 与 SCPI 不是竞争关系,而是不同层面的协议。Modbus 面向寄存器,适合 PLC、传感器、电源等;SCPI 面向仪器功能,适合示波器、万用表、信号源。若一台设备同时支持两者,应按数据语义选择:读寄存器值用 Modbus,读测量结果用 SCPI。接口选对了,后续缓存、断线续传和边缘计算才有稳定的数据基础。