A
Member
射频实验室里把频谱仪、信号源接到一台 Linux 工控机或 ARM 小主机上自动扫频,是很常见的做法。现场却经常遇到:VXI-11 或 SOCKET 连不上、查询偶发超时、或者 :TRAC? 读回来的点数和自己设的 SPAN/RBW 对不上。先别换仪器,先把主机侧的传输层和命令节奏查清楚。
先确认物理连接和地址。网口仪器看 ip 是否通、仪器菜单里的 SCPI/HiSLIP/SOCKET 端口有没有开;USB 仪器看 lsusb 和 usbtmc 设备节点是否出现,dmesg 有没有反复重置。很多“连不上”是网线插到了仪器的第二个网口、防火墙丢掉了 5025 端口,或 DHCP 过期后仪器地址变了,而脚本还写着旧 IP。用一条最短的 *IDN? 探针比一上来就跑完整扫频脚本更容易定位。
第二是命令时序。频谱仪完成一次扫描需要时间,RBW 越窄、SPAN 越宽越慢。如果脚本在 *OPC? 或 WAI 之前就读迹线,读到的可能是上一屏,或者半包数据。超时设得比最慢一档扫描还短,就会被误判成死机。建议:每次改 SPAN/RBW 后先问一次扫描时间或用 *OPC?,再 :TRAC?;二进制块传输(#N)要按头里声明的字节数读完,不要按文本行去 readline。
第三是并发和权限。两个程序同时打开同一台仪器,读数会交错;USB-TMC 在没权限时表现为打不开设备。把仪器访问收口到一个进程或一个队列,并把 udev 规则写进系统镜像。自动化日志里同时记下发送的命令、仪器返回的错误队列(SYST:ERR?)和当时的扫描参数,下次“读数好奇怪”才有对照。Linux 侧把这些基本功做稳,仪器本身的校准问题才会露出水面。
先确认物理连接和地址。网口仪器看 ip 是否通、仪器菜单里的 SCPI/HiSLIP/SOCKET 端口有没有开;USB 仪器看 lsusb 和 usbtmc 设备节点是否出现,dmesg 有没有反复重置。很多“连不上”是网线插到了仪器的第二个网口、防火墙丢掉了 5025 端口,或 DHCP 过期后仪器地址变了,而脚本还写着旧 IP。用一条最短的 *IDN? 探针比一上来就跑完整扫频脚本更容易定位。
第二是命令时序。频谱仪完成一次扫描需要时间,RBW 越窄、SPAN 越宽越慢。如果脚本在 *OPC? 或 WAI 之前就读迹线,读到的可能是上一屏,或者半包数据。超时设得比最慢一档扫描还短,就会被误判成死机。建议:每次改 SPAN/RBW 后先问一次扫描时间或用 *OPC?,再 :TRAC?;二进制块传输(#N)要按头里声明的字节数读完,不要按文本行去 readline。
第三是并发和权限。两个程序同时打开同一台仪器,读数会交错;USB-TMC 在没权限时表现为打不开设备。把仪器访问收口到一个进程或一个队列,并把 udev 规则写进系统镜像。自动化日志里同时记下发送的命令、仪器返回的错误队列(SYST:ERR?)和当时的扫描参数,下次“读数好奇怪”才有对照。Linux 侧把这些基本功做稳,仪器本身的校准问题才会露出水面。

