简介:面向5G基站与终端测试工程师的UXM 5GNR操作手册,源于Keysight官方快速入门指南,重点解决UXM仪表初始化、参数配置及5G NSA/SA连接建立等实操问题。压缩包内含1个PDF文件,共15.98MB,文档结构完整,按仪表初始化、模式切换、Preset设置、LTE/NR参数配置、NSA/SA连接、SA UL MIMO及SRS Antenna Switching等模块递进展开,适合不同熟练度的射频测试人员查阅。已有1309人学习下载,说明该资料在5GNR测试场景中具有较高的参考价值。除基本操作外,还覆盖信道功率、占用带宽、ACLR、SEM等常见射频指标的测试方法,可直接对照步骤完成从仪表上电到5G连接建立、再到指标验证的完整流程。
1. 为什么 5GNR 测试绕不开 UXM:从一台“信号黑匣子”说起
做过 5G 终端射频或者协议测试的人,对 Keysight UXM 应该都不陌生。5GNR 的测试和 4G 时代有本质差别,带宽从 20MHz 跳到 100MHz 甚至 400MHz,调制阶数到了 256QAM,还要处理 FR1/FR2 两个频段、NSA/SA 两种组网,加上波束管理和 SRS 天线切换这些新特性。如果只用频谱仪加信号源去拼凑一套测试环境,光是同步信号和上下行配比就能把人折腾到怀疑人生。UXM 这个平台把信号发生、信号分析、信道仿真和多通道处理集成到一台机器里,专门为 5GNR 的一致性验证和产线测试设计,这也是它在这类项目里几乎是绕不开的选型。
这篇笔记适合谁?如果你正在搭 5GNR 终端的射频一致性测试环境,或者刚接手一台 UXM 准备把非信令测试跑起来,那这篇内容可以直接照着操作。我会从最基础的仪器初始化开始,一直讲到 SCPI 脚本控制、日志抓取和常见坑的排查。这篇不是说明书,而是按“怎么把这个仪器用好”的逻辑组织的实战记录,尤其是那些手册里写得很含蓄、实际做起来却不那么回事的地方。
2. 把 UXM 从包装箱变成可用的 5GNR 测试平台:启动、自检与连接
2.1 上电后的等待与自检,为什么急不得
UXM 上电后,前面板的电源键灯会亮,但这时系统还没有准备好。整个平台本质上是 PXI 机箱和嵌入式控制器的组合,开机后要经历一段完整的自检过程,包括控制器系统的引导、各个板卡的上电时序、时钟同步模块的锁定。如果是第一次使用或者从运输状态恢复,这个过程尤其重要,心急的话很可能会误判仪器状态。
我自己在这个环节翻过一次车。有一次实验室把 UXM 搬了位置,重新上电后前面板的屏幕一直黑着,下意识以为是硬件坏了,差点报修。后来发现是装机的工程机版本固件在冷启动时会等待网络挂载,等了大概三分钟才进入系统。这之后我养成一个习惯:给 UXM 上电后掐表等五分钟,同时通过后面板的网口用 ping 命令探测仪器预先配置的 IP 地址,如果 ping 通了再打开面板软件去操作。
主机的默认 IP 地址一般会贴在仪器后面板的贴纸上,常见的是 192.168.0.10 这类网段,但这不代表你永远要用这个地址去做测试。实测环境里,最好把仪器单独划分到一个管理网段,配置固定 IP,避免 DHCP 分配导致后面远程脚本找不着设备。用网线直连 PC 或经过交换机都可以,关键是确保 MTU 不要乱改,1500 的默认值在测试脚本里是最稳的组合。
2.2 连接到 PC 并恢复或创建测试配置
操作 UXM 的方式不是直接戳前面板的触屏去调参数——那只是辅助。真正的操作是在 PC 端通过它的图形化操作界面完成的。系统起来以后,PC 端的软件会自动扫描局域网里的仪器,输入对应的 IP 地址就能连上。
如果是新到的设备,需要先确认软件和板卡的固件版本匹配。常见的做法是在软件界面里检查“系统信息”页面,看当前安装的测量应用是不是已经包含了 5GNR 的测试选项。如果是旧设备更新过固件,还要注意一个问题:固件升级之后,之前保存的配置文件不一定能直接加载,因为配置文件的格式和版本往往跟着固件走,版本差太远会有兼容问题。
连接成功后的第一步不是急着配置信号,而是先确认仪器的多个射频端口状态。5GNR 测试里会同时用到多个射频通道,例如下行信号从射频1输出,上行信号的采集走射频2。UXM 的前面板射频端口是需要手动启用或关闭的,默认状态下端口可能处于待命模式,这时信号并不会有实际输出,必须在连接界面里把对应的端口设为运行状态。
# 一个简单的连通性检查脚本,用于确认 PC 与 UXM 的远程连接 ping 192.168.0.10 -c 5这个命令的目的是初步判断仪器是否已经完成启动并加入网络。如果 ping 不通,就不要继续尝试后面的软件操作,先检查网线连接,或者把仪器断电重启一次。网上很多人说 ping 不通时要用串口去查,但 UXM 的串口一般不开放,这么做意义不大。
2.3 检查是德科技 5GNR 测量应用和许可文件
连接成功以后,还要做一个容易被忽略的检查:确认 5GNR 测量应用的授权许可是否有效。这个行业里有一个很现实的问题,软件功能位在界面上是看得到的,但底层需要对应的 License 文件才能跑通。尤其是射频一致性测试里面用到的信令模式,如果授权没覆盖,软件会在测量开始时提示操作被禁止。
在操作界面里依次打开测量应用列表,找到 5GNR,查看它的状态是不是“已授权”。许可文件的加载位置在软件安装目录的 license 文件夹里,一般情况下不用手动去碰,但如果你用的是一个旧平台迁移过来的授权文件,要注意网卡绑定信息是否一致。
这个环节有一个检查技巧:不要只看软件界面里的许可列表,还要触发一次空载测量,看看仪器在真实测量状态下会不会报错。有些许可在列表里显示正常,真正运行时才会暴露问题。触发空载测量的方法是把射频输出接到一个假负载或者衰减器上,按下测量启动键,如果软件能正常进入采集状态,说明授权和应用启动链路都没问题。
2.4 校准文件的管理,时域测量之前必须确认的一步
很多做研发测试的人习惯拿到仪器就调参数、开测,却漏了校准文件这一步。UXM 不是频谱仪那种简单的单通道设备,它里面有多个板卡、多个端口之间的相位和幅度关系。这决定了它在做 5GNR 的调制域测量、EVM 测量以及双通道测试时,必须有有效的校准文件来保证测量基准一致。
仪器出厂时自带一份出厂校准数据,这份数据存储在板卡的存储区里。但如果仪器送过修、换过板卡,或者你在某些特殊频段分配上发现测量结果异常(比如绝对功率偏了 0.5dB 以上),就要留意校准文件是否需要更新。
在界面的仪器校准页面里能看到每个射频端口的校准日期和状态。我的习惯是每次季度性维护后做一次快速校准校验,方法很简单,用已知功率的信号源接在射频端口上,设置一个固定频率和电平方波信号,对比仪器读数和信号源设置的差值。
3. 在 UXM 上配置一个可用的 5GNR 信号:从参数表到信号下发
3.1 为什么推荐从非信令模式开始:把变量拆分掉
在 5GNR 测试里,动手配置信号之前要先选模式。UXM 上通常提供两种路径:信令模式(Signaling)和非信令模式(Non-Signaling)。信令模式适合做协议层的交互验证,终端可以和仪表建立真实的 RRC 连接,但配置项多、变量也多,一旦出错很难定位是仪表问题还是终端问题。
我更建议在最初接触这台仪器时,先切到非信令模式,也就是把 UXM 当作一台“发射机+接收机”来用:仪表自己产生 5GNR 下行信号、送给终端;终端发射上行信号、仪表的分析通道去解调。这个模式下没有协议交互的压力,可以专心测量射频层面的性能参数,比如发射功率、EVM、频率误差、ACLR 这些。
很多刚上手的人会忽略一个关键操作:非信令模式下,下行射频端口默认是关闭的,必须手动打开,否则终端搜索不到小区。我在这里踩过一次:配置好了整个 NR 信号参数,频谱仪也能看到一个完美的信号包络,但 DUT 就是搜不到,后来发现是端口 Power State 设置为关,信号只在内部空转,没有真正辐射出去。
3.2 从零开始配一个 FR1 下行信号的最小参数表
非信令模式下,UXM 可以配置为 5GNR 的基站仿真器,发射下行信号。在软件的 NR Carrier 配置页面里,需要设置的关键参数包括:频点(通过 ARFCN 指定,比如 n78 频段的 630000)、子载波间隔(FR1 通常用 30kHz,FR2 用 120kHz)、信道带宽(n78 下最常用 100MHz)、调制方式(上下行分别设置,这里主要体现在 MCS 索引上)。
以一套典型的 n78 100MHz 带宽、30kHz 子载波间隔配置为例,参数表如下:
| 参数项 | 设置值 | 说明 |
|---|---|---|
| 频段 | n78 | 3.3GHz – 3.8GHz,国内主用频段 |
| ARFCN | 630000 | 对应 3.5GHz 中心频点 |
| 信道带宽 | 100 MHz | 决定 RB 总数的大小 |
| 子载波间隔 | 30 kHz | 对应 273 个 RB 的满配 |
| 调制方式 | 64QAM / 256QAM | 下行用 256QAM 测极限 EVM |
| SSB 周期 | 20 ms | 终端小区搜索的必要参数 |
| SSB 频域位置 | 配置在同步栅格上 | NR-ARFCN 必须落在 Sync Raster |
在界面上把这些参数填好后,需要检查“功率设置”页面。这里要设定下行信号的总发射功率,一般默认是 -30dBm 到 -20dBm 之间。为了防止终端接收机饱和,接终端前我会先给输出端接一个 30dB 的衰减器,把期望功率和实际端口输出功率之间的对应关系摸清楚。
3.3 配置下行信号时常见的错误信号:SSB 频点位置
5GNR 和 LTE 一个很大的区别在于,终端在做小区搜索时是根据 SSB(同步信号块)的位置来确定小区的。在配置 5GNR 信号时,SSB 在频域上的位置是由参数ssbFrequency决定的,而且它必须落在协议规定的同步栅格上,不是随便放在信道带宽内的任何位置都可以。
如果 SSB 位置配错了,终端在扫频的时候在整个带宽里找不到一个同步信号,表现就是终端显示“无服务”。这个时候去查仪表侧的频谱,能看到宽带的信号包络,但看不到明显的梳状谱,那就要检查是不是 SSB 没有配置在正确的频点位置。
处理方法是把ssbFrequency配置为与absoluteFrequencySSB完全一致的 ARFCN 值,同时确保这个数值对应的频点落在同步栅格表里。在 3.5GHz 频段,常见的同步栅格点是 630000 及其周边,间隔约 15kHz。这里别直接用小数去填 MHz 值,尽量按协议规定的 GSCN(全局同步信道号)去换算,避免四舍五入带来的偏差。
3.4 用 SCPI 命令把参数固化下来,方便复现
UXM 的图形化界面上配置参数很方便,但做回归测试时不能每次都用鼠标点。理想的方式是把参数通过 SCPI 命令写入仪器,保存为脚本,这样可以在不同仪器之间迁移,也能保证每次测试的配置完全一致。
一个最精简的下行信号配置 SCPI 序列大概是这样的:
import pyvisa rm = pyvisa.ResourceManager() uxm = rm.open_resource('TCPIP0::192.168.0.10::inst0::INSTR') uxm.timeout = 10000 # 毫秒,防止长指令超时 # 重置仪器到已知状态 uxm.write('*RST') # 选择 5GNR 测量应用(具体指令名称取决于固件版本) uxm.write('CONF:NR5G:MEAS:DL') # 配置频点:n78, 100MHz 带宽, 30kHz 子载波间隔 uxm.write('CONF:NR5G:CARR:ARFCN 630000') uxm.write('CONF:NR5G:CARR:BAND 78') uxm.write('CONF:NR5G:CARR:BW 100MHz') uxm.write('CONF:NR5G:CARR:SCS 30kHz') # 配置 SSB 频域位置(必须在同步栅格上) uxm.write('CONF:NR5G:SSB:FREQ 630000') # 打开射频输出端口 uxm.write('OUTP:STAT ON') # 查询当前配置 cfg = uxm.query('CONF:NR5G:CARR:BW?') print(f'当前配置带宽: {cfg}')这段脚本里做了几件关键的事情:先复位仪器让状态干净,再选择 5GNR 下行测量应用,然后逐项写入载波参数。参数写入顺序是有讲究的,一般先设频段和 ARFCN、再设带宽和子载波间隔,最后才是 SSB 位置。如果先配 SSB 再改载波,某些固件版本会提示 SSB 越界,需要重新设置一次 SSB 才能生效。
OUTP:STAT ON这个命令对应的是前面讲的射频端口开启,很多人在脚本里会漏掉这一行。没有这行命令,仪器内部虽然在产生信号,但端口处于关闭状态。
4. 把 DUT 接入 UXM 并完成双通道校准:下行发射与上行接收的闭环
4.1 双通道测试的物理接线:射频线与衰减器之间怎么匹配
5GNR 的射频测试和 4G 不一样,绝大多数场景下需要同时建立下行和上行通道。这意味着至少要有两条射频通路同时工作:一条从仪器的下行射频端口连接到终端的 RX 端,另一条从终端的 TX 端连接到仪器的上行采集端口。
做传导测试时,终端的两个射频口是分离的(比如手机主板上的分集天线和主天线),可以做一条线缆直连的测试环境。但如果你测试的对象是一台完整手机而不是开发板,终端内部往往只有一个天线口,这时就需要用合路器或耦合器做信号分离,同时支持下行信号接收和上行信号发射/测量。
在接线的过程中,我一直坚持一条原则:在初始阶段不要尝试同时接两条通路。先只接下行通路,确认终端能解调出仪表发出的下行信号,再接入上行通路。这样可以避免一旦测试读不到数据时,无从判断是下行信号没送达终端,还是上行信号没回传到仪表。
4.2 为什么要做路径损耗校准,以及实际操作步骤
在非信令模式下做射频测量时,仪器输出的功率是基于仪器端口定义的功率,而不是 DUT 天线处的功率。如果终端是直接接在仪器端口上(中间只有线缆和连接器),那这段路径上的损耗主要来自线缆本身,高频下 1dB 到 2dB 的损耗非常常见。如果不做校准,测得的终端灵敏度、发射功率全部都会带着这个线损误差。
有一种常见做法是“手动补偿”,也就是在仪表界面里把线缆损耗按估算值填进偏移量,这在高频段做起来不够稳。线缆在每个频段的损耗不同,更靠谱的方法是做一个通过式校准:用一台校准好的功率计或信号分析仪,接在 UXM 射频端口和 DUT 之间,先让仪表发射一个已知功率的连续波信号,读取实际到达末端的功率,两者之差就是路径损耗。
# 校准步骤:发送 -20dBm 的 CW 信号,并读取末端实测功率 uxm.write('CONF:NR5G:TEST:CONT:CW -20dBm, 3.5GHz') --- # 获取信号分析仪读到的实际功率(这里假设是 -22.3dBm) measured_power = -22.3 path_loss = (-20.0) - measured_power print(f'路径损耗 = {path_loss:.1f} dB')这段逻辑说明一下:仪表设置为输出一个 -20dBm 的连续波信号,因为线缆衰减,到末端变成 -22.3dBm,差值为 2.3dB。之后在仪表里把这个值填进对应的校准通道偏移量,所有后续测量就会以补偿后的功率为基准。
这里有一个关键点容易被忽略:路径损耗校准要区分频段来做。如果你测试的是 n78 和 n41 两个频段,最好在每个频段上分别做一次校准,不要跨频段沿用同一个补偿值。
4.3 上行信号的采集配置:带宽之外还需要注意接收端增益
上行测量的本质是把终端发射的射频信号采集进来,再做解调和分析。在非信令模式下,可以手动触发上行调度请求信号,或者直接用仪表的信号分析通道对终端发射信号做捕获。
配置上行分析时,需要设置接收端的中心频率(与终端发射频点一致)和分析带宽。很多人在配这块时有一个误区:分析带宽必须大于等于终端发射信号的实际占用带宽,否则频谱会被截断,EVM 计算出现严重偏差。100MHz 带宽的下行对应终端发射可能只用了 20MHz 的 RB 调度,但分析带宽还是建议设成 100MHz,因为还有频域模板和带外发射的测量需求。
接收端有一个自动增益控制选项,在仪表里一般默认是自动模式。这里要特别留意:如果测试场景里存在强干扰,自动增益会把接收链路压缩得过低,导致解调信号非常干净但幅度很小,信噪比反而不达标。必要时手动把增益固定在一个合适的值上,确保信号振幅范围内不被削波也不太低。
4.4 通过仪表自带的信道表验证下行解调是否成功
当终端成功启动并完成小区搜索后,下一步就是让它接入仪表发出的下行信号,然后查看仪表侧的 UE 状态信息。在信令模式下,仪表会显示当前小区是否被终端成功驻留,同时会显示解调到的上行信号的基础参数。
这里有一个有用的验证小技巧:不需要一开始就做完整的吞吐量测试,可以先用一个最短的上行信号做验证。在仪表里设置终端发射一个单 RB 的上行 PRACH 信号,如果仪表能解调到这个信号的频域位置和功率,说明上下行链路都已经打通。相反,如果 PRACH 一直搜不到,问题多半出在射频连接或时序偏移上。
5. 必踩的五个 5GNR 测试坑,以及它们的排查路径
5.1 坑一:终端始终搜不到小区,频谱仪看到广谱信号但无同步
现象:终端显示无服务或脱网,仪表侧用频谱分析功能能看到明显的扫描带宽内的噪声基底抬升,但看不到 SSB 的梳状谱特征。
原因:这个问题最常出在 SSB 的频域位置和同步栅格的匹配上。尤其是手动配置频点时,使用了非同步栅格上的任意频点,导致终端在整个频段里扫不到同步信号。还有一种可能是射频端口处于“内部信号”状态而非“输出”状态,信号没有从端口辐射出来。
解决:先检查射频端口的输出状态,确认OUTP:STAT ON;再核对ssbFrequency配置值和同步栅格表,确保其为合法 GSCN 对应的点;最后用频谱分析功能查看端口输出的实际频谱,确认 SSB 信号是否在频谱上可见。
5.2 坑二:测出的发射功率总比终端设置值低 2-3dB
现象:终端设置发射功率为 23dBm,但在仪表上读到的功率只有 20-21dBm。
原因:多数情况是上行接收链路的路径损耗没有补偿到位。这里不单指线缆损耗,还有仪表接收端口内部的前置放大器的增益状态。某些频段下,仪表会自动插入一个衰减器来保护接收机,如果你设置的期望功率范围较高,衰减器可能没有自动切换。
解决:在上行测量的配置页面里,手动把输入衰减设置为一个固定值,并用一个已知功率的外部信号源做通过验证。记录在不同频段下仪表读数和信号源设置值的差,做成一个偏移表,在测量结果里修正。注意别把这个偏移直接和线缆损耗混在一个补偿值里,分开设置便于定位问题。
5.3 坑三:EVM 测量结果飘忽不定,同一配置下数值反复跳变
现象:同一组配置,连续测量三次 EVM,结果一个比一个差,且没有规律。
原因:大多数情况下是触发时机不稳定。非信令模式下,仪表采集上行信号依赖“功率触发”或“外部触发”,如果终端发射的信号不是突发性的、而是持续发射的,功率触发就会反复误触发。另一个常见原因是终端发射和仪表采集在时间上没有对齐,采集窗口截取到了信号的头部或尾部不完整部分。
解决:把触发模式从功率触发改为外部触发,或者使用仪表的“同步触发”模式;在仪表里设置一个合理的时隙偏移(Timing Offset),确保解调窗口落在信号的中间部位;另外,EVM 测试前一定要确认终端发射的是一段重复的、周期性发射的信号,不要把单次突发信号用来测 EVM。
5.4 坑四:SCPI 脚本远程控制时,指令写入很慢或者超时
现象:脚本执行到某个写指令时卡住,或者返回错误代码。
原因:不是指令本身的格式错误,而是前面有一条指令把仪器置于了“正在处理”状态,比如载波参数修改之后,仪器内部需要重新计算通道频点并重新加载校准文件,这个过程可能长达几百毫秒。如果脚本在写入后立即查询,很容易触发超时。
解决:在两条重要的 SCPI 指令之间加入*OPC?(Operation Complete Query)查询,强制等待前一条指令完成后才继续。同时把仪器的超时时间从默认的 2000 毫秒调到 10000 毫秒以上,避免长指令执行时间超过客户端等待阈值。这个问题的根因在于 SCPI 解析和硬件重新配置是异步的。
5.5 坑五:多台仪表做 MIMO 测试时,端口相位基准不一致
现象:使用两台 UXM 做下行双通道(比如 2x2 MIMO)测试时,终端能驻留小区但测量的吞吐量始终上不去。
原因:两台仪表之间的时间和相位没有校准。5GNR 的 MIMO 测试要求多通道之间的时间误差小于几十纳秒,相位误差小于几度。如果只是把两台仪器用网线同步了时基,但没有做射频通路级别的相位校准,就会导致终端合并两条下行信号时相互抵消。
解决:使用仪器的 10MHz 参考时钟输入和 PPS 触发线把多台仪器硬同步起来;在测试软件里执行“通道相位校准”流程,用仪表自带的环路校准功能做一次射频通路的相位补偿。这里建议在每次更换线缆后重新校准,不要依赖一次性校准结果。
6. 把 UXM 变成你自己的自动测试工具:SCPI 脚本化、结果记录与一键复测
6.1 用 SCPI 完成整条测试序列的自动化,而不只是单条指令
很多人对远程控制的认知停留在“按时发送一条指令、读取一个结果”的阶段,但 UXM 这类仪表真正能提效的地方,是把一整条测试序列通过脚本串起来。比如在产线或者研发回归环境里,通常需要按顺序执行:发射功率测试、频率误差测试、EVM 测试、占用带宽测试,然后生成一份报告。
SCPI 的命令层次是有规则的,每类测量的启动指令、参数配置指令和结果读取指令之间有严格的依赖顺序。经验是先把图形界面上手动点过一遍的流程记录下来,然后用 SCPI 逐个替换。在仪器的远程命令记录器功能里可以查看最近用界面操作触发了哪些底层指令,这个功能非常有价值。
import pyvisa from time import sleep rm = pyvisa.ResourceManager() uxm = rm.open_resource('TCPIP0::192.168.0.10::inst0::INSTR') uxm.timeout = 15000 # 运行前复位,清掉上一次测试状态 uxm.write('*RST') sleep(1) # 步骤 1:配置下行信号 uxm.write('CONF:NR5G:CARR:BAND 78') uxm.write('CONF:NR5G:CARR:ARFCN 630000') uxm.write('CONF:NR5G:CARR:BW 100MHz') uxm.write('CONF:NR5G:CARR:SCS 30kHz') uxm.write('OUTP:STAT ON') # 步骤 2:启动上行测量并等待完成 uxm.write('INIT:NR5G:MEAS:UL') uxm.write('*OPC?') # 等待测量初始化完成 # 步骤 3:读取多个测量结果 err_freq = uxm.query('FETC:NR5G:MEAS:UL:FERR?') evm_val = uxm.query('FETC:NR5G:MEAS:UL:EVM?') pwr_val = uxm.query('FETC:NR5G:MEAS:UL:POW?') print(f'频率误差: {err_freq} Hz') print(f'EVM: {evm_val} %') print(f'功率: {pwr_val} dBm')这个脚本里,*OPC?是最关键的指令,它让脚本等待前面所有待处理的操作全部完成后才返回,避免了后续查询读到的是旧数据。很多远程控制脚本不稳定,问题就出在少了这条命令。
6.2 一个实用的结果记录模板,以及为什么不能只存数值
测试完成以后,只把数值保存下来是不够的。在研发定位和产线追溯这两个场景里,你都需要把测试配置和结果存到一起。比如当某台终端测出 EVM 是 12%,想知道是不是信号功率或者带宽配置导致的,只有数值没有配置参数,就只能重新搭环境复现,非常浪费时间。
常见的做法是在脚本里把关键配置项也一并抓下来,写进 CSV 文件。这样每天批量测试完,就能用 Excel 或数据透视表直接分析“不同功率点下的 EVM 趋势”。如果进一步做自动化测试平台,还可以把这些数据写入数据库,用图表工具直接展示链路性能波动趋势。
6.3 校验自动化脚本的一个小习惯:对照日志文件排查
脚本写多了就一定会遇到“脚本跑了几百次,某次失败了”的情况。这时候不要急着去看脚本逻辑,先去仪器的日志文件里看那一次运行的前后事件记录。UXM 会记录每次射频通道状态切换、测量启动和停止、错误事件发生的时间点,这个日志是成本最低的问题定位手段。
我自己实践下来最有效的方法是,在脚本里给每个步骤加一条输出语句,把执行到哪一步写到 log 文件里。这样一旦失败,直接看 log 文件就可以确定断了在哪个环节,根本不用开着调试器一步步断点。这个习惯帮我省下了大量排查时间,也是我在 5GNR 测试自动化上最想分享的一个做法。
6.4 进阶:用脚本做批量频段扫描,快速验证终端在各频段的接收性能
如果你已经跑通了单频段的自动化测试,可以再进一步:写一个循环脚本,把 n78、n79、n41、n1 这些常用频段全部扫一遍。每个频段只需要更新 ARFCN 和带宽参数,然后重复之前的测量流程。这个批量功能在验证终端的全球频段支持能力时特别有用,一次跑下来就能拿到全频段的性能表。
# 伪代码思路:遍历频段列表并执行测量 for band, arfcn, bw in [('n78', 630000, '100MHz'), ('n79', 795000, '100MHz'), ('n41', 520000, '100MHz')]: uxm.write(f'CONF:NR5G:CARR:BAND {band}') uxm.write(f'CONF:NR5G:CARR:ARFCN {arfcn}') uxm.write(f'CONF:NR5G:CARR:BW {bw}') # 触发测量并读取结果 ...这段思路的要点在于:每个频段切换后,SSB 频点也要同步修改,且修改后要确认终端重新完成小区搜索和驻留。这个动作如果省略,终端就会停留在旧频段,仪表却已经在新频段发射信号,测出来的结果就会乱七八糟。这也是批量测试里最容易翻车的位置。
做 5GNR 测试这几年,我最大的心得是:UXM 这类仪器本质上不是“按几个按钮就出结果”的工具,它会严格按你配置的参数去构造信号和分析信号,所有不确定性都来自操作者有没有把每个环节之间的约束关系搞清楚。希望这份操作层面的笔记能帮你少走一些我走过的弯路,尤其是那些手册上一带而过、实际做起来却很耗时间的地方。
本文还有配套的精品资源,点击获取