**摘要:**本文介绍了如何使用 C++ 控制 R&S CMW100 射频综合测试仪进行产测。核心内容包括:1)控制 CMW100 的两条产测路径(发射测试 TX 和接收测试 RX);2)控制流程的三个步骤(连接、测量、关闭)及对应的 VISA+SCPI 接口;3)实现时的注意事项(制式匹配和功率设置)。文章旨在帮助读者理解 C++ 控制仪表的实际应用场景和基本方法。
R&S CMW100 是射频综合测试仪。产测里用 C++ 连上它,不是为了"发命令好玩",而是让仪表当眼睛和信号源:看芯片发得好不好,再往芯片灌已知信号看收得好不好。
控制 CMW100 在做什么
两条产测路径:
- 测发射(TX)
芯片按设定发 Wi‑Fi;CMW100 当接收分析仪:量功率、EVM、频偏、频谱是否干净。
对应代码:ConfigureTx*→ 芯片发波 →RunTxMeasureAndFetch。 - 测接收(RX)
CMW100 当信号源,按波形文件(ARB)往外打已知信号;芯片收包,算误包率(PER)等。
对应代码:ConfigureRx→SetRxState(true)→ 芯片侧统计。
一句话:C++ 控仪表 = 配好端口/频率/功率 → 启动测量或发波 → 把读数取回来。
怎么控制:连接 → 测量 → 关闭
通信走 VISA + SCPI:C++ 加载 visa32.dll,用文本指令配置仪表、启动测量、读回结果。可以概括成三步。
① 连接
用 VISA 资源地址打开会话(如 TCPIP0::127.0.0.1::inst0::INSTR),设好超时;可选发 *IDN? 确认在线,再 *RST / *CLS 复位。
对应接口:Open → QueryIdn / Preset。
② 测量
先配公共参数(RF 口、频段、带宽、统计次数等)和信道(中心频率、期望功率),让芯片开始发波;再 INIT 启动测量,轮询状态到就绪,用 FETCh 取功率、EVM、频偏等,最后写入结果结构体。
对应接口:ConfigureTxCommon → ConfigureTxChannel →(芯片发波)→ RunTxMeasureAndFetch。
若做接收测试,则改为配置 ARB 发波并打开输出:ConfigureRx → SetRxState(true)。
③ 关闭
测量结束可中止当前任务,关闭 VISA 会话并卸载 DLL,释放资源。
对应接口:Close(析构时也会自动调用)。
串起来就是:
Open(连接)- →
Preset - → 配置 + 启动测量 / 发波 + 读结果
- →
Close(关闭)
实现时注意两点
- 制式匹配:Wi‑Fi 有多代物理层(常说的 11b、11g/n、11ac、11ax)。测哪一代,芯片和仪表都要切到同一制式;CMW100 对不同制式的查询语句略有差别,代码里按制式分支即可。
- 功率设置:仪表「期望功率」不要低于实际输入,否则读数容易全部无效。
小结
用 C++ 控 CMW100,核心是完成产测两件事:
- 量 DUT 发射质量
- 向 DUT 注入标准信号测接收
控制方法很固定------连接会话、配置并测量(或发波)、关闭释放;VISA 管链路,SCPI 管动作。